Structured compensation capture

Turning free-text compensation notes into structured, validated data, and cutting average approval time by 23.7% for a recruiting org of thousands.

Meta's recruiter offer draft, with a candidate's profile and engagement history beside a calculator comparing standard, maximum and proposed compensation.

Case study

Any offer above the standard compensation range needs approval, and that approval ran on a free-text notes box: recruiters typed what they knew, analysts parsed it by hand, and offers bounced between them for days. I replaced the box with a structured, validated, dynamic capture flow, live to the entire recruiting org since July 2022.

23.7%Faster comp approvalsaverage approval time
51%More validated comp datavolume captured
12.2%Fewer approval requestsacross the org

Context

Every job offer at Meta falls into one of two buckets. Inside the standard compensation range, it can go out in a single business day. Above the range, it needs compensation approval with justification. Thousands of offers a year needed at least one approval, and a meaningful share needed two or more, stretching days into more than a week.

That delay is the most expensive kind of slow. By the offer stage Meta has already paid for the entire funnel: sourcing, screens, full loops, debriefs. And roughly a quarter of offers still ended in a decline. At this volume that is thousands of candidates a year walking away at the very end.

Every decline means running the funnel again, which is why the offer got heavy investment. Slow extensions track with lower acceptance rates and worse candidate sentiment. Meta bet on both ends of that in the same period: this project on how fast a well-supported offer could be built and approved, Immersive Offers on how the offer reached the candidate.

And it was about to scale: thousands of recruiters, millions of candidates, tens of thousands of offers, and a hiring target in the tens of thousands for 2022 alone.

I was the product designer on the Recruiting Products Offers team, which owns everything between hire decision and signed offer letter. This was our P0 for H1 2022.

The shape of it:

  • Core team: 1 product designer (me), 1 PM, 1 PMM, 1 researcher, 1 data scientist, 1 content designer, 6 engineers
  • Partners: the Compensation Analysis team, plus 30+ recruiter SMEs and the comp analyst SMEs
  • Three user types with competing needs, meeting inside one flow
Meta's Career Site and Candidate Profile
The candidate-facing surface: Meta's Career Site and Candidate Profile.
The recruiter-facing ATS, showing an offer draft
The recruiter-facing surface: the ATS where offers are drafted, approved, and extended. All candidate data shown is fictional.

The research

With our data scientist I mapped the offer stage end to end: hire decision to signed letter, across candidate, touchpoint, front stage, tooling, pains, and opportunities. The velocity data was stark. A standard offer went out in about a business day, one needing comp approval took days, and one needing multiple approvals took over a week.

Journey map of the offer stage, from hire decision to signed letter
The offer-stage map, with pains and opportunities at every phase. Cycle-time figures redacted.
Concept chart: offer velocity against acceptance rate
Every extra comp proposal round pushes extension velocity down, and acceptance rates fall with it.

The tension at the centre

Three user types collide here, and all three want the same thing. The candidate wants the job, the recruiter wants the accept, the analyst wants an offer that is defensible and lands.

They pull in opposite directions to get there. Candidates disclose as little as they can, because what they withhold is leverage. Recruiters are measured on speed, so they take what the conversation gives them and move. Analysts work from data, and cannot approve what they cannot verify. Each behaviour is rational alone. Together they produce a queue nobody intends.

Venn diagram of candidate, recruiter, and compensation analyst needs
The same goal, three routes to it. A signed offer lives at the intersection, and only at the intersection.

That is what made this a design problem rather than a form problem. A form serves one user. This one had to make a candidate comfortable disclosing, make a recruiter faster for doing it properly, and let an analyst trust the result without a follow-up. Ask the candidate for everything and the recruiter loses the room. Ask for nothing and the analyst sends it back. Every later decision was a judgement about where in that triangle to spend the effort.

Scenario A, a standard offer, next to scenario B, an above-band offer
Standard offers, about 40% of accepted offers: no approval, out in a business day. Above band, about 60%: evidence and approval required, 5 to 13 times slower.

Why so slow? Compensation is complex, recruiters were not comp experts, candidates withheld information, and compliance guidance was unclear. The tooling made it worse: missing fields, no validation, and at the heart of it one free-form notes box for everything a recruiter knew about a candidate’s current and competing compensation.

The old approval request form: a free-text notes box
The before: a free-text notes box and a checklist recruiters answered from memory. Approver names redacted.
The old compensation capture form, with unvalidated fields
Fields existed, nothing was validated. An empty input could mean 0%, did not disclose, or none given by company. Every ambiguity triggered a follow-up.

