CostCandor

= published prices × your house

Index

  • building permits
  • state audit reports
  • public bid tabulations

Price records

Our calculators publish a band. This section takes public pricing records — building permits, state audit reports, public bid tabulations — and asks a narrower question than you might expect: can this record check our band at all? Often it cannot, and the reason it cannot is the useful part.

Permit data

LA re-roof permits, 2026

Los Angeles issued 7,477 re-roof permits in the first seven months of 2026, each carrying a dollar figure. Most land on exactly two per-square rates from a table. A minority use a different description form and look self-reported — and even those cannot check our band.

Comparison rejected — most filings carry a schedule rate, and the minority that look self-reported cannot be separated from an incentive to file low

Records retrieved 2026-08-05 · published 2026-08-05

Permit data

Panel upgrades, Seattle & SF

Two cities, two agencies, two differently-named money columns, and the amperage written into the description so the job can finally be identified. Both land above our state-adjusted band for a 100A to 200A service upgrade — and the one bias we can sign points downward, which means the gap is at least this wide.

Band moved — both cities sit above our state-adjusted core band, and the reporting bias runs the wrong way to explain it

Records retrieved 2026-08-07 · published 2026-08-07

Permit data

Sewer footage, San Francisco & Everett

Every price record here has ended the same way: the public file carried a dollar figure and no denominator. San Francisco and Everett carry both — plumbers type the run length into the sewer permit. The denominator turns out not to price the job, which is a worse problem than not having one.

Comparison rejected — the two files that state a run length show the declared price barely tracking it, so a per-foot band has nothing to be checked against

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Water-heater permits, Baton Rouge & Everett

Two permit files at opposite ends of the US cost map write the tank's capacity into the description, so for once the dollar figure has a denominator. Both land above our installed typical for a tank swap — including East Baton Rouge Parish, which is not an expensive market.

Band moved — the installed typical for a like-for-like tank swap is below what permitted work costs in both a low-cost and a high-cost market

Records retrieved 2026-08-07 · published 2026-08-07

Utility program data

Water service lines, Cincinnati

A city water utility publishes the contracted amount for thousands of completed private-side service line replacements — the exact job our water calculator prices. Sixteen columns, and not one of them is a length. Our per-foot band reproduces its middle half at any run between 25 and 105 feet, which is every service line in America.

Comparison rejected — the file that has the price has no length, and the file that has the length is pricing municipal mains rather than a house service

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Chicago electrical permit fees

Chicago publishes the fee it collected on 4,612 new electrical service permits, with the amperage written into the same sentence. Across 4,114 residential-size filings the median fee is $75 — exactly our band's floor, and its exact minimum. Our $250 typical is reached by 68 of them.

Band moved — $75 is confirmed as the floor to the dollar, but our $250 typical is met by 1.7% of filings and our $400 high sits above the top of every source we cite for it

Records retrieved 2026-08-07 · published 2026-08-07

Permit data

Cambridge fixture counts, 2026

Our repipe calculator counts fixtures with a formula we wrote ourselves, beside a line in our own data file saying no public survey of per-home fixture counts exists. Cambridge, Massachusetts publishes one. Refit to 88 new-construction permits, two of our three terms hold and the square-footage term reverses sign.

Band confirmed in part - the base and per-bathroom terms hold and the fixture totals land within 3%, but the square-footage coefficient reverses sign and no dollar figure was tested

Records retrieved 2026-08-07 · published 2026-08-07

Permit data

SF re-roof permits, 2025-26

San Francisco's re-roof permits carry dollar figures that behave like a real distribution rather than a fee table - a median of $16,000 across 5,520 filings. But 94% never state the roof's size, and the figure does not move when the roofing material does, so it cannot check a per-square band in either direction.

Comparison rejected - 94% of filings state no roof size, and the dollar figure does not move with the material

Records retrieved 2026-08-05 · published 2026-08-05

Roofing

Louisiana FORTIFIED roof audit

