How the Trade Demand Index works
What the number means
The Trade Demand Index (TDI) is a 0–100 score for how tight the labor market is for a given trade in a given state, right now, relative to every other trade and state we track. A 90 means “among the tightest markets in the country this month.” A 20 means “comparatively slack.” It is not a prediction and it is not a wage estimate — it’s a snapshot, recomputed every month, of demand pressure.
Alongside the TDI, every trade × state pair also gets a Shortage Signal — a plain-language demand-minus-supply gap. Positive means job postings and an aging workforce are outrunning the pipeline of new workers coming in behind them.
What goes into it
| What we measure | Source | Weight | Cadence |
|---|---|---|---|
| Job-posting intensity (per 1,000 workers) | Adzuna | 25% | Monthly |
| Projected 10-year employment growth | State workforce agencies, via Projections Central | 20% | Annually |
| Retirement pressure (workforce age) | Census | 20% | Annually |
| Wage, adjusted for local cost of living | BLS + BEA | 15% | Annually |
| Apprenticeship pipeline vs. openings | Department of Labor | 10% | Annually |
| How resistant the work is to AI/automation | O*NET | 10% | Rarely |
The weights above are version-locked — if we ever change them, we’ll bump the methodology version and say so, and every historical number stays interpretable against the version it was computed under.
Why postings come from one source
Job-posting counts come from Adzuna, queried the same way every month for every trade and state. Pooling postings from more job boards without deduplicating them just inflates the count and makes month-to-month comparisons meaningless — a posting for the same opening often appears on several boards. One clean source, applied consistently, beats a messy sum of several. If a state’s monthly posting count is thin enough that the number is noisy, we flag the row rather than hide it or smooth it away.
What's not in the score yet
A few inputs we’d like to have aren’t reliably available at the state level for every trade — most notably a precise breakdown of workforce age by state and trade, and apprenticeship-completion counts by state. Where we don’t have a real number, we leave that input blank for that row rather than estimate one. A blank input doesn’t zero out a trade’s score — it’s excluded and the remaining inputs are reweighted so a missing annual figure doesn’t unfairly drag a score down.
How we know the number is honest
Before publishing, we checked the index against outside data we didn’t build:
- Growth rankings. The index’s projected-growth component ranks trades in the same order as the federal government’s own occupational growth forecasts — solar installation projected to grow fastest, then electrical work, then HVAC, then roofing, then plumbing. Six for six, same order.
- Workforce size. Summing our state-by-state employment figures for electricians lands within the range you’d expect once you account for the fact that our figures are drawn from a slightly older baseline than the most current national count — and the gap between the two is almost exactly explained by the growth the government itself has been projecting for the trade since then.
- The broader hiring climate. National data on employer job openings in construction shows a market that’s recovering, not collapsing, through 2026 — the same picture our own monthly numbers show across the trades we track.
None of this makes the index perfect. It means that when the index says a trade is tightening in a state, that’s not an artifact of how we built it — it shows up in independent government data too.
Read the number, don't over-read it
- The TDI compares trades and states to each other in the same month. It doesn’t tell you a trade is objectively “good” or “bad” — only how it stacks up right now.
- A single month’s number can be noisy, especially for smaller trades in smaller states. Look at the trend, not one snapshot.
- The Shortage Signal is a gap indicator, not a job-count forecast. A large positive number means the pressure is building — it doesn’t promise a specific number of openings next year.