How PennyCalc Builds and Verifies Calculators
Reviewed by Michael for implementation and test coverage. See more by Michael.
Where the numbers come from, who reviews the math, what we update and when, and how we handle conflicts between sources.
This page documents PennyCalc's editorial and engineering process. Last full review: August 10, 2026.
Source hierarchy
For any number that appears on a PennyCalc page, we use the following source hierarchy in order of preference:
- Primary statutory or regulatory source. IRS Notices and Revenue Procedures for tax limits. SSA Office of the Chief Actuary for Social Security wage base. CMS for Medicare premiums. DOL Wage and Hour Division for minimum wage. U.S. Treasury Bureau of the Fiscal Service and TreasuryDirect for I Bond rates. Federal Reserve H.15 for interest rate benchmarks. Freddie Mac PMMS for mortgage rates.
- Government statistical agency. BLS for employment, CPI, and wage data. BEA for GDP and personal income aggregates. Census Bureau for demographic baselines. FHFA for conforming loan limits and county-level home price indices.
- Industry research with public methodology. EBRI Issue Briefs for retirement plan participation data. ICI Investment Company Fact Book for fund-level statistics. Vanguard "How America Saves" annual report. Fidelity retirement health spending estimates. Black Knight Mortgage Monitor for refinance and rate-lock data. Damodaran/NYU dataset for long-run equity returns.
- Tax Foundation, Bankrate, Kiplinger. Used for cross-referencing only, never as primary source for a numerical claim.
Our publication standard is that material numerical claims are traceable to a tier 1 or tier 2 source from the relevant calculator, reference page, or downloadable dataset.
What we update and when
Different categories of content have different update cadences:
| Content | Cadence | Trigger |
|---|---|---|
| Tax brackets, standard deduction, AMT thresholds | Annual | IRS Revenue Procedure release each fall |
| 401(k), IRA, HSA contribution limits | Annual | IRS Notice (401k/IRA) in October-November; Revenue Procedure (HSA) in May |
| Social Security wage base | Annual | SSA OACT release each October |
| Medicare premiums and IRMAA brackets | Annual | CMS Federal Register notice each fall |
| Mortgage rates, savings rates | Weekly | Freddie Mac PMMS Thursday release; Federal Reserve H.15 |
| I Bond fixed and inflation components | Twice yearly | TreasuryDirect rate resets effective May 1 and November 1 |
| State income tax brackets and property tax rates | Annual | State revenue department releases (varies by state) |
| Editorial commentary and FAQ | Continuous | Significant legislative changes, source updates, reader feedback |
Every page carries a "Last updated" date. When we change a numerical claim or add a new section, we update that date. When we make minor copy edits without changing factual content, we don't.
How we use AI
AI tools assist our team with research organization, first drafts, code implementation, refactoring, and test scaffolding. They are productivity tools, not sources or reviewers. A named byline identifies the human accountable for the published page; it does not mean that person typed every sentence without assistance.
- AI output is never cited as authority. Current tax, benefit, housing, and rate figures are checked against the controlling primary publication.
- AI-generated first-person experience is prohibited. Personal examples and anecdotes must come from, and be approved by, the named team member.
- Passing tests is necessary but not sufficient. A release also needs a rendered-page review for factual consistency, source links, privacy, and usability.
- The team owns corrections. Josh, Jessie, and Michael remain accountable for the data, editorial, and implementation work assigned to them.
Who reviews each calculator
Our release standard is review by at least two of the three team roles for every new or materially changed calculator. The checklist is:
- Math implementation by Michael. Calculation logic should live under
src/calculators/where it is independently testable, with corresponding fixtures undertests/calculators/. - Test coverage review against published examples. For tax-related calculators, we use IRS Publication examples (e.g., IRS Pub 17 Schedule SE worksheet) as the test cases. For mortgage calculators, we cross-check against bank rate calculator outputs at exact-match input combinations. The tests pass before any code is committed.
- Editorial review by Jessie. Every supporting paragraph, FAQ answer, and section heading. Voice consistency, source citation, edge-case coverage. Jessie has veto over copy that reads like generic financial-blog filler.
- Domain review by Josh for finance-heavy calculators (mortgage, capital gains, investment return, Roth-vs-Traditional). Josh sanity-checks against his own modeling work for whether the assumptions and edge cases hold up under high-earner scenarios (AMT, NIIT, RSU stacking, K-1 timing).
- Live cross-check against at least one independent reference for the headline number. A material difference must be explained by a documented assumption or treated as a bug; apparent agreement with another calculator is not a substitute for the primary formula or publication.
How we handle source conflicts
Different sources sometimes disagree. Examples we've encountered:
- State tax bracket boundaries sometimes differ between the Tax Foundation summary and the state revenue department's own publication. We use the state department of revenue's most recent publication as the source of truth.
- Mortgage rate "average" varies between Freddie Mac PMMS, Bankrate's daily aggregator, and Mortgage News Daily. PMMS is our default because it has the longest continuous history (since 1971) and a transparent methodology. We note the source on every rate citation.
- Long-run equity returns vary widely depending on the start year. We use the Damodaran/NYU dataset (1928-present) for the broadest defensible window. Where a calculator allows the user to set the return assumption, we make the default conservative (6.5 to 7% real for long-run S&P 500) and let users override.
- Inflation indexation uses different CPI series in different programs. ERTA used regular CPI through 2017; TCJA switched federal tax brackets to chained CPI starting 2018. Social Security uses CPI-W (urban wage earners). We document which CPI series applies on each page that uses inflation-indexed numbers.
- An I Bond's "current rate" depends on its issue date. The fixed rate stays with the bond, while the inflation component changes every six months on that bond's issue-month schedule. Our history page resolves both components instead of applying the headline new-issue rate to every bond.
What we don't do
- We don't give financial advice. PennyCalc tools let you run scenarios; they don't tell you what to do. Every calculator carries a disclaimer that the output is for educational purposes and you should consult a qualified professional for advice specific to your situation.
- We don't fabricate statistics. If a number appears on a PennyCalc page, it has a citation or it's the output of a calculator running on inputs you provided. We don't quote unsourced "studies show" claims.
- We don't promise precision the math doesn't have. Long-run projections (retirement, compound interest) are framed as ranges or as "what-if" scenarios with stated assumptions, not as forecasts. Tax calculations are framed as estimates that need to be reconciled against your actual return.
- We don't change calculator outputs based on whether a user clicks an affiliate link. Affiliate revenue, where it exists, comes from the user choosing to navigate to a partner. The calculator math is identical regardless. We disclose affiliate relationships in plain text on every page that has one.
When we make mistakes
We have, and we will. The process when we find one (whether through reader email, a cross-check that comes back wrong, or a legislative change we missed):
- Fix the underlying calculator module. Add a regression test if one didn't exist.
- Update every page that displays the affected number. Update the "Last updated" date.
- If the error materially changed a calculator, example, or claim, record what changed and when in the public corrections log.
We don't quietly rewrite history. The history pages on this site are versioned in git; every change to a published claim is in the commit log.
Sources we publish, in full
History-page data is stored as structured year-and-value arrays under src/data/ in the public GitHub repository. Our priority datasets are also offered as source-linked CSV downloads on their history pages so readers can inspect and reuse the values without reading application code:
- Top federal income tax rate (1913-2026)
- Top federal capital gains tax rate (1913-2026)
- Top federal corporate income tax rate (1909-2026)
- Standard deduction (single, 1944-2026)
- 30-year fixed mortgage rate (1972-2026)
- 401(k) employee deferral limit (1987-2026)
- Roth IRA contribution limit (1998-2026)
- HSA self-only contribution limit (2004-2026)
- Social Security wage base (1937-2026)
- Federal minimum wage (1938-2026)
- Medicare IRMAA Part B surcharge (2007-2026)
- I Bond fixed, inflation, and composite rates (1998-2026)
Implementation by Michael. Editorial review by Jessie. Domain review by Josh on finance-heavy calculators. See /about/ for who we are.