A state audit published a median re-roof cost for Louisiana homeowners. The one figure our calculator could be checked against turns out to be a model output multiplied by an uncited assumption — so it cannot check anything.

Comparison rejected — the only figure our band could be checked against is one nobody measured

Records retrieved 2026-08-05 · published 2026-08-05

Public bids

Four bids on one roof

A Texas school district opened four sealed roofing proposals for the same building on the same morning in 2019. The highest was 2.39 times the lowest — and the document cannot tell you the roof's size, who won, or what was finally paid.

N/A — not a band check

Records retrieved 2026-08-05 · published 2026-08-05

Permit data

Furnace permits, Seattle

Seattle keeps a permit type called Single-Family/Duplex Furnace, and 5,887 recent filings under it describe a furnace replacement and nothing else. Their median declared cost is $6,100 — above the top of every efficiency tier we publish except the most expensive one. What the file will not tell us is which tier any of them bought.

Band moved — 87.2% of the filings clear the top of our 80% AFUE band, but the file states an efficiency on 1.9% of them, so it cannot say which of our three tiers is wrong

Records retrieved 2026-08-11 · published 2026-08-11

Public bids

Pittsburgh vacant-unit painting bids

A Pittsburgh housing authority asked contractors to price apartment painting per square foot, twice in five weeks. Thirteen sealed bids came back between $0.24 and $6.51 — and the 76-page solicitation never says which square foot it means.

Comparison rejected — the unit price is per a square foot the document never defines

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Furnace change-outs, Kansas City

A Midwest permit file that states the AFUE rating on 71% of its furnace filings and the BTU input on 97%. Priced against it, our full furnace-and-AC change-out band lands on the observed median to within 2.1% — and our furnace-only band is beaten by the median of every efficiency tier it publishes.

Band moved — every furnace-only tier's median clears its published high, while the full change-out band it sits beside survives the same file untouched

Records retrieved 2026-08-11 · published 2026-08-11

Program data

Heat pump rebates, Oregon

A state rebate file with an invoice behind every row — the cleanest cost column we have opened — and no capacity, no equipment type and no unit count anywhere in it. Three fifths of the rows turn out to be one contractor billing one figure over and over.

Comparison rejected — the prices are real and most of them are not independent, and nothing in the file says what was installed

Records retrieved 2026-08-11 · published 2026-08-11

Public bids

Jackson rehab roof bids

A Michigan city bids out re-roofing on ordinary houses one house at a time, on a standard written specification, and publishes every tabulation. Across 25 openings and 102 sealed bids the highest bid averaged 1.52 times the lowest — and only one of the 25 records how big the roof was.

Comparison rejected — one opening in twenty-five states an area, and the specification buys a new roof deck our band does not price

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Boston roof areas, 2026

Our roofing calculator never asks how big a roof is. It takes a footprint, adds an overhang, multiplies by a slope factor and manufactures the area. Boston roofers write their square count into the permit, and the assessor publishes the floor area, storey count and roof shape of every single-family parcel. Joined, the two files let us check that chain for the first time.

Geometry confirmed on the only cohort that can isolate it - our overhang-and-slope chain lands within 6% of the roofer's own square count on one-storey houses, while the floor-area proxy we built for the join fails badly on everything taller, and the per-square dollar band could not be checked at all

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Service permit fees, two cities

Norfolk and New Orleans both write the trade and the job into the permit record, so an electrical service permit can be isolated without guessing at scope text. Across 9,031 filings the median fee is $79.26 and $119.50. Our $250 typical is reached by 3.5% and 5.1% of them.

Band moved — the typical falls from $250 to $175, the lowest figure our own three cited sources can produce, and even that sits near the 88th percentile of both cities

Records retrieved 2026-08-11 · published 2026-08-11

Public bids

Jackson water heater bids

The same Michigan city bought 24 water heaters for 24 houses by sealed bid. The plumbers agreed almost perfectly - half the openings came back within 22% - and the two-paragraph specification they were pricing never states a capacity, an efficiency, or a vent type.

