How to set a salary range for a job offer using market data

EvenBetter Team8 min read
Get a real-time salary benchmark in 60 seconds.Try it now

You've written the job description, the hiring manager is impatient, and the recruiter is asking for an approved range before the first calls go out. You know roughly what you want to pay — but when someone asks "how did you land on that number?", the honest answer is usually "gut feel, adjusted for whoever complained last."

That's the gap this guide closes. Setting a salary range for a specific job offer is not the same as designing a full compensation framework — it's a faster, more targeted exercise. Done properly, it takes a defined role, a live market data pull, a percentile decision, a budget check, and an internal equity scan. When those five steps align, you have a number you can defend to the candidate, to the hiring manager, and to your CFO.

Step 1: Scope the role before you touch any data

Salary data is only as good as the inputs you use to query it. The most common mistake is pulling a benchmark for a job title — "Marketing Manager," "Software Engineer" — when the actual work is something more specific. A marketing manager running paid acquisition for a B2B SaaS company is a different role from a marketing manager building brand for a consumer retailer. The market prices them differently.

Before opening any benchmarking tool, nail down:

  • Job title and level — what seniority level does this role map to in your leveling framework? "Senior" means different things at different companies; what does it mean here?
  • Key responsibilities — three to five core deliverables that distinguish this role. If you're filling a role from a job description, identify what separates it from a generic version of the same title.
  • Skills that attract a premium — niche technical skills (specific platforms, certifications, languages) command above-median pay in most markets. Know which ones apply.
  • Location and work model — remote, hybrid, or on-site? In which city or region? Market rates vary substantially by geography, and many remote roles now price against a company's HQ market, a US national average, or the candidate's local market. Decide your policy before you pull data.
  • Company context — your industry, company size, and stage all affect what the market thinks a given role is worth. A head of finance at a 50-person Series B startup carries different expectations than the same title at a 500-person public company.

Getting this right means the benchmark you pull will actually reflect the job you're trying to fill.

Step 2: Pull a benchmark from multiple sources

A single salary data source is almost never enough. Published surveys have a 12–18 month lag. Job listing aggregators reflect advertised ranges, which skew optimistically. Crowdsourced tools have self-selection bias. Each source captures a slice of truth.

Reliable benchmarks triangulate across:

  1. Published compensation surveys — Willis Towers Watson, Mercer, Radford/AON are the gold standard in most markets. If your company subscribes, pull the P25/P50/P75 for the role family and level.
  2. Job posting data — live listings give you a real-time read on what competitors are advertising. They skew toward the active market, which is useful if you're competing for candidates right now.
  3. Open-web salary data — Glassdoor, LinkedIn Salary, Levels.fyi, and local equivalents add volume even when they're noisy.

For example: a senior product manager at a 200-person B2B SaaS company in a major metro might show P25 at around $130K, P50 at $155K, and P75 at $180K. Those three points give you the shape of the market — you're not anchored to one number.

EvenBetter automates this triangulation. Paste the full job description and it queries multiple live data feeds and LLM-powered synthesis (Claude, Gemini, ChatGPT, Grok) simultaneously, returning a source-cited range with a signal-strength rating — Low, Good, or Excellent — in under 60 seconds. The full methodology explains how sources are weighted and where the signal-strength rating comes from. If you're benchmarking several roles, this saves hours of manual cross-referencing.

Step 3: Choose your percentile target

Once you have the market data, you need to decide where in that market you want to sit. This is your percentile strategy, and it should be deliberate rather than defaulting to "somewhere in the middle."

The main positions:

  • P50 (median) — you match the typical competitor. Defensible, predictable, good for roles with deep candidate pools. It says: "We pay fairly; the rest of the package should close the deal."
  • P60–P75 — you lead the market for this role. Appropriate for hard-to-fill specialisms, roles where a bad hire is very expensive, or markets where you're competing with employers who have stronger brands or equity stories.
  • P25–P40 — you lag the market intentionally. This only makes sense when your total package is genuinely differentiated (rich equity, pension, mission, prestige) or when the candidate supply is large relative to demand.

