Methodology
How we read a salary offer
The data and the math behind every analysis on this site — documented in full, because a number you can’t trace is a number you can’t negotiate with.
What this is
Every analysis we produce answers one question: given this role, this location, and this offer, where does the number actually stand — and what should you do about it? The answer is built from government wage data, occupation-level enrichment, and live market corroboration, run through a deterministic verdict engine. The strategic advice is written per report; the numbers never are. Every figure you see is computed from documented sources by fixed rules.
Data sources
- BLS OEWS (May 2025) — the U.S. Bureau of Labor Statistics’ Occupational Employment and Wage Statistics program: wage percentiles (10th, 25th, median, 75th, 90th) for 825 occupations across 393 metro areas, collected from employer payroll surveys. This is the backbone of every analysis — a single consistent methodology, published by the federal government, at metro grain. Source: bls.gov/oes.
- O*NET 30.3 — the Department of Labor’s occupation database: skills, education distributions, technology, and related occupations per role. Used to enrich role intelligence, not to price offers. Source: onetcenter.org (CC BY 4.0).
- Live market corroboration — current salary ranges aggregated from public job postings and salary-report sites for the specific title, market, and (when recognized) company. Government data is authoritative but lags the market; live data is current but noisier. We use both, and we tell you when they disagree.
How the verdict is computed
An offer isn’t judged against a whole occupation — a 15-year veteran and a first-year hire shouldn’t be priced against the same number. We map experience to the percentile band it typically occupies:
| Experience | Expected band |
|---|---|
| 0–2 years | 10th–25th percentile |
| 3–5 years | 25th–50th percentile |
| 6–10 years | 50th–75th percentile |
| 11+ years | 75th–90th percentile |
The engine then computes two independent reads — one against the government band for your experience level, one against the live market range — and reports the more conservative of the two. That choice is deliberate: a verdict that errs cautious can cost you a slightly softer opening; a verdict that errs optimistic can cost you the negotiation. When the two sources tell different stories, the analysis says so explicitly rather than averaging the disagreement away.
One guard runs on top: some government occupation categories are broader than the job title inside them, which can benchmark a title against higher-paid roles the category lumps in. When the reliable title-specific market range sits entirely below the government band for your experience level, the engine anchors to the title-specific range instead — the recommendation follows the market that actually hires your title. The guard only ever moves the recommendation toward the more credible, more conservative coordinates, never toward a more aggressive ask.
What we suppress, and why
Most of the engineering in this engine is refusing to state what the data can’t support:
- Low-confidence market data is dropped. A live range built from a single thin source, or one whose spread says it’s describing a different population than your role, never reaches the verdict.
- Wrong-population rails. A market range that falls entirely below the government 10th percentile — or implausibly far above the government ceiling — is treated as describing the wrong job, and is excluded.
- Top-coded data stays honest. BLS suppresses very high percentiles in some metro cells. Where the band you’d be judged against isn’t published, the analysis says the position is unclear rather than manufacturing a number — and we never extrapolate your percentile into an unpublished tail of the distribution.
How the counter range is derived
Counter figures — the floor, the anchor, the target, and the accept threshold in the paid analysis — are computed by fixed, documented formulas from the verdict, the band coordinates, and your offer. They are never produced by a language model: the writing explains the numbers; it cannot change them. Each figure ships with its derivation, so you can see exactly which data coordinate produced it. The full derivation ladder is part of the paid report; every estimate is market-informed, and no figure is a guarantee.
Confidence labels
Every paid analysis carries a confidence label computed by fixed rules, not by feel:
- High — complete government band data, live market agreement, and a confident occupation match.
- Moderate — one weak link: a partial government band, a one-step disagreement between sources, or a less certain occupation match.
- Low — heavily suppressed government data, sources in outright disagreement, or an uncertain occupation match. The analysis tells you this and adjusts how firmly it recommends anchoring.
Freshness
BLS publishes OEWS annually; we refresh the bundle each cycle (current vintage: May 2025). O*NET releases quarterly (current: 30.3). Live market corroboration is retrieved per analysis and cached briefly, so it reflects the market weeks-fresh, not years-fresh. Every analysis states the vintage of the data it used.
Where this analysis ends
This is a market analysis and negotiation preparation tool. It is not legal, tax, financial, or HR advice. Non-compete review, equity tax treatment, suspected discrimination, and executive packages are jobs for an employment attorney, a CPA, or a negotiation coach — the paid report includes cost-anchored guidance on when to escalate to each.