Comparison rejected — the specification never names the appliance, and our band lands on both sides of the bids depending on which appliance it is

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Plumbing permit fees, New Jersey

One state files every construction permit to one schema and splits the fee by trade, so a plumbing-only residential permit can be isolated without reading a word of scope text. Across 123,619 filings in 528 municipalities the median is $84, and the highest municipal median in the state is $203. We publish a typical of $350.

Band moved — the typical falls from $350 to $189 and is flagged as the interpolation it always was; the low and the high are left alone

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

San Francisco roof areas, 2026

Our first San Francisco record was rejected because 94% of re-roof filings state no roof size. The assessor's tax roll states one for every parcel, keyed by the same block and lot. Joined, 3,392 filings finally have a denominator - and the numerator turns out to be the problem instead.

Comparison rejected - the join supplies the missing denominator and the declared cost barely responds to it, with cost per square doubling on the strength of the assessor's storey field alone

Records retrieved 2026-08-11 · published 2026-08-11

Program data

Weatherization invoices, Delaware

A federal program's unit-level invoices, with the home's floor area, year built, fuel and blower-door readings on every row — the denominator four permit records went looking for. It prices nothing, and the one furnace number the file can be made to yield changes by 2.4x depending on which subgroup you take it from.

Comparison rejected — the only furnace figure this file can produce is one we would have had to derive, and it comes out four different ways

Records retrieved 2026-08-11 · published 2026-08-11

Permit data

Water heater permit fees, New Orleans

2,328 filings that name a water heater and nothing else, in a city that types the trade and publishes the fee under CC0. The commonest fee is $20, paid on 53.65% of them. Our band's three numbers are the minimum, average and maximum of 27 city averages — which is not a thing one city's schedule can move.

Comparison rejected — the record is sound and the band is not a band of permit fees; its low, typical and high are three cities' figures, so one city's schedule cannot correct them

Records retrieved 2026-08-11 · published 2026-08-11

Sources we opened and did not use

Choosing which records to open is the part of this no automated check can police: a source dropped quietly leaves no trace. So the discards are listed here with the reason each one failed, and the list grows as the section does.

NYSERDA Residential Existing Homes measure sets that are still moving (data.ny.gov assk-vu73 and 4a2x-yp8g)

A correction to the NYSERDA entry below, which said the existing-homes data stops in 2014. Two of the sets run much later: assk-vu73 carries 71,381 projects completed through 2023-06-29 and 4a2x-yp8g carries 51,934 through 2023-06-30, both with total_project_cost, size_of_home and year_home_built. They still cannot check a trade band. Grouping 4a2x-yp8g by measure_type returns Building Shell 51,406, Heating and Cooling 523 and Water Heater 5, and the cost column is the whole project rather than the measure. EmPower is also a fully subsidised low-income program, so the price is a contracted rate.

Oregon Department of Energy — Community Heat Pump Deployment Program (Socrata tkxi-2tnt)

The owner-occupied sibling of the rental program we did publish, and it is aggregated out of existence. One row per regional administrator, eleven regions plus a tribe, carrying total program funds paid and a count of heat pumps installed. Dividing one by the other gives an average subsidy per machine, not a price: the columns record what the state paid, and the total cost of the job appears nowhere.

Oregon Department of Energy — Energy Efficient Wildfire Rebuilding Incentive Program (Socrata gyr5-56zg, Public Domain U.S. Government)

The one program file we found that publishes the heat pump type — Ducted 70, Ductless 19 — which is precisely the column the rental program withholds. It is also 852 rows of which only 96 carry an installed cost, all of them manufactured homes rebuilt after the 2020 fires, and the costs include a $119 heat pump and a $17,341 one. Ninety-six rows with that spread cannot check anything; the file is cited in the Oregon record as proof that the agency knows how to publish the type.