Two recruiters describing the same candidate would write two completely different paragraphs, which an analyst then had to parse by hand into the fields they needed.

Two free-text candidate descriptions beside the structured fields extracted from them
Two free-text descriptions of the same candidate, and the fields an analyst has to extract. Every gap becomes a follow-up.

When the data did not hold up, the proposal bounced. The analyst asked for more, the recruiter went back to the candidate, and the proposal rejoined the queue. A repeating rejection loop, with the candidate waiting at the end of it.

Diagram of the repeating rejection loop between candidate, recruiter, and comp partner
The repeating loop between candidate, recruiter, and comp partner. Every cycle adds days.

Solving the problem

I ran requirement gathering between the engineers, recruiters, and comp analysts, and aligned everyone on four goals: faster offer extension, fewer requests for more information, more consistent requests, and the approval analytics structured data would finally make possible. We took on a fifth: rebuild the surface on our internal design system.

FigJam board from requirement gathering, with story-mapped themes and epics
The requirement-gathering board: themes, epics, and capture dimensions, built with recruiters and comp analysts.
Pages from the discovery document
The discovery doc: problem statement, pain points, and solution options scored by risk and impact.

Recruiters are not comp experts, and candidates use different words for the same thing. So we wrote a shared vocabulary: a precise definition for every capture field, from equity types to forfeited cash, later embedded in the UI itself.

Table of structured compensation definitions
Every field, its input type, and its plain-language definition. One language for recruiters, candidates, and analysts.

Prototypes followed, and evolved through user feedback.

Composite of design iterations, from a dense capture table to a guided flow
From a dense spreadsheet-style capture table to a guided, dynamic flow.
Chart of validation survey results from recruiters
Validation sessions and a survey with recruiters. Most rated the new flow fast, clear, and easy to use. The detractor themes drove the next iteration.

Testing surfaced a real tension. Recruiters liked the level of detail, but flagged information overload and doubted a rigid form could hold the nuance of every candidate. The answer was a dynamic flow: ask only what is relevant, educate as you go, validate everything.

The solution

Every change had a rationale the whole team could point to.

One-click extension of a standard offer draft
1-click extension from a default standard offer draft. Less friction, faster extensions.
Selecting the custom offer path deliberately
Starting a custom offer takes an intentional selection, which separates the fast path from the slow one.
Competing compensation data enforced before an above-band proposal proceeds
Competing data must be submitted before an above-band proposal can proceed.
The structured, dynamic compensation capture flow
The centrepiece: a structured, dynamic capture flow. 51% more validated comp data.
Salary and bonus capture step, with validated inputs
Bonus captured as a target percent or a fixed value, with explicit not offered, did not disclose, and undisclosed states. An empty field can never be ambiguous again.
Equity capture step, broken into guided sub-steps
Equity, the biggest source of analyst follow-ups, in guided steps: RSUs against options, vesting in the next 12 months, forfeited value.
Grid of tailored capture paths by compensation data type
Tailored capture by data type, so a recruiter only sees the path that applies.
Compensation definitions and sub-labels embedded in the capture UI
Definitions and sub-labels in the UI itself, teaching recruiters at the source.
Competing data validated against the compensation proposal
Competing data validated against the proposal, so proposals align with the evidence submitted.
Structured compensation data displayed in the ATS offer draft
The after: structured data flowing into the offer draft.
Wireframe of the compensation analyst dashboard
Downstream, analysts consume clean, consistent requests, and data that can power approval analytics.

I also pitched a longer-term vision: structured comp data surfacing in the candidate experience.

Vision concept: the offer surfaced in Candidate Profile
Vision work: the offer surfaced in Candidate Profile, from notification through acceptance.

Pre-launch

  • Dogfooded with 30+ recruiters on real offers
  • Led design QA, flagging critical UX and UI issues
  • Completed the content design artefacts with our content designer
  • Saw through compliance review and approval
The internal dogfooding and feedback group
The dogfooding group: recruiters used the new flow with live candidates and reported issues in one place. Names redacted.
The capture flow running on a laptop during testing
The flow in situ during testing.

Impact

Launched in July 2022 to the entire recruiting org: thousands of recruiters, plus the comp analyst team. Every number is measured against the flow it replaced.

23.7%Faster comp approvalsaverage approval time, overall
51%More validated comp datavolume captured per offer
12.2%Fewer approval requeststotal requests submitted
9%Faster offer extensionhire decision to offer out

One metric did not move. Offers needing two or more approvals stayed slow, slightly slower by a single-digit percentage. Those are the genuinely hard negotiations, and they became the next phase of work.