One important nuance: use a different percentile target for different role types, even within the same company. A startup might sensibly target P70 for senior engineers (where talent is scarce) while sitting at P45 for entry-level admin roles (where supply is deep). A single company-wide percentile is a shortcut, not a strategy.

For the senior PM example above: if you've decided your compensation philosophy is P65 for product roles to compete with larger companies, your target number falls at around $166K — between P50 ($155K) and P75 ($180K), interpolated from the range.

Step 4: Reconcile with budget and internal equity

A defensible market number is only half the picture. Before you set the candidate-facing range, run two additional checks.

Budget check. What's the approved headcount budget for this role? If the market says $155K–$175K and the approved budget is $140K, you have a problem — and the right time to discover it is before the first interview. Either revisit the budget with data in hand (the benchmark is your evidence) or revisit the role scope so that a lower-level hire fits the approved number.

Internal equity check. Pull the current salaries of people in equivalent or adjacent roles. If you're about to offer a new hire $170K and two existing senior PMs earn $145K, you've created a compression problem — the new hire will earn more than established team members. That erodes morale, drives voluntary turnover, and eventually costs more than getting ahead of it now. Options: adjust the offer to maintain equity, or use the hire as the forcing function to correct existing pay gaps proactively (the better answer).

These checks often create tension. Market data says one thing, budget says another, internal equity says a third. The goal is not to satisfy all three perfectly — it's to make the tradeoffs explicitly and document your reasoning. If you're going below market, know why. If you're creating compression, have a plan to address it.

Step 5: Set the range you show the candidate

Once you've completed steps 1–4, you're ready to set the actual range you'll post and communicate.

A few principles:

  • Make the range meaningful, not deceptive. A $130K–$190K range published in a job ad is almost meaningless — it tells the candidate almost nothing. A $155K–$175K range says: you'll land somewhere in this zone depending on your experience level and what you negotiate. Narrower ranges reduce friction.
  • Know where in your range you'll anchor. For a strong candidate with all the required experience, you'll want to open near the midpoint or above. For someone who meets the floor of the criteria, the low end. Having this calibrated before the call avoids you being caught off-guard.
  • Post a range if you can. Salary transparency laws require it in many US states (California, Colorado, New York, Washington), in the EU, and in parts of Canada. Even where it's not required, posting a range reduces applicant dropout and filters mismatches early. The discomfort of posting is almost always smaller than the cost of losing finalists at offer stage.

Communicating the offer

When you make the offer, connect the number to the reasoning:

  • "We benchmarked this role against the market for senior PMs in your market and our range is $X–$Y. We're opening at $Z because [your experience level / scope of this hire]."
  • If there's a known constraint, say so early. Candidates respect clarity more than vague headroom.
  • Be prepared for a counter. Know before the call what your actual ceiling is for this hire. If you have flexibility, know how much. If you don't, know how to explain why.

The best offer conversations feel like a transparent exchange. That only happens when your number is rooted in data you can show, not a figure someone approved in a meeting two months ago.

Putting it together

The five steps — scope the role, pull a triangulated benchmark, choose your percentile, reconcile with budget and equity, set the range — take a typical hire from "gut feel" to "defensible decision" in an afternoon, or in under an hour with the right tooling.

If your team runs multiple searches at once or is building compensation infrastructure for a scaling company, the effort compounds quickly. That's the problem EvenBetter is built to solve: a source-cited, signal-strength-rated benchmark from a full job description in under 60 seconds, so every offer starts from accurate data rather than outdated surveys or someone's best guess.

The candidate you're about to make an offer to has almost certainly already looked up their market value. Meeting them with the same quality of data — and showing your work — is how you close on the right terms.

Ready to benchmark your salary?

Paste a job description. Get a market salary range with full sources breakdown.

Run your own benchmark

MethodologyPricingFAQ

Related articles