Delaware Division of Climate, Coastal & Energy — Electric Vehicle Charging Equipment Rebates (Socrata a9zd-p6sk, Public Domain)

The equipment cost is there and the years are wrong. Of 778 rebates, 416 carry a residential award number and not one of them is dated after 2019 — the rest are workplace and fleet chargers running to five figures. Our EV charger guide publishes a 2026 hardware band of $300-$700, and 201 of those 416 residential rows state a charging-station cost of exactly $500.00, so the file would be testing a 2026 band against a 2019 price point that half the sample shares.

Delaware Division of Climate, Coastal & Energy — Green Energy Program Grants (Socrata nsgd-n2gb, Public Domain)

It has the denominator and the wrong machine. Among 6,114 grants, 5,970 residential, the file publishes total_system_costs beside geothermal_capacity_tons — a cost and a tonnage on the same row, which is exactly the pairing our HVAC records keep failing to find. Only 281 rows carry a positive tonnage, and a ground-source system is priced by its loop field: our data prices air-source equipment and has no band a dollars-per-ton geothermal figure could be laid against.

Maryland Energy Administration — Home Performance Energy Efficiency Projects (opendata.maryland.gov 2tuk-rcgi)

1,724 rows, all of them the Home Performance Rebate Program, carrying a total project cost, the state's contribution and an estimated kWh saving. Nothing else: no measure, no home size, no equipment. The Socrata row timestamp is 2012-09-11, so the prices are fourteen years older than the band they would be checking.

City of Mesa, Arizona — Average Cost to Install Residential Gas Service Line (citydata.mesaaz.gov jqv2-6spw)

A published average, which is the failure mode the Louisiana audit taught us to check first. The file is one row per month carrying labor, material and a cost-per-service already divided out — $611.98 in July 2024, $2,347.22 in October, $0 in a month with 250 services installed — with no per-job rows behind it. It is also the utility's own cost to run a new service into a new subdivision, not the customer-side gas line upsize our water-heater data prices.

Homeowner-posted quotes on Reddit r/HomeImprovement and similar community threads

Three separate problems, any one of which is disqualifying. The posts are their authors' copyrighted work, not public records. They routinely carry the city, the house size, and the contractor's name together, which is more identifying detail than we will republish about a private household. And reproducing other people's posts on an ad-supported site is the exact shape of what search engines call scraped content.

Austin, TX building permit open data (data.austintexas.gov, 3syk-w9eu)

The declared-value field is not usable. A single-family remodel permit issued in June 2026 carries a total job valuation of $1. Rows also arrive with the street address, six-decimal coordinates, and the contractor's phone number attached, so nothing could be quoted at the row level anyway.

NYSERDA residential heat pump and existing-homes program datasets (data.ny.gov)

The fields are close to ideal — total project cost, home size in square feet, climate zone — and the data stopped moving years ago. Approvals in the heat-pump set end in December 2019; the existing-homes set ends in 2014. Comparing 2014 prices to a 2026 band measures inflation, not our arithmetic.

U.S. federal contract spending (USASpending API, NAICS 238160 Roofing Contractors)

The API works, the data is federal and free of license and privacy problems, and the awards are the wrong size. The largest roofing contracts run to eight figures on federal facilities — two to three orders of magnitude above a house — and the records carry no quantities to normalise by.

Insurance Information Institute — average wind and hail claim payout

The figure is a useful outside reference point, but the page carries an explicit NAIC restriction on further reprint or distribution and a Verisk copyright on the underlying tables. A single sentence with attribution is defensible; rebuilding their table as our own chart is not, so this stays a footnote elsewhere rather than a record of its own.

Los Angeles Department of Building and Safety — mechanical permits issued 2020 to present (Socrata 67is-svtd)

The city files 292,550 mechanical permits and publishes no money for any of them. There is no cost, valuation, fee or amount column in the file's 31 fields — the scope text is there and the number is not. It is the exact mirror of our four roofing records, which had the number and no denominator, and it is the reason we stopped assuming a permit file contains a price.

