The Metro-Role Fit Score: Target, Watch, or Skip
You can score one metro for your own role across five weighted dimensions and defend a target, watch, or skip verdict that another person would reproduce.
This guide is for job seekers deciding where to aim their search or whether to relocate for one specific role. It gives you a repeatable scoring model that turns one metro plus one role into a target, watch, or skip verdict using the same public inputs every time. Two people scoring the same city for the same role should land on the same call.
The pages that rank today are national best-cities-to-find-a-job listicles. They rank metros for an average worker in a given year, and they go stale the moment hiring shifts. This model is personalized and evergreen: it never quotes a ranking, it scores a case in front of you, and it tells you exactly what to re-check when the numbers move.
Why score a metro instead of trusting a ranking
A national ranking answers a question you never asked: which city is best for the average worker this year. Your question is narrower and more useful - is this city worth adding to my search, or relocating to, for the role I actually do. Those are different questions, and the second one has no listicle.
The reason is a data gap. The competition denominator - how many people already do your role in that city - is invisible in official statistics. The Occupational Employment and Wage Statistics program (OEWS) excludes the self-employed, so freelance-heavy roles show understated demand. The Job Openings and Labor Turnover Survey (JOLTS) stops at the state level except as research estimates. So no public source publishes a single demand-versus-competition ratio at metro-occupation granularity. It has to be constructed, and that is what this model does.
The role you pick reshapes the market more than the city you pick. In Refolk's index of professional profiles, there are 347,779 US profiles titled Software Engineer against 28,694 titled Data Scientist - a 12.1x gap in the candidate pool inside the same country. Move that same software-engineer role across a border and the pool collapses again: 21,600 profiles in Germany, a 16.1x difference from the US.
The five dimensions and how each one lies
The model scores five dimensions. Each answers a distinct question, each maps to a public input, and each has a documented way it produces a false positive. A dimension you cannot fool is a dimension you do not understand yet.
| Dimension | What it measures | Public input | What it looks like when it lies |
|---|---|---|---|
| Real pay | Purchasing-power salary, not headline | OEWS median wage / BEA RPP | High nominal pay that trails a low-cost state after adjustment |
| Demand vs competition | Openings per incumbent for your role | Projections Central + postings / OEWS + Refolk | Big employed base read as opportunity when openings are flat |
| Market tightness | Whether employers are chasing workers | LAUS unemployment rate and 12-month direction | A low rate that is rising year over year |
| Concentration risk | How many employers you can actually play off | Role-specific employer HHI | A large metro that is a two-employer town for your SOC |
| Pay level | Absolute wage floor for the role | OEWS median and mean wage | A thin-sample cell with a large error read as precise |
Two of these carry more decision weight than the rest. Real pay is the single most decision-changing adjustment in the model, because it can invert the nominal ranking entirely. Concentration risk is the one that hides inside averages, because a metro can look healthy in aggregate while your specific role is dominated by two firms.
The real-pay adjustment, done in one division
Real pay is nominal pay divided by the region's price level. The named index is the BEA Regional Price Parity (RPP), which measures price levels across states and metro areas as a percentage of the national level of 100. Divide the metro nominal median by the metro RPP over 100, and you have purchasing-power pay you can compare between cities.
The spread is large enough to flip decisions. In 2024, California's state RPP was the highest at 110.7, with Hawaii at 110.0 and New Jersey at 108.8; the lowest were Arkansas at 86.9 and Mississippi at 87.0. In 2022, California's price level was 29.9% higher than Arkansas's. That means a role paying 25% more in nominal terms in California can pay less in real terms than the same role in Arkansas.
From headline salary to a number you can compare
- OEWS medianRead the metro median wage for your SOC
- Match vintagePick the RPP set from the same year as the wage
- Divide by RPP/100Convert nominal pay to purchasing power
- Compare metrosSubtract your current metro's real pay for the delta
One trap sits inside this step. Each annual RPP set is independently estimated and cannot be compared across years. Using a 2022 RPP against a 2024 nominal wage produces a number that looks precise and means nothing. Match the RPP vintage to the wage vintage every time.
Demand versus competition, when no source publishes the ratio
There is no official demand-versus-competition figure at metro-occupation level, so you construct one from four public parts. The cleanest anchor is the OEWS location quotient: an occupation that is 10% of local employment against 2% nationally has a quotient of 5, meaning five times the national concentration. The natural break is 1.0, which is national parity.
But a location quotient signals concentration, not hiring. A company town can have a quotient of 5 and zero openings. So you pair it with flow: Projections Central average annual openings over a ten-year horizon at the state level, plus live posting counts. Against that, you set the competition base - OEWS employment for the incumbent count and Refolk's profile counts for the pool official data misses. The output is an openings-per-incumbent proxy.
The two datasets below show why the competition base is load-bearing rather than decorative. The same role has a 16.1x different pool across two countries, and two roles in the same country differ by 12.1x.
| Role | Country | Current profiles | Top employers |
|---|---|---|---|
| Software Engineer | United States | 347,779 | Google, Figma, Microsoft |
| Software Engineer | Germany | 21,600 | Helsing, Zalando, TeamViewer |
| US : Germany ratio | - | 16.1x | - |
| Role | Current profiles | Top employers | Share vs software engineer |
|---|---|---|---|
| Software Engineer | 347,779 | Google, Figma | 1.00 (base) |
| Data Scientist | 28,694 | Meta, ByteDance, TRM Labs | 0.083 (12.1x smaller) |
Pulling the local competition base by hand means scraping profiles and guessing at titles. This is the part Refolk removes: it counts, by title and region, who already holds the role in the metro you are scoring, so the denominator in your ratio comes from a real index rather than a guess.
Market tightness, and why time-to-fill went dark
Tightness measures whether employers are chasing workers or the reverse. The load-bearing signal is the metro unemployment rate from the Local Area Unemployment Statistics program (LAUS), which covers 387 metropolitan areas by place of residence, plus its 12-month direction. The 2024 annual US rate was 4.0%, and in a recent June, jobless rates were higher year over year in 184 of those 387 metros - so the direction matters as much as the level.
Two better-sounding signals are not available. JOLTS produces monthly state estimates but only at total-nonfarm level, never metro-occupation - national openings were 7.6 million against 5.2 million hires in a recent month, which is backdrop, not a local number. And the DHI-DFH Mean Vacancy Duration Measure, the best time-to-fill proxy, hit 27.6 working days in May 2017 and was then discontinued. Any days-to-fill claim newer than 2018 is proxied from postings, not measured.
Time-to-fill went dark in 2018, so tightness rides on the unemployment rate and its direction, not a days-to-fill number.
Read the rate and the arrow together. A low rate that is rising year over year is a market cooling toward you, not a market chasing you. Score the level, then adjust for the direction.
Concentration risk, the dimension that hides in averages
Concentration risk is how many employers you can realistically play off against each other for your role. Measure it with a Herfindahl-Hirschman Index (HHI) on local vacancy shares by occupation, following Azar, Marinescu, and Steinbaum. The average US labor market has an HHI of 4,378 - the equivalent of just 2.3 recruiting employers. Markets above the 2,500 HHI threshold from the horizontal merger guidelines are highly concentrated, and 60% of US markets clear that line.
The trap is that those highly-concentrated markets hold only 16% of employment. So the aggregate looks fine while your specific SOC is a two-employer town. Commuting zones around large cities tend to have lower concentration than smaller cities or rural areas, which means big metros are often safer, not just pricier - more employers competing gives you more outside options and real bargaining leverage.
| Role / country | Most-cited region | Concentration signal |
|---|---|---|
| Software Engineer / US | San Francisco Bay Area | Dispersed across SF, Seattle, Sunnyvale |
| Software Engineer / Germany | Berlin | Heavily Berlin-weighted |
| Data Scientist / US | LA and SF Bay Area | Bi-coastal cluster |
Compute the HHI role-specific, from the share of local postings the top employers hold, and cross-check it against the location quotient and any state WARN notices that flag a dominant-employer layoff. A metro-wide HHI will comfort you when your role is the exception.
Real pay against concentration
The scoring procedure, step by step
Run these seven steps in order. The order matters in one place: BEA advises adjusting current dollars by RPP before any real-terms verdict, so the cost-of-living step follows pay collection and precedes the verdict. Some practitioners score tightness first because LAUS updates monthly while OEWS is annual - that reordering is fine, but pay-then-RPP-then-verdict is not negotiable.
Score one metro for one role
- Fix the role and geography codesMap your role to a 6-digit SOC code and the target city to an OEWS MSA. Done when both strings exist in the current May 2025 OEWS tables.
- Pull pay and employmentRead the OEWS metro median wage, mean wage, employment level, employment-per-1,000, and location quotient for the SOC-MSA pair. Record each with its relative standard error.
- Adjust pay for cost of livingDivide the metro nominal median by the metro RPP over 100, and repeat for your current metro. Done when you have a matched-vintage real wage delta.
- Score demand versus competitionCombine Projections Central state openings and live posting counts against OEWS employment and Refolk profile counts. Done when you have an openings-per-incumbent proxy.
- Score market tightnessRecord the metro LAUS unemployment rate and its over-the-year change, with state JOLTS as backdrop. Done when you have a current rate and a 12-month direction.
- Score concentration riskEstimate an employer HHI from the top employers' share of local postings. Done when you can name the top three employers and their rough vacancy share.
- Weight and assign the verdictApply the five weights, sum, and assign target, watch, or skip. Done when the metro-role pair carries one defensible label.
Weights and cutoffs
No published standard sets target, watch, or skip cutoffs for a metro-role score, so the weights and thresholds below are this guide's own contribution. Treat them as a defensible default, not a law of nature. The one borrowed threshold is the 2,500 HHI concentration line; the location quotient break at 1.0 is the only other natural cutoff.
Use two presets, because relocation and remote expansion weight the dimensions differently. If you are physically moving, real pay and concentration risk dominate, because you are committing to one local labor market. If you are expanding a remote search to add a metro, demand and tightness dominate, because you can leave without moving.
Weights (relocation preset): Real pay x3 Concentration risk x3 Demand vs competition x2 Market tightness x1 Pay level x1 Weights (remote-expansion preset): Demand vs competition x3 Market tightness x3 Real pay x2 Concentration risk x1 Pay level x1 Score each dimension 0 to 5: Real pay: 5 if real delta positive vs current metro, 0 if negative Demand: 5 if openings-per-incumbent above your national baseline Tightness: 5 if unemployment low AND falling, 0 if rising Concentration: 5 if role HHI below 2,500, 0 if above 4,378 (avg market) Pay level: 5 if OEWS median clears your floor with RSE under 30% Verdict (relocation preset, max 50): Target: 38 and above, with no dimension scoring 0 Watch: 26 to 37, OR any single 0 Skip: below 26
Score each dimension 0 to 5, multiply by the preset weight, sum, then band. Swap the weights for your situation.
How this goes wrong
The model fails in predictable ways, and each failure is a specific false positive with a specific check. This is the most valuable section to internalize, because a wrong verdict that feels confident costs more than no verdict at all.
- Nominal-wage illusion. A high headline salary reads as a target and collapses after RPP adjustment. Recompute against the metro RPP over 100 before scoring pay.
- Cross-year RPP mixing. A 2022 RPP against a 2024 wage produces a meaningless number. Match the RPP vintage to the wage vintage.
- Thin-sample OEWS estimate. A metro-occupation cell with a large relative standard error looks precise but is noisy. Read the RSE and discount cells above roughly 30%.
- Self-employment blind spot. OEWS excludes the self-employed, so freelance-heavy roles show understated local demand. Cross-reference Refolk profile counts and posting boards.
- JOLTS granularity trap. Metro job openings from JOLTS do not exist below the state level except as research estimates. Confirm the geography of any openings figure.
- Stale time-to-fill. The DHI-DFH vacancy duration is discontinued; quoting it as current is wrong. Verify the last update was 2018 and label it historical.
- Concentration false comfort. A big metro with many employers can still be single-employer-dominated for a niche SOC. Compute the role-specific HHI, not the metro-wide one.
- Location-quotient misread. A high quotient signals concentration, not hiring; a company town can show a quotient of 5 with zero openings. Pair the quotient with live openings and the unemployment direction.
Verify before you call the verdict
Run this checklist before you write target, watch, or skip next to a city. Each item is a thing to confirm, not a topic to consider. If you cannot check an item, the verdict is provisional and you should say so.
Before you assign the label
- The SOC and MSA both exist in the current May 2025 OEWS tables.
- Every OEWS field is recorded with its relative standard error, and cells above 30% are discounted.
- The RPP vintage matches the wage vintage exactly.
- The real-pay delta is computed against your current metro, not the national average.
- The openings figure's geography is confirmed as metro, state, or national.
- No JOLTS number is cited below the state level.
- The concentration figure is a role-specific HHI, not a metro-wide one.
- The location quotient is paired with live openings and the unemployment direction.
- The weighting preset matches your situation, relocation or remote expansion.
Keeping the score current
A metro-role score is a snapshot, and its inputs age at different speeds - so re-scoring means knowing which number moved. Do not re-run the whole model on a schedule; re-run the dimension whose input changed.
LAUS is monthly, so the tightness dimension is the one that shifts fastest; re-read the metro rate and its 12-month arrow before any interview loop in that city. OEWS is annual and arrives as a May vintage, so pay and location quotient move once a year, and the RPP is annual as well - when a new vintage lands, re-run the real-pay division with matched years. Projections Central runs on a ten-year horizon, so demand rarely needs re-scoring within a search. Concentration moves when a dominant employer files a WARN notice or a large firm enters, both of which are events, not schedules.
The honest limits are worth stating. Metro-occupation time-to-fill is not established publicly, so tightness leans on the unemployment rate and direction rather than a measured days-to-fill. The demand-versus-competition ratio is constructed, not published, so it is only as good as the posting counts and profile counts behind it. And the target, watch, and skip cutoffs are this guide's default, not an external standard - if your field has a different baseline openings rate, move the thresholds and keep the method. What stays fixed is the shape: five dimensions, matched vintages, role-specific concentration, and a single defensible label at the end.
Questions job seekers ask
Is it worth relocating for a job in a higher-paying city?
Only after you convert both salaries to purchasing power. Divide each metro's nominal median wage by that metro's Regional Price Parity over 100, using matched-vintage figures. Because a high-cost metro's price level can run nearly 30% above a low-cost state's, a nominal raise can shrink to a real pay cut. If the RPP-adjusted delta is negative, relocation fails the pay dimension no matter how large the headline number looks.
How do I find how many jobs in my field there are by city?
There is no single official metro-occupation openings figure. Build a proxy: OEWS gives the employed base for your SOC in the MSA, Projections Central gives state average annual openings over a ten-year horizon, and live posting counts give current flow. Divide openings by incumbents to get an openings-per-incumbent ratio. Never cite JOLTS for a metro number - JOLTS stops at state level except as research estimates.
How do I compare job markets between two cities for my role, not the average worker?
Score each city on the same five dimensions - real pay, demand versus competition, tightness, concentration risk, and pay level - using the same public inputs. National best-cities lists rank metros for an average worker in a given year and go stale when hiring shifts. Scoring one SOC in one MSA at a time gives you a role-specific comparison two people would reproduce identically.
What is a good location quotient for job hunting?
A location quotient above 1.0 means your occupation is more concentrated locally than nationally, and a quotient of 5 means five times more concentrated. But concentration is not hiring. A company town can show a quotient of 5 and zero openings. Always pair the location quotient with live openings and the unemployment direction before reading it as opportunity rather than dependence on one dominant employer.
How do I know if a city depends on a single employer for my role?
Compute a role-specific Herfindahl-Hirschman Index from the share of local postings held by the top employers, not a metro-wide one. The average US labor market has an HHI of 4,378, roughly 2.3 recruiting employers, and 60% of markets exceed the 2,500 highly-concentrated line. A large metro can still be a two-employer town for a niche SOC, which is a real bargaining and layoff risk.
Put this to work
Reading about the job search is not the job search.
Paste your career in once. I write the resume, then every week I rank the live openings against your history, tailor a resume and a cover letter to the best of them, and keep going until you land. You press send, and that is the whole of your part.
- 140+ curated roles a week, found, written, and scored for you.
- Every bullet stays inside what your history actually supports.
- Queued, submitted, interviewing, offer, all in one place instead of a spreadsheet.
500 free credits on sign-up. No card.