Methodology: how tensionscore calculates its numbers
From the text of a tech job ad, tensionscore estimates a tension score, a time-to-hire, a salary range and the real first-year cost. This page explains where those numbers come from and how they are calculated, so you can check them or challenge them.
The principle is simple: the engine does not generate numbers. It reads the job ad with explicit rules (role, seniority, location, advertised pay, blocking signals), then matches those elements against a dated market benchmark built from public sources. There is no AI in the loop.
What the tool calculates
- The tension score (out of 10) measures how hard the role is to fill as described: how tight the market is for that role, plus what the job ad adds to it.
- The median time-to-hire estimates how many months hiring will take, based on role, seniority and whether a salary range is posted.
- The salary range is the market range for the role, seniority and location detected.
- The real first-year cost adds up the fully loaded salary, the recruiting cost and the cost of delay.
Benchmark sources
Salary ranges, coefficients and time-to-hire figures come from the sources below. The benchmark was last updated in July 2026.
US benchmark (pages and job ads in dollars)
France benchmark (pages and job ads in euros)
Next review planned for mid-2027, or sooner if the market shifts significantly.
Coefficients
Three parameters turn a base salary into a real cost, and the national figure into a local range. They are the same for every role within a market.
US benchmark (pages and job ads in dollars)
| Parameter | Value |
|---|---|
| Fully loaded salary (benefits and employer taxes) | × 1.3 |
| Recruiting cost (share of annual base) | 20% |
| Location: Major tech hubs (San Francisco Bay Area, New York, Seattle…) | +25% |
| Location: National figures | 0% |
| Location: Fully remote | −5% |
France benchmark (pages and job ads in euros)
| Parameter | Value |
|---|---|
| Fully loaded salary (benefits and employer taxes) | × 1.45 |
| Recruiting cost (share of annual base) | 18% |
| Location: Paris / Île-de-France (France) | +10% |
| Location: Other regions (France) | −8% |
| Location: Fully remote | 0% |
Market tension and time-to-hire by role (US)
Each role’s tension index (out of 10) is our estimate of how hard the role is to fill in the US, informed by the sources above. The median time-to-hire is for a mid-level hire with a posted salary range.
| Role | Tension (/10) | Median time-to-hire |
|---|---|---|
| Frontend developer | 3 | 1–3 months |
| Backend developer | 5 | 2–4 months |
| Full-stack developer | 5 | 2–4 months |
| Mobile developer | 5 | 2–4 months |
| DevOps engineer | 7 | 2–5 months |
| Data engineer | 8 | 3–6 months |
| Tech lead | 6 | 3–6 months |
| QA engineer | 3 | 1–3 months |
| Product designer | 3 | 2–4 months |
| Product manager | 5 | 2–5 months |
How the real first-year cost is calculated
First-year total = fully loaded salary + recruiting cost + cost of delay.
The fully loaded salary is base salary times the employer-cost coefficient (BLS employer-cost data). The recruiting cost is a share of annual base, in line with agency fees: hiring directly costs less in fees but uses internal time that is not counted here.
The cost of delay values each month without the skill at the monthly loaded salary: the value the role should have produced during the search. It is the most debatable part of the calculation, and we present it as an estimate: it makes visible what a slow hire really costs the project.
Example: for a mid-level full-stack developer nationwide, base salary $102,000 – $132,000 → loaded salary $132,600 – $171,600, recruiting $20,400 – $26,400, 2–4 months of delay valued at $22,100 – $57,200: total first-year cost $175,100 – $255,200.
How the tension score is calculated
The score starts from the tension index of the main role detected in the job ad, then adds points for what makes the role harder to fill. Total additions are capped at 3.5 points, and the score at 10.
- Senior role: +1; lead role: +1.5.
- No salary range posted: +1.5 (and one extra month of time-to-hire).
- Catch-all role covering at least three areas of responsibility: +1.
- Job ad mixing at least four role families: +0.5.
- Time-to-hire: one extra month for a senior or lead role.
Seniority levels
- Junior: entry level, intern, recent graduate, up to about 2 years of experience.
- Mid-level: the level used when the job ad does not say, in practice 2 to 4 years of experience.
- Senior: from 4 to 5 years of experience, or a job ad asking for a senior or expert profile.
- Lead: technical leadership (tech lead, lead developer, architect, CTO, head of engineering). On the salary pages, the tech lead role is shown from a first lead role to principal lead.
What the tool does not do
- It uses no generative AI and makes up no numbers: everything comes from the benchmark above.
- Location gaps are a coefficient applied to the national figures, not city-by-city surveys.
- Ranges are indicative, not contractual: a very specific role (rare technology, regulated industry) can fall outside them.
- The text of your job ad is analyzed and then discarded: it is neither stored nor shared.
Who publishes tensionscore
tensionscore is a free tool built and published by the neodev team (Neodev Ltd), which helps small businesses with software development and technical leadership. See the legal notice.
neodev also provides freelance developers. We say so plainly because our guides compare full-time hiring, freelancers and agencies; the tool’s numbers do not depend on that business.
Spotted an error, or have a source to suggest? Email adrien@neodevconsulting.com.
Paste your developer job ad: score, real time-to-hire, first-year cost and what’s driving candidates away — free, in 30 seconds.
See my free diagnosis