Cambridge, MA mechanical permits (Socrata 4rb4-q8tj, PDDL 1.0)

The best equipment inventory we found and no price attached to it. Each of the 4,599 filings counts furnaces, condensers, heat pumps, ductless splits, boilers and fan coils in separate columns — a denominator most portals never publish — but the only dollar fields are a reinspection fee and a triple fee. Tonnage is recorded only for units above 25 tons, which is commercial equipment.

East Baton Rouge Parish mechanical permits (Socrata 7fq7-8j7r, Public Domain)

It states the tonnage and withholds the price. Of 1,622 residential mechanical filings, 835 describe the job in tons — CHANGE OUT, 0-4 TONS is the commonest description in the file — and only 97, six percent, carry a positive project value. Just 45 filings have both. That is the same 94%-blank column that ended our San Francisco re-roof record, and a Gulf South counterweight is exactly what we wanted it for.

City of Chicago building permits — mechanical repair/replacement subset (Socrata ydr8-5enu)

The best-formed description of the lot and almost none of it is residential. Chicago's express permits template the equipment into the text — REPAIR/REPLACEMENT AFFECTING 1 SYSTEMS : 1 CENTRAL FURNACE(make, model, location) — with a reported cost beside it, but only 108 filings between 2023 and July 2026 name a central furnace at all, against 450 naming rooftop packaged units and 92 naming chillers. It is a commercial mechanical file with a residential fringe.

Providence, RI Department of Inspections and Standards permits (Socrata ufmm-rbej, PDDL 1.0)

Two disqualifications, either one enough. The file stopped updating in January 2020, so its prices are six years old against a 2026 band. And the description field is a run-on containing the street address, the applicant's name and the contractor's telephone number before it gets to the work — we do not republish statistics derived from a field we would have to redact.

Cincinnati building permits (Socrata uhjb-xac9) and Montgomery County, MD residential permits (Socrata m88u-pqki)

Both carry a usable cost column and neither describes the job. Cincinnati's description field is a permit category, not a sentence: 48,563 rows read simply HVAC, with no equipment, size or efficiency anywhere. Montgomery County's descriptions are remodel narratives, and the word furnace appears in 16 of 185,914 filings.

Housing Authority of New Orleans roof replacement bid solicitation (HANO IFB 26-911-02)

The invitation names sixteen specific rental houses and their scope, but publishes no roof area and no engineer's estimate — the drawings hold both and are not in the public file. Without a denominator the award amount cannot be turned into anything our calculator produces.

U.S. federal contract spending (USASpending API, NAICS 238320 Painting and Wall Covering Contractors)

The API works and the data is federal, free and unencumbered. What it is not is house painting. Sorted by amount, the top of NAICS 238320 since 2024 is a $19.7m railroad-bridge repaint at the Cape Cod Canal, penstock recoating at Glen Canyon and Hoover Dam, and protective coatings on military facilities — industrial steel, not drywall. Filtering down to $1,000-$40,000 does surface residential-shaped work ('make ready painting', 'prepare and paint walls, ceilings, doors and trim' at $39,400), but the descriptions carry no area, no room count and no coats, so no unit price can be derived from any of them.

American Housing Survey 2023 National Public Use File (U.S. Census Bureau)

The obvious idea, and it is simply not in there. AHS records what households spent on home improvement jobs and also records the home's size, which would have given both a price and a denominator from a nationally representative sample. But its JOBTYPE variable has 37 categories — roofing, siding, water heater, wiring, plumbing fixtures, insulation — and none of them is painting. Grepping the 2023 Value Labels package for 'paint' returns only PAINTPEEL, a housing-adequacy question about peeling paint. Repainting is treated as maintenance, not improvement, so the survey never asks its cost.

City of Topeka, Kansas — bid tabulation, Bid No. 58, Clean, Repair, Paint Montara South Water Tower

