Open books

How we estimate

We’d rather be slightly boring and checkable than flashy and mysterious. Here’s the whole machine.

Last reviewed Nov 1, 2026

Estimates are not quotes. Contractors set their own prices. Use our band to sanity-check bids.

The formula

Labor = job_hours × local_hourly_wage × contractor_markup
Materials = baseline_materials × regional_materials_factor
Total = Labor + Materials
Range mixes low/mid/high hours & materials with p10 / mean / p90 wages

Markup (2.0× / 2.25× / 2.5×) is our stand-in for billed labor — benefits, truck, overhead, profit. It is not a BLS number. Materials baselines are editorial assumptions listed below; we dampen regional differences so materials don’t swing as wildly as wages.

Job baselines

JobTradeHours L/M/HMaterials L/M/HUnit
Central AC Replacementhvac8/12/16$3,200/$4,500/$6,500job
Furnace Replacementhvac6/9/14$1,800/$3,200/$5,200job
Heat Pump Installationhvac10/16/24$4,500/$7,500/$12,000job
Water Heater Replacementplumber3/4.5/7$550/$950/$1,800job
Toilet Installationplumber1.5/2.5/4$120/$280/$550job
Pipe Repairplumber2/3.5/6$40/$150/$450job
Drain Cleaningplumber1/1.5/3$0/$25/$100job
Roof Replacementroofer0.08/0.12/0.18$4/$6/$9sqft
Roof Repairroofer2/4/8$75/$250/$800job
Gutter Installationroofer4/7/12$400/$900/$1,800job

Sources

Tip from us: if a bid is far outside the band, ask which line items changed — tonnage, tear-off layers, panel upgrade — before assuming someone “ripped you off” or found a miracle price.