Forty-nine sealed bids for an appliance nobody specified
Published 2026-08-11 · records retrieved 2026-08-11 · our band fixed as of 2026-08 · how we build these numbers
Run your own numbers in the water heater calculator →
The roof record next door failed on a missing denominator: no square count, no price per square. A water heater has no denominator problem at all. It is one object, installed once, in one house, and every bidder pricing "install water heater" is pricing the same countable thing. So the same file that could not check our roofing band ought to be able to check our water heater band cleanly. It cannot, and the reason is worth the page: the plumbers agreed almost perfectly on the price of something the specification never identifies.
1. What this record is
Twenty-four bid tabulations published by the City of Jackson, Michigan, opened between April 2021 and March 2026, each recording sealed bids to install a water heater in one single-family house under the city's housing rehabilitation program. Forty-nine bids in total. Fourteen of the openings buy the water heater on its own; the other ten buy it alongside a furnace, a boiler or an air conditioner, itemised on separate lines, so the water heater line can be read by itself.
The program is the one described in the roof record: contractors walk the house at a pre-bid meeting, bid on the city's forms, envelopes are opened publicly, and the winning bidder contracts with the homeowner rather than with the city. The money is federal, and the solicitation packet's Special Provisions apply HUD requirements including, at item 6, the Davis-Bacon Act "for all contracts in excess of $2,000." No wage determination is attached to the public packet. Whether a prevailing wage was actually enforced on a single-house water heater swap is not something this record answers, and we are not going to decide it from outside — but every bidder read the clause before pricing.
The records
City of Jackson, Michigan, Purchasing Department — Bid Tabulations. The 24 tabulations are cited by numeric DocumentCenter id, with byte sizes and SHA-256 digests in section 3; all retrieved 2026-08-11 at HTTP 200, and the server sends no Last-Modified header for any of them. As on the roof record, we use the numeric URLs rather than the filenames because the filenames spell out the street addresses of private houses receiving a low-income rehabilitation grant. The numeric URLs return byte-identical files. License unconfirmed: no terms-of-use page, no reuse notice on the PDFs, so figures are quoted and the originals linked rather than reproduced.
# 1. one tabulation, and the verbatim specification printed inside it
curl -sS -D h.txt -o wa1.pdf -L \
"https://www.cityofjackson.org/DocumentCenter/View/12269"
grep -iE "^HTTP|content-length|last-modified" h.txt
# HTTP/2 301 -> HTTP/2 302 -> HTTP/2 200
# content-length: 15266 (no last-modified header is sent)
shasum -a 256 wa1.pdf
# c42a8a930fae50efd17dc19817be6fa66ef0416d35e58884cc94a2c91001bf12
pdftotext -layout wa1.pdf -
# 2. the search that decides this page. across all 24 files:
grep -ilE "gallon|[0-9]+ ?gal\b" *.txt # nothing
grep -ilE "energy factor|\bUEF\b|\bAFUE\b|BTU" *.txt # nothing
grep -ilE "power ?vent|direct ?vent|atmospheric|condensing|tankless" *.txt
# # nothing
grep -ilE "high.?efficiency|hi efficiency" *.txt | wc -l
# 10 <- ten of the 24 name it and stop there. an eleventh has the
# words split across lines by the PDF layout, which is why
# this count is a floor rather than a total.
# 3. two documents in the index are the same file under two ids
shasum -a 256 8585.pdf 8614.pdf
# 42ef5b6f399bba9093bae00949f0a1d580a2cfafb05e3cd50138d72932b967e2 8585.pdf
# 42ef5b6f399bba9093bae00949f0a1d580a2cfafb05e3cd50138d72932b967e2 8614.pdf
# 4. our side, computed by this site's own calculator rather than by hand.
# the two script paths are the files the water heater page ships to you.
node -e '
const fs=require("fs"); globalThis.window={};
eval(fs.readFileSync("assets/js/cost.js","utf8"));
eval(fs.readFileSync("assets/js/calc/water-heater.js","utf8"));
const d=JSON.parse(fs.readFileSync("data/water-heater.json","utf8"));
const r=window.COST_WH.estimate(
{target:"tank_gas_40", permitDisposal:true, codeUpgrade:"none"}, d);
console.log(d.asOf, JSON.stringify(r.total));
console.log("unit", JSON.stringify(r.items.unit),
"labor", JSON.stringify(r.items.labor));'
# 2026-08 {"low":955,"typical":2012,"high":3031}
# unit {"low":580,"typical":720,"high":1080} labor {"low":300,"typical":1100,"high":1600}
# 5. the same estimate if "high efficiency" means power-vented. the multiplier
# is our own file's only power-vent observation, in the 75-gallon note:
# Rheem Performance 75 gal NG $1,099 atmospheric vs $1,679 power-vent.
python3 -c "print(1679/1099)" # 1.5277525022747953
# unit band x that factor -> 886 / 1100 / 1650, total 1261 / 2392 / 3601
# 6. vintage. BLS CPI-U, all items, US city average.
curl -sS -X POST -H "Content-Type: application/json" \
-d '{"seriesid":["CUUR0000SA0"],"startyear":"2021","endyear":"2026"}' \
"https://api.bls.gov/publicAPI/v2/timeseries/data/"
# 2021 M04 267.054 ... 2026 M06 333.952 -> factor 1.2505 for the oldest
# 2025 M10 returns "-": no index was published for that month, so the one
# October 2025 opening is deflated with September 2025.
2. What it measures — and what it quietly does not
- The unit is not in dispute, and that is the good news. One heater, one house, one price. Nothing here resembles the trap in our Pittsburgh painting record, where thirteen bidders priced "per square foot" and the 76-page solicitation never said which square foot. Every figure below is directly comparable to every other figure below, and to the total our own calculator prints.
- The appliance is never named. The written scope, code WA1, runs two paragraphs. It requires the old unit disconnected and removed from the property, a permit, installation per the manufacturer's instructions, conformance to the Michigan plumbing code and the International Fuel Gas Code, ignition-source elevation per the IMC and IFGC, and a level working space at least 30 inches deep and 30 inches wide in front of the control side. It says "This shall be a gas unit. Electrical by others." It says "High efficiency unit." It does not say how many gallons, what energy factor, how many BTU, or whether the thing is atmospherically vented, power-vented or condensing. Searching all 24 tabulations for a capacity or an efficiency figure returns nothing.
- That gap is worth more than the whole disagreement between bidders. Our own price file carries the only comparison we need: in the Rheem Performance line, a 75-gallon natural-gas tank lists at $1,099 atmospheric and $1,679 power-vented, a factor of 1.53. Applied to our 40-gallon unit band that is roughly $380 on the typical — larger than the distance between our typical and the middle of these bids.
- The scope also includes work our default does not. A permit is required and the old tank is hauled away, both of which we can and do add. But one opening's scope adds "a new liner for the chimney sized for the furnace," which is a flue job riding along with the water heater, and nothing in the tabulations says how often that happens.
- Federal paperwork is priced in and cannot be separated. Davis-Bacon language, Section 3 reporting, SAM.gov registration and a public award cycle are all conditions of bidding. Whatever they cost, they are inside these numbers and outside a homeowner's phone call.
- The index has clerical noise, and we are not going to pretend otherwise. Two documents at different ids are byte-for-byte the same file; we count them once. One tabulation's header names a different street and a different trade than the water heater lines printed underneath it. Neither error changes a price, but a record that quietly cleaned them up would be less trustworthy, not more.
- Opening amounts are not contract amounts. No award, no change order, no final payment appears on any of the 24.
3. The cohort: twenty-four openings, no filters inside them
The rule: every tabulation on the city's public index whose line items include installing a water heater in a house, at any date, with at least one responsive bid. Every printed price for that line is in the table. Nothing was dropped for being high or low — the $5,823.81 and the $5,200.00 are as much part of the record as the $2,350.00s, and in a file this size an exclusion rule would be indistinguishable from choosing a result. Two entries in the index resolve to the same bytes and are counted once. One tabulation lists a bidder as "NO BID SHEET INCL" and another shows a bidder at $0.00; neither is a price and neither is counted.
As on the roof record, the transcription was checked against the documents rather than trusted. Seventeen of the 24 tabulations print a total for each bidder; adding the itemised lines back up gives 35 bidder totals and zero mismatches, to the cent. The other seven print no total row, which is stated here rather than glossed over.
| Opened | Document | Line item, as printed | Bids | Amounts |
|---|---|---|---|---|
| 2021-04-28 | 8585 | WATER HEATER | 2 | $1,650.00, $2,179.00 |
| 2021-06-15 | 8723 | HI EFFICIENCY WATER HEATER | 1 | $1,400.00 |
| 2021-07-22 | 9123 | STANDARD WATER HEATER | 2 | $1,800.00, $2,200.00 |
| 2021-07-22 | 9124 | STANDARD WATER HEATER | 2 | $1,475.00, $2,178.00 |
| 2021-08-24 | 9136 | WATER HEATER — HIGH EFFICIENCY UNIT | 2 | $1,800.00, $2,132.00 |
| 2023-05-10 | 11257 | HIGH EFFICIENCY WATER HEATER | 3 | $2,189.11, $2,549.00, $2,675.00 |
| 2023-10-26 | 11767 | WA1 — HIGH EFFICIENCY UNIT | 1 | $2,450.00 |
| 2023-11-28 | 12163 | High Efficiency Water Heater | 2 | $2,479.34, $5,823.81 |
| 2024-03-12 | 12269 | WA1 — High Efficiency unit | 4 | $2,490.00, $2,600.00, $3,429.00, $5,200.00 |
| 2024-04-16 | 12378 | WA1 — HIGH EFFICIENCY UNIT | 1 | $2,300.00 |
| 2024-07-30 | 12726 | INSTALL WATER HEATER | 1 | $2,200.00 |
| 2024-08-01 | 12758 | WA1 — HIGH EFFICIENCY UNIT | 2 | $2,358.13, $4,800.00 |
| 2024-08-01 | 12760 | WA1 — HIGH EFFICIENCY UNIT | 2 | $2,467.21, $2,600.00 |
| 2024-08-14 | 12795 | INSTALL WATER HEATER | 1 | $2,500.00 |
| 2024-09-05 | 12844 | INSTALL WATER HEATER | 1 | $2,650.00 |
| 2024-09-25 | 12949 | INSTALL WATER HEATER | 3 | $2,400.00, $2,478.44, $5,187.00 |
| 2024-10-10 | 13022 | INSTALL WATER HEATER | 3 | $2,378.14, $2,400.00, $2,750.00 |
| 2024-10-15 | 13035 | INSTALL WATER HEATER | 2 | $2,373.42, $2,750.00 |
| 2024-11-12 | 13107 | INSTALL WATER HEATER | 2 | $2,365.00, $2,389.11 |
| 2024-11-19 | 13119 | WA1 — HIGH EFFICIENCY | 2 | $2,300.00, $2,389.44 |
| 2025-01-07 | 13237 | WA1 — HIGH EFFICIENCY UNIT | 4 | $2,350.00, $2,351.40, $2,400.00, $3,205.00 |
| 2025-01-08 | 13270 | INSTALL HIGH EFFICIENCY WATER HEATER | 2 | $2,350.00, $2,356.14 |
| 2025-10-22 | 14043 | WATER HEATER | 2 | $2,351.14, $2,886.00 |
| 2026-03-09 | 14378 | REPLACE WATER HEATER | 2 | $2,499.17, $3,000.00 |
Digests, all retrieved 2026-08-11 at HTTP 200 from https://www.cityofjackson.org/DocumentCenter/View/<id>: 8585 46,498 bytes 42ef5b6f399bba9093bae00949f0a1d580a2cfafb05e3cd50138d72932b967e2 (8614 is the same file at a second id, same digest); 8723 15,631 3f1e91fcd89321e919a2b37f7f7fac3597af1a293c00d90133f6be1dd720bcc3; 9123 16,898 09542da3aa7646d58f01439b77c36dc8a9d74b5d97482b5bc0f99053e5927110; 9124 16,069 55b619049cd8e15c06838049b7aac50c1d86d6ccbf93b59579828aff8b366efa; 9136 16,837 9e68784e873f82873dd1bd0640440f9803bc89635f8228581e24c949dc83306f; 11257 15,053 785ee95e07f7b94d107148b05862d5dde1883886583bc3b8f6872475d9aa197e; 11767 15,632 92f93f432b3f89236ac033e459981a072e3d7b70ae2b5472ad92e69262092b8e; 12163 16,240 528db65104d72cc9028d499596b8ca7dfc54bac45f95e97b5753e44c596379dc; 12269 15,266 c42a8a930fae50efd17dc19817be6fa66ef0416d35e58884cc94a2c91001bf12; 12378 16,305 523b8cdac5372a26e9e2952d241111a0c378b2f1139da65d0820fef715385352; 12726 19,657 12588134b7f46196f3e076a982446949a02b5abac8ecac75c3dbcb1231b34016; 12758 21,126 37f17665b613bc45e853e0546b25d8dd9e5691a1574ded1cf2b9e4e6bd6c964c; 12760 20,643 7bf4c4028bb5c508a4f89f45f3e5a25c06a3e964a45d208224a8734a9fd90cf4; 12795 19,942 d5812868a4284ab21da9c3e69ef12a18d524df08a73e62661dd7ce9105e63004; 12844 19,924 aac8a8911afcc09dd0c3fd53e6a77773461eae94f39d4844dbd4f64fe7d11ad0; 12949 20,562 9a7e0e9be1ce8075e5f994f906a7d7c9e0f33d56f15db47a0bd15b2bae48d68b; 13022 20,645 044b3da69290a8374eb2c8ecab05578bd0a1e0b0a81378d6545f813b19c82b2f; 13035 20,094 f401b5f40fcef268229be91a642d51cea2614a8ea99c9a5d3f3d7b4a7a2bcb66; 13107 19,985 cde2ce6f2eb74d56544429a63800b578840b2790f0996cf491ae07c079ec6d68; 13119 20,612 924a84090e08668ac9a42f3921643f529815701a58c1b906174c68048415a390; 13237 21,170 45e1e3d7eedd9876e7950d77347f8348bb570219ee362a7fa3ab1367aee7340d; 13270 20,174 2865c9e17c471127896ca48357bbb15e4b93ad4d8385e443ef7e7e9d7e8b8b64; 14043 113,749 8863181ce8572c9d592702c49625d112fa3fd75aba54c736996f0ed9c279e39e; 14378 110,339 49ba8f5ff8a9d1c3f5514c1de97a555f235b55cfda6ffa60a5c6f7cbec6c9118.
4. The agreement, and the two places our band lands
First, how close the bidders are. Of the 18 openings that drew more than one bid, the median opening's highest bid was 1.22 times its lowest; the tightest pair, $2,350.00 against $2,356.14, is 1.003 times apart. Twenty-one of the 34 bids opened from 2024 onward fall between $2,300 and $2,500 nominal. Compare that with the roof line in the very same program, where the median opening came back 1.44 times apart, or with the thirteen apartment-painting bids in Pittsburgh, which came back 27.13 times apart on a written specification.
That contrast is the useful half of this record and it is not about plumbers being more honest than painters. It is about what the unit is. "One water heater, installed" is a countable object. "One square foot" is not, until somebody says of what. Give a trade a countable unit and a written scope, and a dozen firms in one small market converge to within a couple of hundred dollars.
| All 49 bids, carried to June 2026 dollars | Value |
|---|---|
| Lowest / highest | $1,720.79 / $6,334.04 |
| 25th percentile | $2,471.18 |
| Median | $2,602.60 |
| 75th percentile | $2,802.86 |
| Lowest bid at each opening (n 24) — min / median / max | $1,720.79 / $2,486.03 / $2,806.76 |
| Highest ÷ lowest within an opening — median of 18 | 1.22× |
Now our side. Our water heater calculator, on water-heater.json at its 2026-08 stamp, prices a like-for-like 40-gallon gas tank swap with the permit and the old-tank disposal included at $955 low, $2,012 typical, $3,031 high. One disclosure belongs here rather than in a footnote: the labour line inside that total was moved on 2026-08-07, four days before this retrieval, by a separate permit record that raised typical labour from $600 to $1,100. The band being tested here is the corrected one, and it was corrected before we had seen a single Michigan bid.
Against that band the bids sit high but inside: the median of all 49 is 29.4% above our typical, and the median lowest-bid is 23.6% above it. Seven of the 49 clear our high; two fall below our typical.
And then the specification takes it away. If "high efficiency unit" means a power-vented gas tank — which is what a Michigan basement swap usually means when the old atmospheric flue is being abandoned, and which the specification neither states nor rules out — then our appliance is the wrong appliance. Scaling our unit band by the 1.53 factor our own file records between an atmospheric and a power-vented Rheem in the same line gives $1,261 low, $2,392 typical, $3,601 high. Read that way the bids are 8.8% above our typical, and the median lowest bid is 3.9% above it.
| The same estimate, read two ways | Low | Typical | High | All-bid median sits |
|---|---|---|---|---|
| Our band, standard 40-gallon gas tank | $955 | $2,012 | $3,031 | 29.4% above typical |
| Our band, the same job with a power-vented tank | $1,261 | $2,392 | $3,601 | 8.8% above typical |
Both readings are honest readings of the same two words, and the document supplies nothing to choose between them. One of them says our typical is materially low; the other says it is about right for a low-cost market carrying federal paperwork. We would be picking, after seeing the bids, which sentence to publish.
5. Verdict
Verdict
(C) Comparison rejected — the specification never names the appliance, and our band lands on both sides of the bids depending on which appliance it is.
This record has everything the Pittsburgh painting record lacked. The unit is countable, the bidders agree, the scope is written down, the work is genuinely residential, and the prices are recent. What it lacks is one line in a two-paragraph specification: how many gallons, and vented how. That single omission is worth about $380 on our typical — more than the distance between our typical and the middle of these bids — so the same file supports two opposite conclusions about our data.
The band therefore stands where it stood, at the 2026-08 stamp on water-heater.json, which was set on 2026-08-07 and predates the 2026-08-11 retrieval above. Nothing in that file was changed by this record.
Two things are worth carrying away even so, and both are about direction rather than magnitude. Under either reading of the appliance, in a small low-cost Michigan city, sealed prices from licensed plumbers for a whole installed job sit above our published typical, not below it. That is the second independent source pointing the same way as the permit valuations that moved our labour line four days earlier, and it does it with sealed prices for a written scope rather than with numbers somebody declared on a form. The correction filed then said it was "a first correction, not a settled figure." This record does not settle it either. It does mean the next check should be looking for how much further, not for whether.
The other is the contrast this file draws with itself. The same city, the same program, the same bidders' week: the roof line came back 1.44 times apart and the water heater line 1.22 times apart, and the water heater is the one whose specification is vaguer. Precision in a price does not come from the length of the specification. It comes from whether the thing being bought can be counted.
6. If you are replacing a water heater
- "How many gallons, and vented how?" These are the two facts a city's own written specification managed to omit, and between them they move the appliance price by half. A quote that says "high efficiency" and no more has told you the marketing and withheld the model.
- "Is the permit in this price, and the haul-away?" This specification requires both explicitly. Our band adds a $25–201 permit and $50–150 disposal because national surveys say those are real; a quote that leaves them out is not cheaper, it is shorter.
- "What is not a water heater in this price?" One of these openings quietly includes a new chimney liner sized for the furnace. Flue work, gas line work and code catch-up ride along with tank swaps constantly, and they are the line items that make two quotes for "the same" job differ by a thousand dollars.
- "How far apart are your bids?" On this evidence, not far. If two plumbers quoting the same tank in the same town are more than about 25% apart, the odds are good that they are not quoting the same tank — which is a question about the appliance, not about either plumber.
Frequently asked questions
What does it cost to have a water heater installed in a house?
In this public record, in a low-cost Michigan city, sealed bids from licensed plumbers ran a median of $2,602.60 in June 2026 dollars, and the lowest bid at each opening ran a median of $2,486.03. But those prices buy a specification that never states the tank's capacity or its efficiency, and they carry federal contracting paperwork an ordinary homeowner does not impose. Read them as a floor-and-ceiling sanity check on what a plumber charges to do the whole job, not as the price of your water heater.
Why do sealed water heater bids agree when painting bids do not?
Because the unit is not in dispute. A water heater is one object installed in one place, so "per unit" means the same thing to every bidder. Our other bid-tabulation record, on apartment painting, found thirteen bidders 27 times apart because the solicitation asked for a price per square foot and never said which square foot. Here the median opening's highest bid was only 1.22 times its lowest. The lesson is not that plumbers are more honest than painters. It is that a countable unit removes the argument.
Does "high efficiency water heater" mean anything specific?
Not in this specification, which is the finding. The written scope runs two paragraphs, requires a gas unit, cites the Michigan plumbing code and the International Fuel Gas Code for the installation, sets the service clearance at 30 inches by 30 inches — and never states a capacity in gallons, an energy factor, a BTU input, or whether the vent is atmospheric, power-vented or condensing. On our own price data a power-vented gas tank lists at 1.53 times an atmospheric one in the same product line, which is most of the gap between our band and these bids.
Is a bid tabulation a better price source than permit data?
For scope, yes. Permit files record a declared dollar value with no written scope behind it and, as our Los Angeles record found, an incentive to declare it low. A bid tabulation is a sealed price for a scope somebody wrote down. That is why we keep opening them — and why this page still ends in a rejection, because "somebody wrote it down" turns out not to guarantee that what they wrote identifies the thing being bought.
Sources
Outside records: City of Jackson, Michigan, Purchasing Department bid tabulations, 24 documents opened 2021-04-28 to 2026-03-09, with solicitation packet 8087 of 2020-11-18 for the federal clauses; all retrieved from cityofjackson.org on 2026-08-11 and digested in section 3. Public procurement records of a Michigan municipality administering a HUD-funded residential rehabilitation program, quoted and cited here, not reproduced; addresses and owner names deliberately omitted. We filed no records request, so awards and final contract amounts are not established here, and no wage determination was found in the public file. Vintage adjustment: BLS CPI-U, series CUUR0000SA0, pulled from the BLS Public Data API on 2026-08-11; June 2026 = 333.952, April 2021 = 267.054. Our band: data/water-heater.json as of 2026-08, computed by the calculator's own code; the power-vent factor is the ratio of the two Rheem Performance 75-gallon listings recorded in that same file. Figures on this page are planning ranges, not quotes.