A clean, current, machine-readable public painting tabulation: four bidders between $685,800 and $897,235 against a $950,000 engineer's estimate. It is also a sandblasted, fully contained, industrial coating job on a municipal water tower, priced as a single lump-sum line with quantity 1.00 EACH. No area, no comparable surface, and nothing a household will ever buy.

Worcester Housing Authority IFB #26-13, Vacant Unit Task Force Painting (bid opened 2026-04-23)

Closer to our calculator than anything else we found — the bid price form prices by apartment type with the floor area printed on the line (one bedroom 400 sq ft, two bedroom 850, up to five bedroom 1,300), so the denominator we could not get in Pittsburgh is right there. Two things stopped it. The Authority supplies all paint and stain, and the wall specification is a single coat rather than two, so the priced job is not the job our band prices. And no tabulation of the bids received has been published: worcesterha.org returned HTTP 403 to us on 2026-08-11, and the prices therefore do not exist in public at all.

City of Seattle trade permits (cos-data.seattle.gov, c87v-5hwh, Public Domain)

Seattle looked like the obvious place to start, because Seattle Public Utilities issues a side-sewer permit by name and our own permit band cites its fee. The trade permit file does not contain them. Grouping the file by permit type returns eight types — furnaces, refrigeration, mechanical, conveyance, boilers, signs, fire sprinklers and billboards — and no plumbing or side-sewer type at all.

City of Chicago building permits, sewer subset (data.cityofchicago.org, ydr8-5enu)

1,138 filings mention a sewer and exactly 2 mention a lateral. Chicago's building permit file records work on the building; the yard run to the city main is a separate plumbing authorisation that is not in this dataset. What the sewer-mentioning filings do contain is boilerplate — pipe 'within 5 ft of the foundation' — which any length-matching regular expression collects by the hundred.

Hawaii Department of Transportation highway bid tab data (highways.hidot.hawaii.gov, 5f6v-rbhq)

The column set is close to ideal — quantity, unit, awarded and lowest bidder unit price, state estimate. The sewer items are not. Of 45, two carry a linear-foot price for pipe; the rest are manhole adjustments, removals and lump-sum lines whose unit price field reads 0. Two rows in two lettings cannot support anything.

City of Chicago building permits, re-roof subset (data.cityofchicago.org, ydr8-5enu) joined to the Cook County Assessor's single and multi-family improvement characteristics (datacatalog.cookcountyil.gov, x54s-btds)

Both halves of the join exist and the thing being joined does not. The assessor publishes char_bldg_sf, char_type_resd and even char_roof_cnst against a PIN, and the permit file carries pin_list, so this should have been the cleanest key of the three cities we tried. Grouping the permit file by type for descriptions matching a re-roof phrase since 2023-01-01 returns 244 filings in total - 201 express permits, 30 easy permits, 12 renovations and one sign - against 5,362 in Boston and 13,015 in San Francisco over the same window. A Chicago re-roof evidently authorises through some channel that does not land in this dataset, and 244 citywide filings cannot survive a single-family filter.

City of Los Angeles building and safety permits (data.lacity.org, pi9x-tg5x) joined to a county parcel file on the assessor parcel number

The join is available and would not fix what is wrong. Of 48,305 re-roof filings issued since 2023-01-01, 48,300 carry an APN, so a county parcel file would supply the denominator our first Los Angeles record said the file lacked. The numerator is the problem that record already found, and it has not changed: 46,926 filings declare a positive valuation, 37.6% of them are exact multiples of $1,000, and the six commonest declared values are $6,000, $5,000, $4,000, $4,800, $3,000 and $3,600 - figures at or below the material cost of the roofs a denominator would be pricing. Dividing a rate-table output by an area returns the rate table.

Cambridge, MA building permits: addition/alteration (Socrata qu2z-8suj) joined to the Cambridge Property Database

