Methodology

How we compute and how we research

This page states, plainly enough to check against the tool itself, exactly how the job offer comparison tool normalizes an offer, and how the Offer Risk Snapshot sources and labels the claims it returns. Nothing here is aspirational — every rule below is the rule the running code applies.

Three panels, never one blended score

The comparison tool never reduces an offer to a single number. A single figure hides the inputs that produced it, and the inputs are the product. Every comparison always produces exactly three separate outputs:

  • Panel A — normalized cash-equivalent comp (pre-tax). Base salary, signing bonus, equity vesting under the actual schedule, refresh grants, and the employer retirement match, added up year by year and across a four-year total. Commute money is subtracted here. No tax is withheld or estimated anywhere in this panel.
  • Panel B — effective hourly. Panel A's year-1 total divided by the hours actually committed to earn it — working hours plus commute time. This is what can put the offer with the larger headline number at a lower effective hourly rate once the hours required to earn it are counted.
  • Panel C — unpriced and at-risk, always $0. Everything that is real but cannot be honestly priced today: private-company option value, contingent benefits, unvested amounts forfeited under a vesting or match schedule, and unlimited PTO. Every entry here carries a reason, and none of them is ever summed into Panel A or Panel B.

These three panels are never blended into one single score, an overall rating, or a "which offer wins" figure. The tool's job is to show the inputs clearly enough that the decision stays yours.

Equity: the actual vesting schedule, never grant ÷ 4

Panel A's equity line for each year is computed from the grant's actual vesting schedule — never the shortcut of dividing the total grant by four. Two offers with an identical headline grant can differ by several times over in what actually vests in year one, depending on the schedule. The tool ships three named presets plus a validated custom schedule; a custom schedule is rejected, never silently rescaled, unless its four yearly percentages sum to exactly 100%.

Named vesting presets, all with a 12-month cliff before which nothing vests
ScheduleYear 1Year 2Year 3Year 4
Standard (25/25/25/25, 12-month cliff)25%25%25%25%
Amazon (5/15/40/40, back-loaded, 12-month cliff)5%15%40%40%
Google (38/32/20/10, front-loaded, 12-month cliff)38%32%20%10%

Whatever is unvested at the schedule's cliff is never treated as earned: leaving one month before a 12-month cliff completes forfeits everything that would have vested at the cliff, and the tool states that dollar figure directly rather than folding it into Panel A.

Stock price: flat, never appreciated

The per-share price you enter — normally the last close for a public company — is held flat across every year of the comparison. The tool applies no growth rate, no compound annual growth assumption and no appreciation curve to that price at any point: year one and year four are priced at the identical figure you entered. This is a deliberate constraint, not an oversight — this tool never forecasts a stock price.

Refresh grants: $0 by default, with a sensitivity toggle

Additional equity grants made after year one (refresh grants) default to $0 and are never assumed on your behalf. A "typical refresh" toggle exists to show how a common refresh value — currently modelled at $30,000/year applied to years two through four — would move the result, but turning it on always shows as an explicit, labelled toggle result. It is never baked into the headline total silently.

Private-company options: $0 in Panel A, plus an exit grid

Private-company stock options are never priced in Panel A, at any option count. The most recent preferred-round price is not what common stock is worth: preferred shares carry a liquidation preference, so common is worth strictly less, and there is no defensible mark-to-market value for an illiquid minority stake. That $0 line is a stated rule, not a missing feature.

In place of a single guessed value, Panel C shows a four-row exit-scenario grid at 0x / 1x / 3x / 10x the last preferred round price. Each row is the per-share spread at that exit price, multiplied by the option count, floored at $0, net of the cost to exercise — nothing is subtracted twice. At a 0x exit every row is $0 and the exercise cost would be sunk in full. Any of the five inputs the grid depends on — option count, strike price, last preferred price, ownership percentage or share count, and the post-termination exercise window — that you have not supplied is shown as an explicit "unknown," never assumed as a number.

Retirement match: parsed, not guessed

