How this site is made
The short version
- The data pipeline and the cost model are code I wrote. They pull from the EIA public API and compute every figure on the site. Nothing is typed in by hand and nothing is adjusted after it arrives.
- Prose was drafted with AI assistance. Every number, source and claim in it was checked by me against the original before publication, and the errors that check caught are published in the corrections log.
- The 51 state pages are generated from the data file. They are presented as data pages rather than articles, with no invented FAQ and no article markup, because that is what they are.
- Where the model cannot answer something, I go and get it. Three contractors were called on the record and a Manual J was commissioned and paid for, to test the site's weakest assumption against a real document rather than an assertion.
Which parts of HeatPumpMath are computed, which are written, where AI was used in drafting, and what I check by hand before anything is published. Written plainly because you should not have to guess.
Why this page exists
Google's guidance on helpful content asks creators to be able to answer three questions about any use of automation: whether it is self-evident to visitors, whether there is background on how it was used, and whether there is an explanation of why it was useful. Those are fair questions and the honest answers are more interesting than a disclaimer.
There is also a version of this site that would not have been worth making. If the plan had been to generate a few hundred pages of plausible text about heating and hope some of it ranked, the right thing to do would have been to not build it. What makes this worth publishing is a dataset and a model that did not exist in this form before, and I want to be specific about which parts those are.
What is computed
This is the part I would defend hardest, and it is code rather than prose.
The data pipeline
One script, scripts/fetch-rates.js, calls the U.S. Energy Information Administration Open Data API v2 with an API key and pulls five series concurrently. Nothing is scraped, nothing is copied out of a web page, and nothing is typed in by hand.
| EIA endpoint | What it returns | Granularity |
|---|---|---|
| electricity/retail-sales | Residential electricity price | By state, monthly |
| natural-gas/pri/sum | Residential natural gas price | By state, monthly |
| petroleum/pri/wfr | Propane, product EPLLPA | By PADD region, monthly |
| petroleum/pri/wfr | No. 2 heating oil, product EPD2F | By PADD region, monthly |
| steo | Heating degree days, series ZWHD_<division>_10YR | By census division, ten year average |
The output is one file, data/rates.json, carrying the prices, the season they cover and the timestamp they were pulled. Every figure on this site, in the calculator and in the prose, is read from that file, which is why the tool and the writing cannot disagree with each other.
The heating season window, and why it is fixed
The script does not take the latest available month. It computes the most recent complete December to February window and averages across it, using identical months for every state. That is about six lines of code and it is the most consequential decision in the whole pipeline.
Two things go wrong without it. EIA's residential price is total revenue divided by total volume, so in summer, when residential gas volume collapses toward zero while the fixed monthly customer charge does not, the apparent price per thousand cubic feet roughly doubles. A calculator pulling the latest month is answering a winter question with a summer number, and this site shipped that bug before catching it. Separately, states report on different lags, so "latest available" silently compares different months across different states and the comparison stops being like for like.
The window advances by itself: before March it uses the season that ended last February, and from March the one that just ended. There is no date anybody has to remember to update.
Missing data is dropped, never estimated
If a state or region is missing any month of the season, the script discards it rather than filling the gap. That rule is why six states carry no gas price: EIA has not published a complete December to February residential gas season for them. They keep their pages, with every fuel that is priced, and the gas column reads not published. It is also why the site covers 51 states and not fifty.
The alternative would be to interpolate, and an interpolated gas price feeding a verdict about whether somebody should spend five figures is not something this site is willing to publish.
You can check all of this without taking my word for it. The output is published as CSV and JSON under CC BY 4.0, with the season and the pull timestamp in the file.
The model
A second file holds the physics: unit conversions, the HSPF2 to COP conversion, the harmonic combination for backup heat, and the breakeven relationship. I derived the breakeven from first principles rather than adopting a published rule of thumb, and checked it two ways that agree.
What follows from those two
Every price, ratio, verdict and cost figure on this site, in the calculator and in the writing, comes out of those two files. There is no second copy of the numbers, which is why the tool and the articles cannot contradict each other.
What is written, and how AI was used
The explanatory pages, the comparison guides and the field notes are prose. They were drafted with AI assistance, in a working session where I directed the research, chose the angles, and checked the output.
What that actually looked like
- I decided what to write about, after looking at what already ranks for these queries and where the existing results were thin.
- Research was done against primary sources. Where this site cites a federal field study, that report was read directly rather than summarised from someone else's coverage. PNNL-37127 is a 66 page PDF and the figures quoted here came out of it, not out of a press release about it.
- Drafting was AI-assisted. Structure, phrasing and first drafts.
- Every figure was checked against source before publication. That check is not decoration. It is what caught the errors below.
What the checking caught
Two things worth naming, because they are the argument for why the checking matters.
The first build of the data pipeline used the most recent monthly EIA gas price, which for gas resolved to a summer month. EIA's residential price is revenue divided by volume, and in summer the fixed customer charge is divided by almost no gas, inflating the apparent price by up to 114%. The site was answering a winter question with a summer number and it biased every verdict toward the heat pump. Georgia was overstated by 114%, and fixing it changed the answer in most of the country.
Separately, the site stated that roughly 40% of US homes do not heat with natural gas. The real figure is higher: gas is the main heating fuel in 47% of homes, so slightly more than half do not. That was a claim carried from memory rather than checked, and it was wrong.
Both are written up in full in the corrections log, with the old and new figures side by side.
The state pages, and why they look different now
There are 51 state pages, one per state with complete data. They are generated from the data file.
They were originally built as articles: around 900 words each, with a headline that branched on the verdict, an FAQ section, and Article and FAQPage structured data. That was a mistake and I have changed it.
They are now presented as what they are. Shorter, table led, explicitly labelled as data pages, marked up as datasets rather than articles, with no invented FAQ. The analysis they used to pad out with links out to the pages where the reasoning actually lives.
What this site does not have
The model has not seen your house, and no amount of care in the arithmetic changes that. The heat loss coefficient behind every monthly figure is a rule of thumb tested against two data points, which is not a validation study. State average prices hide large differences between utilities inside one state. Gas standing charges are not modelled at all.
The sample is the other real gap. Thirty two households is enough to show a spread and not enough to be representative of anything, and they are self selected: people who post their own consumption figures are not a random draw from all heat pump owners.
I have closed the part of it that is reachable. I called three contractors and asked them the same question on the record, and I paid for a Manual J load calculation so that the site's least defensible assumption could be tested against a real document rather than asserted. Both are written up in asking three contractors the same question, including the household data I collected and then declined to use because it did not survive checking.
If you have a heat pump and a year of bills, or you are an installer willing to talk about balance points and how you size systems, I would genuinely like to hear from you at banerjeeashutosh01@gmail.com. Real numbers from real houses would improve this site more than anything else I could do to it.
Who is behind it
Ashutosh Banerjee, who goes by Ash. B.Tech in Mechanical Engineering from Sardar Vallabhbhai National Institute of Technology, Surat, 2024. The certificate is on the about page because a claimed credential is worth less than a shown one.
The thermodynamics here is undergraduate mechanical engineering. Coefficient of performance, seasonal efficiency and fuel heat content are standard material, which is exactly why the assumptions can be written down and checked rather than asserted.
I sell no heating equipment, take no money from manufacturers, installers or utilities, and the site currently carries no advertising and earns nothing. If that changes it will be disclosed here and on the editorial standards page before any money changes hands.
Common questions
Is this site AI-generated?
Partly, and the split matters. The data and every computed figure come from code that calls the EIA public API. The explanatory prose was drafted with AI assistance and then checked figure by figure against primary sources before publication. The state pages are generated from the data file and are presented as data pages rather than as articles.
Why use AI at all?
Because the alternative was not writing it. The value here is in the dataset and the model, both of which are original work, and AI assistance made it possible to explain them thoroughly rather than leaving a calculator with no explanation attached. The checking step is what makes it publishable, and it is where the two corrections on this site came from.
How do I know the numbers are right?
Every figure traces to a named source, and the sources are cited with authors, institution, report number and date rather than as bare links. The pipeline that produces the data is described above, the model is documented in the methodology, and the errors found so far are published in the corrections log rather than quietly fixed.
What happens when you find another error?
It goes in the corrections log with the old figure, the new figure, what caused it and what it changed. Pages are not silently rewritten to hide a previous answer.
How this was checked
This page is a description of process rather than a claim about the world, so there is less to check than usual. The two corrections it describes are documented in full in the corrections log with their figures, and the pipeline it describes is the one that produced the data file currently powering the site, dated 2025-12, 2026-01, 2026-02.
What this page does not cover
This page does not cover the model itself, which is in the methodology, or the specific sources behind individual claims, which are cited on the pages that make them.
References
- U.S. Energy Information Administration. Electricity Data Browser, retail sales and average price by state and sector, monthly. Series accessed through the EIA Open Data API v2.
- U.S. Energy Information Administration. Natural Gas Prices, residential price by state, monthly, dollars per thousand cubic feet. Series accessed through the EIA Open Data API v2.
- U.S. Energy Information Administration. Weekly Heating Oil and Propane Prices, residential, by region.
- U.S. Energy Information Administration. Short-Term Energy Outlook, heating degree days by census division, prior ten year average series. Accessed through the EIA Open Data API v2.
- U.S. Energy Information Administration (2025). Electricity use is becoming more common for residential heating. Today in Energy, citing U.S. Census Bureau American Community Survey and the Residential Energy Consumption Survey.
Related reading
Have real heat pump data?
A year of bills, or an installer's view on sizing. Either would improve this site more than anything I can do alone.
Get in touch