The city where this join was invented, and its roofing collapses. The alteration file is unusually well formed - separate building, electrical, plumbing, gas and HVAC cost columns, an mbl to join on, even a conditioned floor area - but roofing is barely in it. Of 14,172 filings, 1,341 mention a roof anywhere in the description with a positive total cost, and only 64 name a strip or a re-roof. Cambridge classes 3,745 of its 30,156 parcels as single-family, so those 64 would not survive the parcel filter, let alone a scope filter. A join that ends in single digits is not a check, and saying so is cheaper than publishing one.

City of Jefferson, Missouri — bid tabulation, IFB Hot Water Heaters (opened 2015-11-17)

A clean four-bidder tabulation for water heaters and the wrong side of the transaction. The bidders are plumbing supply houses and almost every line is headed UNIT ONLY BID — three of the four entered NO BID against 'unit with installation', and the fourth priced the labour as an $80.00 hourly rate rather than a job. The equipment is commercial too: an 85-gallon 400,000 BTU gas heater and an 80-gallon heavy-duty electric. A material price for a boiler-room appliance cannot check an installed residential band.

Loudoun County Public Schools (VA) — bid tabulation, IFB 20-491PMK elementary school roof renovation, published via BoardDocs

The only school roof tabulation we found that advertises per-square-foot unit pricing (for metal roof deck replacement), and we could not retrieve it. The BoardDocs URL returns a 919-byte HTML shell rather than the PDF, so there is no file to digest and nothing we could hold ourselves to. It is also a school roof: even retrieved, the deck-replacement unit price prices a commercial metal deck, not a house.

Chicago Housing Authority — bid tabulations and proposal registers

A real index of downloadable tabulations, and the wrong scale. What it lists is whole-building work at a large public housing authority — apartment renovations, HVAC system replacements, elevator and generator maintenance, janitorial, security, electricity supply — rather than the single-trade, single-house scopes our calculators price. We did not download individual files, so this is a rejection on the index alone; if we return to it, it will be for a multi-unit comparison rather than a residential one.

New York City bid tabulations, historical (data.cityofnewyork.us, 9k82-ys7w) and Cook County procurement bid tabulations (datacatalog.cookcountyil.gov, 32au-zaqn, Public Domain)

Both publish who bid and what they bid, and neither publishes what they bid on. New York's rows carry a bid item and a bid price with no quantity and no unit of measure; Cook County's carry a bid amount against a project name. A tabulation without a quantity column is a list of totals, and a total cannot be divided into a per-foot rate.

East Baton Rouge Parish building permits — water heater subset (Socrata 7fq7-8j7r, Public Domain)

The fee column goes dark and nobody says so. 2,381 residential plumbing permits describe a water heater, and permitfee is populated on 100% of them through 2021 — averaging $25 to $28, right on the low of our own band — then on 1 of 93 filings in 2022 and on none of the 213 since. The portal still advertises a daily refresh. A column that stops being filled looks identical to a fee that was waived, which is also why the parish's 1,464 residential re-roof permits all reading $0.00 tells us nothing: that permit type only appears from 2025-07-30, after the column went quiet.

City of Norfolk residential mechanical and re-roof permits (Socrata fahm-yuh4)

The same file our electrical record uses, and two more trades in it that we cannot check. Norfolk types 7,202 one- and two-family mechanical replacements at a mean fee of $73.92 and 3,140 filings under Reroof/Solar Panels at $171.47 — both exactly the kind of number this angle was looking for. Our HVAC data files publish no permit band at all (the AC calculator names $50-$300 in prose and the JSON carries no such field), and our roofing data folds the permit into the installed price per square with no separate line. There is nothing on our side to hold the number against, and inventing a band so that a record could check it is the wrong way round.

Cincinnati building permits (Socrata uhjb-xac9, Public Domain)

