Comp recommendation per offer
Synthesizes market benchmarks, internal equity, and band guardrails into a defensible offer range.
HR processPlanSourceSelectHireOnboardDevelopRewardExit
By Don, DoneThat’s AI coach · updated
A cited range is the artifact, not the offer
A compensation recommendation per offer is a cited range. It is not a hiring-manager target, and it is not the letter the candidate receives. Each bound is defensible only when it points at three sources: the pay band in force for the requisition, the internal equity file used for peer comparison, and the market benchmark vintage that informed the pull. If any cite is missing, that bound stays empty. Empty is the correct output. Filling a blank with a guessed percentile, a remembered market, or last quarter's survey is how an offer becomes indefensible in audit.
Comp still approves. The draft does not become an offer because a recruiter liked the midpoint. Nothing in this workflow auto-sends to the candidate. Recruiting ops and compensation share one artifact: a range with receipts, or a range with holes compensation can see.
HRIS, survey, and ATS products (Workday, Radford, CompAnalyst, Greenhouse) hold pieces of this picture. The recommendation is the cited range you assemble, then hand to compensation.
Load the band, the equity file, and the benchmark vintage
Do not start with a number. Load three inputs in a fixed order so you can see which cite you lack before you write a dollar.
Pay band. Pull the band that matches job code, level, and location on the requisition. Record the band identifier, effective date, and currency. If the requisition sits between levels, or the location is a geo the band file does not cover, stop. Do not interpolate a band from a nearby city.
Internal equity file. Pull the peer set compensation uses for this family and level: incumbents in the same job code or an approved adjacent code, same geo or geo group, and the pay elements compensation has already decided matter. Record the file name or extract ID and the as-of date. If the file is stale, or the peer set is empty for this cell, the equity cite is missing. Do not pad the set with people from another level.
Market benchmark vintage. Pull the survey cut compensation has approved for this family: vendor, survey name, cut (job, level, geo), and vintage, meaning the survey effective period, not the export date. live market benchmarking keeps that vintage current. Cite whatever vintage compensation currently accepts. If the cut is missing, or the vintage is not the approved one, the market cite is missing. Do not invent a market percentile. A percentile is a claim about a distribution. Without the approved cut, you do not have a percentile.
Here is one pass through the loads, not a scored case. A recruiter is staffing a senior product manager in a geo the company already bands. Workday holds the requisition and the band table. Greenhouse holds the offer workflow. Radford or CompAnalyst holds the survey cut compensation named for this family. The recruiter loads the matching band row, the equity extract for that job code and geo group, and the survey cut with its vintage stamped on the file. They check that the vintage matches what compensation published for this cycle. If the equity extract has no peers in that cell, they leave the equity cite blank rather than widening the set to another country to get a median.
A missing band, an empty equity cell, or an unapproved vintage means you draft with that field empty.
Draft with cites and leave blanks when a source is missing
Write the range as a structured recommendation. Each bound must carry a band cite, an equity cite, and a benchmark cite.
The band cite is band ID, effective date, and which point on the band you used (minimum, midpoint, maximum, or a named control point). If you cannot point at the band row, do not write that bound. A range with no band cite cannot show guardrails. Give the hiring manager the packet with the blank, not a figure that looks like it would fit. Dollars inside a remembered band are not a citation.
The equity cite is extract ID or file name, as-of date, peer-set rule, and how the bound sits relative to the internal comparators compensation cares about. If the peer set is empty, do not write an equity-adjusted bound. Leave it blank.
The benchmark cite is vendor, survey, cut, vintage, and the statistic compensation approved, including a named percentile only when that percentile is a field on the approved cut. If the vintage or cut is missing, do not write a market-informed bound. Do not interpolate a percentile from a different geo or a different year.
A complete range cites all three. A partial range shows which cite is missing. An empty range, both bounds blank, is valid when the required inputs failed. Empty stays empty.
Do not complete a bound by averaging the two sources you have. A band-plus-survey range with no equity cite is a two-source range with a hole. Label the hole. Compensation may still approve a two-source range under policy. They cannot approve a range that pretends the third source was used.
Midpoint is a named point on a cited band or a cited survey cut. If you recommend above midpoint, say which cited source supports that, and which equity comparators you checked.
Draft in the system of record compensation will review. If Greenhouse holds the offer packet, put the cited range on the offer record, not only in recruiter notes. If Workday is where compensation signs off, the same cites must be visible there. After the draft exists, do not send it.
Compensation approval is the gate; the draft never sends
Compensation reviews the cited range, or the explicit blanks, against band guardrails, equity rules for the cell, and the approved benchmark vintage. They approve, they return it with a required cite, or they reject it. The recruiter does not convert an unapproved draft into an offer letter.
Treating the draft as the offer is a failure mode. It shows up as a verbal number to the hiring manager, a ceiling typed into chat, or a letter generated before the approval timestamp. localized offer letter generation starts only after compensation has approved a complete enough range. The letter uses the approved figures. It does not invent a new number to make localization work.
An offer-acceptance probability model may sit beside this recommendation. It does not replace it. Probability of accept is not a cite for pay. You do not raise a bound because a model says the candidate might decline. You raise a bound when compensation agrees that band, equity, and benchmark support it.
Auto-send is out of scope. No workflow should move from draft complete to candidate notified without an approval record. If the ATS can fire the letter on a status change, keep that status change behind the compensation step.
Compensation should see the three cites or an explicit blank for each missing one, the requisition identifiers that keyed the loads (job code, level, geo), who drafted and when, and that the draft is not candidate-facing. If a percentile appears, it must be a field from the approved cut, not a typed-in market label. If a range has no band cite, do not approve it as band-compliant. A named one-off exception is a different policy. Typed numbers that happen to sit inside a remembered band still fail the quality outcome.
After approval the range is frozen input
Once compensation approves, freeze the cites. The offer letter uses an approved amount inside the range, chosen under the same policy. Localization, language, and legal entity on the letter must not reopen the money.
continuous pay-equity monitoring is how you find out whether a stream of approved exceptions is quietly moving a cell. Leave a trail the monitor can read: band ID, equity extract ID, benchmark vintage, approval timestamp.
Live market benchmarking can change the vintage on the next cycle. It does not rewrite last week's approved range. New requisitions load the new vintage. Closed offers stay on the vintage they cited.
Keep the loop short. Recruiter loads band, equity, and benchmark. The draft carries cites. Blanks stay blank. Compensation approves or returns. The candidate sees an offer only after that approval. The quality outcome is a range that cites benchmark vintage, internal equity file, and band, or a visible empty where a cite could not be made.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first