How the trade demand score is calculated
Our 0–100 score compares the workforce a city's households can support with the pros listed on HireLocal. Here is exactly how it works, what goes in, and where it stops.
The trade demand score is a 0–100 opportunity index for one trade in one city. From the city's households, home-ownership share and housing age (national statistics offices) we estimate two things: how many jobs of each kind come up per year, and how large a workforce the city can support (U.S. BLS employment per household, adjusted for local tenure and housing age). We then compare that supportable workforce with the pros listed on HireLocal. Nothing listed scores 100; listings matching the supportable workforce score 50; twice as many score near 1.
Methodology updated
Households in, three numbers out
tenureFactor = (owners + renters × renterWeight) / national mix // 1.0 for a nationally-average city
ageFactor = (1 + ageSensitivity × (ageIndex − 1)) / national // ageIndex 0.8 (new) … 1.4 (old stock)
jobsPerYear = households × tenureFactor × incidence × ageFactor // per service
supportedPros = households × tenureFactor × ageFactor × outlook
× BLS employment / 127,482,865 US households // per trade
coverage = listedPros / supportedPros
score = 50 + w × 50 × (1 − min(coverage, 2)), w = min(1, supportedPros / 20)In plain terms: a city with the national mix of owners, renters and housing age gets exactly the national ratios. Renter-heavy or newer cities support fewer roofers and more movers; older, owner-heavy cities the reverse. The supply side counts distinct providers listed for any of the trade's services in that city. Markets that support fewer than about twenty pros are pulled toward 50 so a village with nobody listed does not outrank a metro with nobody listed.
Plumber in Houston, TX, computed live
| Households | 916,536 |
| Owner-occupied share | 42 % (US: 65 %) |
| Median year built | 1981 (US: 1980) → age factor 0.99 |
| Tenure-adjusted households | 788,776 |
| Plumber — jobs per year | 234,661 |
| Pros the market supports | 3,022 |
| Listed on HireLocal | 0 |
| Coverage | 0 % |
| Score | 100 / 100 |
Sources: U.S. Census Bureau, American Community Survey 5-year estimates (2019–2023); U.S. BLS OEWS & Employment Projections; HireLocal listings.
From coverage to band
| Listed ÷ supportable | Score | Band |
|---|---|---|
| 0 % | 100 | Underserved |
| 25 % | 88 | Underserved |
| 50 % | 75 | Underserved |
| 60 % | 70 | Underserved |
| 100 % | 50 | Balanced |
| 140 % | 30 | Balanced |
| 200 % | 1 | Crowded |
70 and above is underserved (listings cover at most 60 % of the supportable workforce), 30–70 is balanced, below 30 is crowded (more than 1.4× the supportable workforce listed). The thresholds are fixed, so scores are comparable across cities and trades.
Every number the model uses
Household counts, owner-occupied shares and housing age come from national statistics offices; the workforce ratios from the U.S. Bureau of Labor Statistics (Occupational Employment and Wage Statistics and Employment Projections, applied per household to every market). The job-frequency table below is our starting estimate, anchored to public references and checked so that a nationally-average city reproduces the BLS ratios exactly; rows are marked as assumptions until verified.
Household statistics by market
- U.S. Census Bureau, American Community Survey 5-year estimates — 2019–2023, public domain
- CBS StatLine, Kerncijfers wijken en buurten 2023 — 2023, CC BY 4.0
- CBS, Kerncijfers per postcode (PC4) 2023 — 2023, CC BY 4.0
- CBS StatLine, Huishoudens; samenstelling, grootte, regio — 1 January 2025, CC BY 4.0
- GUS, Bank Danych Lokalnych — Narodowy Spis Powszechny 2021 — 2021 census, open data, attribution
- INE, Censo de Población y Viviendas 2021 — 1 January 2021, open data, attribution
- CYSTAT, Census of Population and Housing 2021 — 1 October 2021, open data, attribution
Trade parameters
| Trade | BLS employment | Outlook | Renter weight | Age sensitivity |
|---|---|---|---|---|
| Plumber | 469,000 | ×1.05 | 0.5 | 1 |
| Electrician | 712,000 | ×1.15 | 0.4 | 1 |
| HVAC Technician | 415,000 | ×1.15 | 0.4 | 0.8 |
| Roofer | 140,000 | ×1 | 0.15 | 1 |
| Carpenter | 720,000 | ×1 | 0.3 | 0.6 |
| Painter | 370,000 | ×0.98 | 0.4 | 0.6 |
| Landscaper | 1,100,000 | ×1 | 0.3 | 0 |
| House Cleaner | 870,000 | ×0.98 | 1 | 0 |
| Mover | 200,000 | ×0.95 | 1.3 | 0 |
| Handyman | 1,470,000 | ×1.05 | 0.7 | 0.8 |
| Pest Control Technician | 130,000 | ×1.05 | 0.7 | 0.5 |
| Appliance Repair Technician | 40,000 | ×1 | 0.8 | 0.3 |
| Pool & Spa Technician | 30,000 | ×1 | 0.1 | 0.3 |
| Smart Home Installer | 80,000 | ×1.2 | 0.8 | 0 |
| Foundation Specialist | 55,000 | ×1.05 | 0.1 | 1 |
| Concrete Mason | 210,000 | ×1 | 0.15 | 0.6 |
Job frequency per household, all 122 services
| Service | Jobs / household / year | Basis | Status |
|---|---|---|---|
| Plumber | 0.3 | ≈ one plumbing service call per household every 3 years (AHS repair module range) | assumption |
| Emergency Plumber | 0.05 | urgent subset (~1 in 6) of plumbing calls | assumption |
| Drain Cleaning | 0.12 | clog calls ≈ 40 % of plumbing service volume | assumption |
| Water Heater Repair | 0.08 | 8–12 yr unit life plus repairs | assumption |
| Tankless Water Heater Installation | 0.01 | ≈ 1 in 8 water-heater replacements go tankless | assumption |
| Water Softener Installation | 0.01 | 15-yr unit life × ~15 % of homes with softeners | assumption |
| Sump Pump Installation | 0.01 | 10-yr unit life × ~10 % of homes with sumps | assumption |
| Whole-House Water Filtration | 0.015 | whole-home + under-sink installs | assumption |
| Sewer Camera Inspection | 0.02 | home sales + recurring clog diagnostics | assumption |
| Hydro Jetting | 0.02 | ≈ 1 in 6 drain-cleaning jobs escalate | assumption |
| Electrician | 0.2 | ≈ one electrical service call per household every 5 years | assumption |
| Wiring | 0.04 | rewiring / circuit additions, age-driven | assumption |
| Panel Upgrade | 0.015 | 30–40 yr panel life + EV/heat-pump upgrades | assumption |
| EV Charger Installation | 0.01 | EV adoption pace, home-charger share | assumption |
| Whole-Home Generator Installation | 0.005 | standby generator penetration growth | assumption |
| Solar Panel Installation | 0.006 | residential PV additions per year (SEIA) | assumption |
| Home Battery Storage Installation | 0.002 | ≈ 1 in 3 new PV systems add storage | assumption |
| Smart Switch Installation | 0.01 | small-job electrical, renter-friendly | assumption |
| HVAC Repair | 0.35 | annual maintenance visit for ~1/3 of households + repairs | assumption |
| HVAC Installation | 0.05 | 15–20 yr system life | assumption |
| AC Installation | 0.04 | central AC replacement cycle | assumption |
| Furnace Repair | 0.12 | heating-season repair calls | assumption |
| Heat Pump Installation | 0.015 | electrification pace | assumption |
| Mini-Split Installation | 0.01 | ductless additions | assumption |
| Smart Thermostat Installation | 0.03 | device adoption pace | assumption |
| Air Duct Cleaning | 0.05 | recommended every 3–5 yrs for ducted homes | assumption |
| Dryer Vent Cleaning | 0.08 | annual recommendation × share of households buying | assumption |
| Roofer | 0.05 | 20–25 yr roof life (NRCA) + inspections | assumption |
| Roof Repair | 0.06 | storm and leak repairs | assumption |
| Gutter Installation | 0.03 | 20-yr gutter life + guards | assumption |
| Skylight Installation | 0.005 | additions + replacements | assumption |
| Attic Insulation | 0.02 | energy-retrofit programmes | assumption |
| Solar Shingle Installation | 0.001 | niche of roof replacements | assumption |
| Carpenter | 0.08 | trim, framing, repair calls | assumption |
| Cabinet Installation | 0.02 | kitchen cycle ~20 yrs | assumption |
| Deck Building | 0.015 | deck life 15–20 yrs × share of homes with decks | assumption |
| Fence Installation | 0.02 | fence life 15–20 yrs × share of homes with fences | assumption |
| Flooring Installation | 0.04 | room-level flooring replacement cycle | assumption |
| Window Installation | 0.02 | 20–30 yr window life, whole-house every ~25 yrs | assumption |
| Pergola Building | 0.004 | outdoor-living additions | assumption |
| Sauna Installation | 0.001 | niche wellness build-outs | assumption |
| Cold Plunge Installation | 0.0005 | niche wellness build-outs | assumption |
| Murphy Bed Installation | 0.002 | niche, renter-plausible | assumption |
| Built-in Closet Installation | 0.005 | closet systems | assumption |
| Catio Building | 0.0005 | niche pet enclosures | assumption |
| Painter | 0.1 | ≈ one hired painting job per household per decade | assumption |
| Interior Painting | 0.1 | room repaint cycle 5–7 yrs, partly DIY | assumption |
| Exterior Painting | 0.04 | exterior repaint every 7–10 yrs (owners) | assumption |
| Cabinet Refinishing | 0.008 | kitchen refresh alternative to replacement | assumption |
| Limewash Exterior Painting | 0.002 | niche finish | assumption |
| Microcement Application | 0.001 | niche finish | assumption |
| Garage Epoxy Flooring | 0.005 | garage floor coatings | assumption |
| Landscaper | 0.3 | share of households hiring any landscaping work per year (NALP) | assumption |
| Lawn Care | 0.4 | recurring mowing contracts: ~25 % of homes with lawns × seasonal visits collapsed to jobs | assumption |
| Tree Service | 0.06 | trimming/removal for treed lots | assumption |
| Lawn Aeration | 0.05 | annual service for a minority of lawns | assumption |
| Lawn Overseeding | 0.05 | annual service for a minority of lawns | assumption |
| Holiday Light Installation | 0.02 | seasonal, ~2 % of homes hire | assumption |
| Artificial Turf Installation | 0.003 | niche, drought regions | assumption |
| Stump Grinding | 0.01 | follows tree removal | assumption |
| Mulching & Delivery | 0.05 | spring service | assumption |
| Mosquito Yard Treatment | 0.04 | seasonal, warm/humid regions | assumption |
| Outdoor Lighting Installation | 0.008 | landscape lighting | assumption |
| Xeriscaping | 0.003 | niche, arid regions | assumption |
| Hardscaping | 0.015 | patios/paths | assumption |
| House Cleaning | 1.5 | ~10 % of households buy recurring cleaning (BLS CEX) × ~15 visits/yr | sourced |
| Deep Cleaning | 0.15 | move-in/out and seasonal deep cleans | assumption |
| Pressure Washing | 0.08 | annual exterior wash for a minority of homes | assumption |
| Soft Washing | 0.02 | subset of exterior washing | assumption |
| Carpet Cleaning | 0.15 | annual clean for carpeted homes, renter move-outs | assumption |
| Gutter Cleaning | 0.15 | 1–2×/yr for homes with trees | assumption |
| Window Cleaning | 0.1 | annual for a minority of homes | assumption |
| Chimney Sweep | 0.05 | annual for homes with working fireplaces | assumption |
| Airbnb Turnover Cleaning | 0.4 | ~1.5 % of dwellings are STRs × ~30 turnovers/yr | assumption |
| Movers | 0.05 | ~12 % of households move per year (ACS) × ~40 % hire movers | sourced |
| Moving Company | 0.03 | long-distance / full-service subset of moves | sourced |
| Junk Removal | 0.05 | moves, cleanouts, renovations | assumption |
| Piano Moving | 0.002 | niche specialty moves | assumption |
| Senior Moving & Downsizing | 0.005 | downsizing moves | assumption |
| Estate Cleanout | 0.005 | estate + hoarding cleanouts | assumption |
| Handyman | 0.6 | general repair calls (JCHS Improving America's Housing) | assumption |
| Drywall Repair | 0.08 | patching after leaks, moves | assumption |
| Door Installation | 0.04 | interior/exterior door replacement | assumption |
| Bathroom Remodel | 0.02 | bathroom cycle ~20 yrs, owners | assumption |
| Kitchen Remodel | 0.012 | kitchen cycle ~20–25 yrs, owners | assumption |
| Garage Door Installation | 0.02 | 15–20 yr door life + openers | assumption |
| TV Mounting | 0.05 | TV purchases + moves | assumption |
| Furniture Assembly | 0.08 | flat-pack purchases + moves | assumption |
| Baby-Proofing | 0.01 | births per household | assumption |
| Picture & Gallery Wall Hanging | 0.02 | moves + décor | assumption |
| Pest Control | 0.25 | ~20–25 % of households use a pest service per year (NPMA) | sourced |
| Termite Treatment | 0.02 | inspections + treatments, owners | assumption |
| Bed Bug Treatment | 0.02 | dense-housing driven | assumption |
| Rodent Removal | 0.05 | seasonal rodent calls | assumption |
| Wildlife Removal | 0.01 | raccoon/squirrel/bat exclusions | assumption |
| Appliance Repair | 0.25 | ≈ one appliance repair per household every 4 years | assumption |
| Refrigerator Repair | 0.06 | unit life 10–15 yrs, repair share | assumption |
| Washer Repair | 0.06 | unit life ~10 yrs, repair share | assumption |
| Dryer Repair | 0.05 | unit life ~12 yrs, repair share | assumption |
| Dishwasher Repair | 0.04 | unit life ~10 yrs, repair share | assumption |
| Oven & Stove Repair | 0.04 | unit life 13–15 yrs, repair share | assumption |
| Garbage Disposal Repair | 0.03 | unit life ~10 yrs, US-centric | assumption |
| Pool Maintenance | 0.6 | ~8 % of US homes have pools × monthly service (national average; regionally concentrated) | assumption |
| Pool Installation | 0.003 | new residential pools per year | assumption |
| Hot Tub Installation | 0.004 | hot-tub sales per household | assumption |
| Pool Resurfacing | 0.004 | 10–15 yr plaster life × pool share | assumption |
| Hot Tub Repair | 0.01 | repair share of installed base | assumption |
| Smart Home Installation | 0.04 | professional installs share of device adoption | assumption |
| Security Camera Installation | 0.04 | camera adoption pace | assumption |
| Doorbell Camera Installation | 0.05 | video doorbell adoption pace | assumption |
| Smart Lock Installation | 0.03 | smart lock adoption pace | assumption |
| Mesh Wi-Fi Installation | 0.03 | network upgrades | assumption |
| Home Theater Installation | 0.01 | AV installs | assumption |
| Foundation Repair | 0.01 | settlement/crack repairs, soil-dependent | assumption |
| Basement Waterproofing | 0.01 | homes with basements, wet climates | assumption |
| Crawl Space Encapsulation | 0.004 | humid regions with crawl spaces | assumption |
| French Drain Installation | 0.006 | drainage fixes | assumption |
| Stamped Concrete | 0.005 | patios/driveways decorative share | assumption |
| Paver Installation | 0.012 | patios/walkways | assumption |
| Retaining Wall Building | 0.006 | sloped lots | assumption |
| Driveway Sealcoating | 0.04 | every 2–3 yrs for asphalt drives × share of homes | assumption |
| Brick Repointing | 0.01 | masonry homes, age-driven | assumption |
What this score is not
It is not a labour-market shortage index. The supply side counts pros listed on HireLocal, so a high score means room in this directory, not a city without tradespeople. Demand is modeled from public statistics, not measured from first-party quote volume or searches yet. Workforce ratios are U.S. figures applied per household to every market; European job frequencies may differ. Treat the numbers as a calibrated estimate, pair them with salary data and local knowledge, and tell us where they look wrong.
Does the score measure customer demand?
It models it. Demand comes from public statistics — how many households a city has, how many own their home, how old the housing is — combined with how often each kind of job comes up per household and how large a workforce a population supports (U.S. BLS occupational employment). It is not measured from first-party signals such as quote volume or searches yet; that layer is next and will be documented here when it lands.
Why does almost every city look underserved?
Because the supply side counts pros listed on HireLocal, not every pro in town. The score is honest about that: a high score means there is room on HireLocal for that trade in that city — not that the city lacks tradespeople. Read it as directory coverage, and pair it with salary data and local knowledge before making career decisions.
How often is the score updated?
The listing count is read from the directory whenever a page is rendered (pages refresh at least daily), so a new pro in a city moves that city's score within a day. Household statistics change with each census or survey release — the source and vintage are printed under every chart. Snapshots are stored for the trend lines.
What changed in September 2026?
The model moved from city population to households, home ownership and housing age from national statistics offices, and the supply side is now relative to market size: ten listed pros used to count as a saturated market whether the city had 20,000 or 8 million people. Scores changed for most cities as a result; the bands keep their meaning.