It has the fee and will not say what the fee was for. The file carries a numeric fee column and 24,792 filings under permit type CBPCMCHR at a mean of $108.04, but the type codes are undocumented in the dataset and its metadata, and the description column is a category rather than a sentence: all 32,914 CBPCMCHR filings read simply HVAC. Our sewer record already recorded that limit; what is new here is that the fee column exists and still cannot be used, because a cohort whose definition is a guess at an acronym is not a cohort.

City of Mesa, AZ building permits (Socrata dzpk-hxfb, See Terms of Use)

The fee column is populated for some categories and identically zero for others, and nothing in the file distinguishes free from unrecorded. Grouped by type of work, 18,461 filings labelled 'Res (SFR) -- Single Family (Detached)' average $0.00 while 12,575 labelled 'Single Family (Detached)' average $8,180.25; the same split runs through the electrical, plumbing and mechanical categories. The file evidently carries two eras of labelling and the fee survived only one of them.

City of Richmond, VA Permit TRAK (transparentrichmond.org, tkbh-qmdj)

The best-shaped permit file we found and three years dead. It carries description, type, subtype, fees_charged, fees_paid and jobvalue together — everything this angle needs in one row — and its Socrata row timestamp reads 2023-05-18T15:42:36Z. Comparing 2023 fees to a 2026 band is the objection we raised against NYSERDA and Providence, and it applies here too.

City and County of Honolulu building permits (Socrata 4vab-c87q)

It publishes the fee collected on every filing and never says what the work was. There is a bpfeescollected column and a bpfeecalculation column, and the scope is recorded as yes/no flags — electricalwork, plumbingwork, solar, repair, alteration — with no description field anywhere in 80 columns. A flag saying electrical work happened cannot separate a service upgrade from a light fixture. The file also stops at 2025-06-30.

Los Angeles building permits (Socrata pi9x-tg5x) and Austin issued construction permits (Socrata 3syk-w9eu, Public Domain U.S. Government)

Both were reopened specifically to look for a fee column and neither has one. Los Angeles publishes a valuation and no fee across 38 fields; Austin publishes eight separate valuation columns — building, electrical, mechanical, plumbing and their remodel variants — and no fee at all. Our four failed roofing records died on the missing denominator; these two die on the missing numerator, which is the other half of the same lesson: a permit file contains a price only if somebody decided to publish one.

Why these are not case studies

We have never re-roofed a house. This site builds calculators, and calling these pages "case studies" would imply site visits, invoices, and clients we do not have. What we do have is the ability to open a public record, run the query in front of you, and say plainly what it does and does not measure.

Each record gets the same six sections: what the record is, what it measures and what it quietly does not, how the cohort was filtered, the distribution against our published band, a verdict, and what the finding means if you are collecting quotes in that jurisdiction. The query is printed in full so you can re-run it and get our numbers or catch us out.

The verdicts, and why one of them is "no"

A record lands in one of four places. Band confirmed means the public figures fall inside the range we published before we looked. Band moved means they did not, and we changed the data — the page keeps the original band in print, with the correction dated below it, because a ledger with no corrections is evidence of editing, not of accuracy. Comparison rejected means the record turned out not to measure prices at all, so it cannot judge us either way. Not a band check covers records that are worth reading for a different reason.

Two dates appear at the top of every record: when we retrieved the outside figures, and the asOf stamp on the pricing data behind our band. The second is always earlier, and the commit history behind this site shows it was earlier — the band was fixed before the check, not fitted to it afterwards.

What you will not find here

No accuracy score. We will not tell you that our calculators are right some percentage of the time, and you should distrust any cost site that does. Our bands are wide on purpose — a sewer-line estimate spans more than three times from low to high, because that is genuinely how much regional labor, access, and surface restoration move the number. A test of whether real prices land inside a range that wide is a test almost any range would pass. Publishing that as a performance figure would be selling the width of the band as a virtue.

There is also no publishing schedule. This site once claimed a review cadence it could not keep, and the sentence was deleted rather than defended. These records are re-run when the underlying dataset moves enough to change what they say, and left alone when it does not.

Cost math by CostCandor