A written match formula like "50% up to 6%" is parsed into an employer contribution stated as a percentage of eligible base — in that example, 3% of eligible base — assuming you contribute enough of your own pay to earn the whole match (full capture). A formula the tool cannot parse produces a validation message and a $0 contribution; it is never guessed at or rounded to a nearby-sounding number. The match's own vesting schedule — immediate, a three-year cliff, or three-year graded vesting — is then applied to the four-year figure, so a match you have not held long enough to keep is excluded from the total rather than counted as if it were already yours.

Benefits we don't price

Health-plan deductibles and out-of-pocket maximums, reimbursement-only stipends, and insurance riders are contingent on future claims or elections rather than a fixed cash amount, so none of them ever becomes a Panel A dollar figure — they are shown side by side in Panel C with the reason each was excluded.

Unlimited PTO is stated as having no computable value; the tool does not estimate one. A countable number of PTO days is priced at base ÷ 260 per day, and only when both offers being compared state a countable number of days — if either side is unlimited, or simply does not state a countable figure, the PTO comparison is marked void rather than assigning either offer a dollar value.

Commute: money and time counted differently, never converted into each other

Commuting has a money cost and a time cost, and the tool never turns one into the other. Money — on-site days per week × working weeks × round-trip miles × the dated IRS standard mileage rate (or a stated transit-pass and parking cost) — is subtracted directly from Panel A. Time — on-site days per week × working weeks × round-trip minutes ÷ 60 — enters only Panel B's hours denominator, and is never priced or subtracted from Panel A. Doubling your commute minutes moves your effective hourly rate in Panel B; it does not change the dollar figure in Panel A.

The dated rate itself: the IRS standard mileage rate is 76.0 cents per mile for miles driven from 2026-07-01 onward, and 72.5 cents per mile before that date. The tool always resolves the tier in effect on the offer's start date — never today's date, and never a rate hand-typed into a page — from the same table shown below.

IRS standard mileage rate, both tiers in effect in 2026
RateEffective fromSource
72.5¢/mile2026-01-01IRS Notice 2026-14
76.0¢/mile2026-07-01IRS Notice 2026-14

IRS Notice 2026-14 — 72.5¢/mile effective 2026-01-01IRS Notice 2026-14 — 76.0¢/mile effective 2026-07-01

The sensitivity line

Beneath every result, the tool names the single input that moves it most: it re-runs the four-year total with each input swung ±25% around its current value, one input at a time with every other input held fixed, and reports the input with the largest swing in one sentence — commonly the stock-price assumption or the refresh-grant toggle. This is what turns the comparison into a decision tool rather than a static number: it tells you which assumption is worth double-checking before you decide.

What this tool never does

  • No tax is modelled anywhere. Every figure in Panel A is pre-tax. Your actual take-home depends on your filing status, state and elections, none of which this tool asks for or estimates.
  • No market benchmark is produced. The tool never generates a "market rate" figure for your role, level or location. It normalizes the offers you enter against each other — it does not compare either one to a third-party salary index.

How the Offer Risk Snapshot is grounded

The Offer Risk Snapshot is the one tool that talks to a server, because grounding a claim in a real, dated source requires it. It calls Google Gemini with Google Search grounding enabled, so every returned source URL is a page the model actually read — never a generated citation. A claim that arrives without a real, non-blank source URL and a non-blank source date is rejected before it ever reaches you; it is never silently shown as an unlabelled fact.

Every claim the Snapshot shows carries two independent labels, always both, never one standing in for the other:

  • Confidence — how sure the grounded response is in this specific claim, drawn from exactly the enum high | medium | low. No other value is valid, and an empty or unrecognised label is treated as invalid rather than defaulted to a safe value.
  • Classification — what kind of claim this is, drawn from exactly the enum fact | estimate | judgment: something the source stated directly, something derived or estimated from what the source stated, or a judgment call OfferMettle is making about it. This is separate from confidence — a claim can be a high-confidence estimate or a low-confidence fact, and both labels are always shown together.

Grounding results are cached per company so a case's cited sources and dates stay stable once your case is being worked, rather than shifting mid-review. Found something wrong in a Snapshot or a Decision Brief? See how to submit a correction.

Editorial standards

This methodology is one part of how OfferMettle stays checkable. See the editorial policy for how content is written and reviewed, how and where AI is used in producing this site and your dossier, and who writes and reviews OfferMettle's content. Found an error anywhere on the site? Submit a correction.