The model
National typical band×Metro cost multiplier=The range you see
The first input is a national typical band for the kind of project you describe. It is keyed on the answer you give, not on a physical unit — because the questionnaire does not collect physical units. Where a project has a quantity it is captured as a range (“3 to 7”) rather than as a number; where it does not, the question asks about scope instead. So quantity and material are folded into the band's own width, and the band is selected rather than computed. The table further down shows every band we hold and the exact answer each one is keyed on.
Before you answer anything, a trade's default band is shown: its typical-project span. Once you answer the question that actually drives cost, the band keyed to that answer replaces it. If we hold no band for an answer, the default is shown again — never nothing, and never a figure we made up to fill the space.
The second input is the metro cost multiplier: a published price-level index for the metro, divided by 100. The index is the BEA Regional Price Parities — the U.S. Bureau of Economic Analysis's measure of what goods and services cost in a metropolitan area, all items, expressed as a percentage of the national level. The national level is 100 by construction, so the national multiplier is exactly 1.000. A ZIP inside a market we price takes that market's row; a ZIP we can place only in a state takes the state's figure from the same index; a ZIP we cannot place at all takes the national row. The multiplication runs in the database in exact decimal arithmetic and is rounded to whole cents once, so no floating-point drift enters a money figure.
Say plainly what that index is: a consumer price-level measure, not a construction cost index. It tracks what households in a metro pay for housing, goods and services, not what a contractor there pays for labor, materials and permits. We use it because it is the citable proxy — every figure is published, public and linked from its own row below, so any multiplier can be re-derived from its citation. The construction-specific indexes are licensed, and a number we cannot show you is not a source we can cite.
Every surface reads those same two tables and applies that same rounding — the estimate in the questionnaire, the tables in a cost guide, the figures on a city page and the sample table on the home page. There is no second set of figures anywhere on this site, and no page holds a number of its own.
A worked example
Both inputs below are read from the rows that hold them, and so is the result — it is not multiplied out on this page. This is windows in Denver, CO, the metro whose multiplier sits furthest from the national baseline, so the adjustment is visible rather than lost in rounding.
National band$7,000 – $9,000typical window replacement project
×
Denver, CO1.058regional cost multiplier
=
Typical range there$7,406 – $9,522typical window replacement project in Denver, CO
The same two rows produce the figure on our Denver, CO page and in the questionnaire's estimate. If they ever disagreed, one of them would be reading a row that no longer exists.
The national bands
Every band we hold for the trades on this site, with the figure before any metro is applied and the source it came from. Some bands are cited directly to a published cost guide; others are derived from figures that are, and the source line says which — arithmetic a reader can check is worth more than an implied second citation.
Why it is never a quote
There is no pricing engine behind these figures, and there is no bidding. Nobody has seen your house. What we hold is two curated numbers per figure; what a quote requires is your roof's pitch and decking, the condition of your window openings, what your city's permit desk is doing this month, and what a particular contractor's calendar is worth to them this week. We hold none of that, and a number produced without it is a planning figure.
So the wording on this site is deliberate and consistent: typical cost range, never “your price” and never “quote”. A range is what we can honestly publish. A quote is a contractor's offer, made after a visit, and only they can make it.
The ranges are wide on purpose. Narrowing them would mean claiming precision the two inputs cannot support, and a tight range that is wrong is worse for planning than a wide one that is right.
What we do not know
The honest limits of the model, stated rather than buried in a fallback that never announces itself:
- A multiplier is a market average, not a bid. It describes how prices in a metro compare with the country as a whole. It does not know what any contractor in that metro will charge you.
- The index is a consumer price-level index, not a construction cost index. The BEA Regional Price Parities weight what households buy — housing above all — not what trades charge. Local labor rates, material freight, permit fees and how many contractors compete for your job are all invisible to it, so a metro where housing is dear but trades are plentiful can be over-adjusted, and the reverse under-adjusted. It is the published, citable proxy — every row above links its figure — and every row's own source line says it is a proxy.
- ZIP coverage is partial. We map 27 ZIP codes across 9 markets. A ZIP we do not map to a market takes its state's multiplier from the same index where its prefix places it in a state, and the national row (multiplier 1.000) otherwise; either way the figure is labeled for the state or the country rather than dressed up as your city's.
- A market we do not price shows a national range. That is the right answer rather than an error — a national typical range is useful and honest — but it is not a local figure, and we do not present it as one.
- A trade with no band shows no figure at all. Where we hold nothing, a page says so instead of borrowing another trade's number or another metro's. That is not hypothetical: a trade sat unpriced here until we had decided how to key it, and it showed no figure the whole time.
- Figures age. A figure is only as fresh as its stalest input, so the honest date for a range is the older of its two rows' retrieval dates — which is why every table above prints them per row rather than stamping the page with a single date. Cost data last refreshed 2026-09-06. The oldest input on this page was retrieved 2026-09-06.
How guides are sourced
A cost guide is a document, written and edited by Home Services Marketplace Cost Desk— the editorial function of Home Services Marketplace itself, with no independent review board behind it. Its figures are not editorial at all: every dollar amount in a guide is the same two rows described above, rendered through the same code as everywhere else, and the desk cannot type a price into one. Who the desk is, and what it will and will not print, is on editorial standards.
The written sections can carry their own citations. Where a guide makes a checkable claim about the world — a state's contractor licensing threshold, an insurance department's position on a building material, federal guidance on indoor humidity — the section carries source links, and they render beside the claim rather than in a bibliography at the bottom that nobody scrolls to. Sections that cite nothing show no source line at all: an empty “Sources” heading is a claim of its own.
The methodology block on each guide reads its provenance from the same rows this page publishes, so a guide can never carry an authored second opinion about where its own numbers came from. Browse the cost guides to see it in place.
Everything on this page is read from the reference tables when the page is requested. None of it is a copy of them.