How we work

How we calculate offer benchmarks

We believe in being honest about what we do and don't know. This page explains where our salary data comes from and how we produce offer verdicts.

The short version

Our benchmarks are based on public government wage data and structured modelling. We do not use real-time company data feeds or proprietary salary databases. Our numbers are designed to give you a directional signal — not a legally precise figure.

Government wage dataIndustry benchmarksExperience modellingLocation adjustments

Where the data comes from

We do not have access to live company salary databases, proprietary HR platforms, or real-time job posting data. We want to be upfront about that.

Our offer benchmarks are built from government earnings surveys and community compensation platforms, normalised into a structured pipeline:

  • BLS OEWS (US) — Bureau of Labor Statistics Occupational Employment and Wage Statistics. National and metro-area salary data by occupation. The most statistically rigorous US source. Used for US market estimates.
  • ONS ASHE (UK) — Annual Survey of Hours and Earnings. SOC 2020 occupation codes. Covers UK national and London regional gross annual pay for full-time employees. Open Government Licence. UK locations only.
  • INE EES (Spain) — Encuesta de Estructura Salarial. Spain's national earnings structure survey. Includes regional breakdown for Madrid and Barcelona. Spain only.
  • Stack Overflow Developer Survey — Self-reported compensation data from a large annual global survey. Used as a directional signal for tech roles across all markets. Self-reported data has known biases — weighted at a lower confidence tier than government surveys.
  • ECB exchange rates — Used to normalise cross-currency comparisons where applicable.

All records are normalised into a unified schema and tagged with their source, geographic scope, seniority level, and data freshness.

How we benchmark offers

When you enter an offer, we look up the benchmark data for your specific role, city, and experience band.

Each query runs a 3-tier geographic search:

  1. City-level records — the most specific and highest-weighted data. For example, ONS London regional data or BLS San Francisco metro data.
  2. Country-level records — national survey data used when city-level data is not available.
  3. Market fallback — derived from the closest available market with a geographic adjustment multiplier.

The result is a p25 / median / p75 range for your specific experience band. Your offer is then scored against this range to produce a percentile estimate and verdict.

Experience bands

We map years of experience to four bands:

  • Junior (0–2 years) — entry to early career
  • Mid-level (3–5 years) — established contributor
  • Senior (6–10 years) — experienced specialist or team lead
  • Staff / Lead (11+ years) — principal, staff engineer, or senior management

For each experience input, we find the applicable band and use the corresponding benchmark data. If exact band data is not available for a combination, we interpolate using an experience curve calibrated from observed market data.

How verdicts are calculated

Your offer receives one of three verdicts based on its percentile position relative to the market range:

  • Weak offer — your offer is below the 25th percentile. Most candidates in your position can negotiate a better package. Accepting without negotiating may lock you below market for the next 2–3 years.
  • Fair offer — your offer is between the 25th and 63rd percentile. It's in range, but there's likely room to negotiate toward the upper half of the band.
  • Strong offer — your offer is above the 63rd percentile. The company has made a competitive offer. If you negotiate, focus on equity, signing bonus, or non-monetary terms rather than base salary.

The negotiation range shown is the difference between your offer and the p50–p75 range for your band. This represents a reasonable ask that's defensible with market data.

Confidence levels

Each market combination is assigned a confidence level based on the quality of the underlying data:

  • High confidence — data from a primary government survey or BLS OEWS for this specific market. Direct source data, not modelled.
  • Estimated range — data derived from the nearest available market with an adjustment multiplier. Less precise, but directionally reliable.

The confidence level is shown in your results. A lower confidence estimate is still useful as a directional signal — just treat the exact numbers as a range rather than a precise figure.

Limitations

We believe transparency about limitations matters. Here is what you should keep in mind:

  • We only cover 10 roles and 39 cities. If your exact role or city is not in our dataset, we apply the nearest available market. Results will be less precise.
  • We cover base salary only. Total compensation — equity, bonuses, benefits, pension contributions — is not included in our benchmarks. For senior roles at growth-stage companies, total comp can be significantly higher than base.
  • Company stage and size are not modelled. A senior engineer at a Series A startup and one at a FAANG company are not the same. Our benchmarks reflect a broad market average.
  • Data is not real-time. We update periodically, but salaries can move quickly in fast-changing markets.
  • Remote-first roles vary. Companies that benchmark pay globally may offer different rates than local employers. Our benchmarks reflect the local market, which may not match a remote-first employer's policy.

Why this is still useful

Despite these limitations, benchmarking your offer is genuinely valuable — even with modelled estimates.

Most candidates accept the first offer they receive with no data and no negotiation. Employers expect negotiation — the first offer is rarely the best possible offer. Having a market reference point fundamentally changes the conversation.

Our tool gives you a directional signal. If our model puts your offer in the bottom 25% for your role and location, that's a meaningful data point — even if the exact median is off by a few thousand. It tells you there's a conversation worth having.

The negotiation script we generate is calibrated to your specific offer and market. Use it as a starting point — adjust the tone and context to match your situation.

For a more precise view, we recommend combining our estimate with:

  • Job listings for similar roles in your location
  • Conversations with recruiters who share live market rates
  • Professional network salary discussions
  • National salary survey data published by government bodies

Got an offer to check?

Takes 30 seconds. No email required. No signup.

Check this offer →