Skip to content
Home CostDoctor
Roofing costsRoof calculatorCheck a quoteCompare quotesMethodology

Where the numbers come from

A cost platform is only as good as its provenance. Every price row in our database carries a source, a licence note, the period it describes, the date we collected it, and a status flag — verified, modelled, or sample. This page is that table, rendered.

How reliable is this?

Updated as data lands

Labour
Government data

Bureau of Labor Statistics wage release for May 2025, occupation 47-2181 (roofers), across 15 metro areas.

Materials
Partly observed

2 of 24 material rows come from observed prices; the rest are modelled.

Local coverage
17 cities

Metro-level pricing in 15 markets and written local guidance for 17 cities. Anywhere else falls back to national figures, and the confidence score says so.

Geometry
Exact

Pitch multipliers, roof area and material quantities are arithmetic, not estimates.

About 65% of a typical re-roof is still priced from modelled rows, so every estimate is capped at a confidence of 60 until that changes. We would rather show you that than a confident-looking number we cannot stand behind. Sources and licences

Connected

Sources currently feeding estimates

Right now this is a short and uncomfortable list, and we would rather show you that than dress it up.

Home Cost Doctor internal model (sample data)

Internal model

Connected

Our own derivation. Shipped so the application is functional before real feeds are connected. Must not be presented to users as observed market pricing.

Reliability weight 0.40Price rows 50Reviewed 2026-08-15

Observed material prices

Publicly available market information

Connected

Prices we observed ourselves from publicly listed retail and distributor sources, each row recording its own source, URL and observation date. We publish the derived cost range, never a third party's dataset. Where a competitor's published range is recorded it is marked as a benchmark and never becomes a priced record.

Reliability weight 0.70Price rows 2Reviewed 2026-08-15

BLS Occupational Employment and Wage Statistics

Government / open statistics

Connected

US federal government work, generally in the public domain. Ingested: metro-level roofer wage data (SOC 47-2181), May 2025 release, via scripts/ingest-bls-oews.ts. The wage is BLS; the labour burden multiplier that turns a worker's wage into an employer's crew cost is ours, so those records are modelled rather than verified.

Reliability weight 0.92Price rows 15Reviewed 2026-08-15
www.bls.gov →

BLS Producer Price Index - roofing materials

Government / open statistics

Connected

US federal government work, generally in the public domain. Ingested: series WPU1361, prepared asphalt and tar roofing and siding products, via scripts/ingest-ppi.ts. Used for the published price history and to carry anchored material prices forward. The index measures producer price movement and is not itself a price.

Reliability weight 0.90Price rows 0Reviewed 2026-08-15
www.bls.gov →

Home Cost Doctor homeowner submissions

First-party (our users)

Connected

Voluntarily submitted by homeowners with explicit consent, moderated before use, and aggregated so no individual project is identifiable. This is the intended long-term backbone of the model.

Reliability weight 0.75Price rows 0

The ingestion roadmap

Sources configured but not yet connected

These are already rows in the pricing_sources table with their licence terms recorded. Connecting one is an ingestion job, not an architecture change.

US Census Building Permits Survey

Government / open statistics

Planned

US federal government work, generally in the public domain. Intended use: construction activity as a demand proxy per metro. Not yet ingested.

Reliability weight 0.85Price rows 0
www.census.gov →

Municipal permit fee schedules

Government / open statistics

Planned

Published fee schedules from each authority having jurisdiction. Intended use: replacing our modelled permit allowance with the actual local schedule. Must be collected per jurisdiction and re-checked on their revision cycle.

Reliability weight 0.95Price rows 0

OpenStreetMap

Open data

Planned

Open Database Licence (ODbL). Commercial use is permitted with attribution, and share-alike obligations attach to derivative databases. Intended use: building footprints to pre-fill roof area. Legal review required before any derivative database is published.

Reliability weight 0.70Price rows 0
www.openstreetmap.org →

Contractor-submitted pricing

Contractor submitted

Planned

Supplied by participating contractors under agreement. Carries obvious selection bias and must be weighted accordingly, never used as a sole source for a market.

Reliability weight 0.60Price rows 0

Commercial construction cost database (licensed)

Commercially licensed

Planned

Commercial cost databases such as RSMeans require a paid licence. Do not scrape, redistribute or derive a competing database from them. Ingest only under an executed licence that permits derived estimates.

Reliability weight 0.95Price rows 0

Ground rules

What we will and will not do to get data

We will not build the business on scraping

Commercial construction cost databases exist because good localised cost data is genuinely valuable and expensive to produce. Scraping one to build a free competitor creates copyright, database-right and contract problems, and it produces a dataset we could never defend or stand behind. If we want that data, we license it.

Automated collection is checked case by case

Where publicly posted prices are useful, collection is assessed individually against that site’s terms, its robots rules, applicable copyright and database rights, and the law in the relevant jurisdiction — before anything is collected, not after.

Open data obligations are obligations

OpenStreetMap is available under the Open Database Licence. Commercial use is permitted, with attribution required and share-alike obligations attaching to derivative databases. That is a real constraint on how a derived building-footprint dataset could be published, and it needs legal review before we rely on it.

Our own users are the endgame

What a homeowner actually paid, with their consent and stripped of anything identifying, is the one dataset nobody else can copy. It is also the only one that lets us measure our own accuracy: we store the estimated, quoted and actually-paid figures separately for exactly that reason. Contribute yours.

Provenance fields

What we record about every price

source_name / source_urlWho published it and where
source_typeGovernment, open data, licensed, first-party, contractor, internal model
license_notesIn plain language, what we are allowed to do with it
geo_scope_type / geo_scope_idExactly which place the price describes
unitPer square, per hour, per ton, per linear foot, each
low / median / highNever a single point estimate
effective_dateThe period the price describes
collected_dateWhen we captured it
methodologyHow it was derived, in a sentence
confidence_scorePer record, feeding the estimate-level score
data_statusverified, modeled or sample - and it is NOT NULL
sample_sizeHow many observations sit behind it, where applicable

data_status being non-nullable is deliberate. An unlabelled number cannot enter the system, which means we can never accidentally present a placeholder as a fact.