DEV Community

DDMarketer
DDMarketer

Posted on

Your salary API is probably serving 2023 data. I refreshed 907 rows and measured the drift.

Last week I finished reloading every wage figure in a salary/take-home product I run (kultranz.com) from a 2023-vintage dataset onto the newest BLS release, the Occupational Employment and Wage Statistics (OEWS) survey with a May 2025 reference period. I kept both vintages in version control, so when it was done I could diff old table against new and answer a question that bothered me: how far off is a calculator that just... never updated?

Further than I expected.

The diff

907 rows were reloaded; 909 comparable job-and-metro pairs exist across both vintages.

  • 807 moved up, 102 moved down. Median change: +6.4%.
  • Averaged across each metro's changed rows: from +3.3% (Raleigh) to +11.3% (Portland). 39 of the 48 metros with changed rows moved +5% or more.
  • Single rows on ordinary jobs moved 25-37%: Portland graphic designers $67,360 -> $92,530 (+37.4%), Jacksonville project managers $67,630 -> $90,700 (+34.1%), Columbus project managers $58,800 -> $77,780 (+32.3%), Jacksonville financial analysts $91,870 -> $119,160 (+29.7%).
  • The stale table is not always low: Miami police officers fell 14.5%, Charlotte project managers 17.7%. A 2023 table is not "conservative", it is just wrong in both directions.

The point for anyone building on wage data: a two-year-old wage table and a current one differ by a full wage-growth cycle, and no UI tells you which one you are looking at. BLS publishes the OEWS with about a lag; sites scrape it once, or buy a one-shot dataset, and the vintage quietly rots. The May-2025 release only came out this year, so "current" is genuinely recent data.

The part that was worse: the tax schedules

While auditing around the refresh, we found and fixed eight state tax schedules in October that our engine (and, at the time, several popular take-home calculators) were carrying wrong for 2026:

  • Missouri was modeled as a flat 2%; the real schedule is graduated, 0% to 4.7%.
  • Ohio applied its 2.75% rate from dollar one; it only applies above the $26,050 floor, so a dollar-one model overstates the tax by about $716 for every filer above it.
  • South Carolina was still on its pre-H.4216 brackets; the corrected schedule plus the new deduction cuts a $75,000 filer's state tax from $3,343 to $2,160.
  • Plus Mississippi (missing $10,000 zero bracket), Utah (4.5% vs the correct 4.45% under S.B. 60), Arkansas (3.9% vs 3.7%), Kansas (married standard deduction $7,210 vs $8,240), and Georgia (stale rate).

Every fix is in a public corrections log with the official source it was verified against: kultranz.com/pages/data-corrections-log/. That page is the citable artifact. If you maintain a tax or salary tool, the fastest integrity check on your own engine is those eight states.

Check your own data source

If your product consumes wage data, ask it two questions: what is the reference period (month and year), and can you name the release? Our API answers both in every response envelope:

curl "https://api.kultranz.com/paycheck?salary=120000&state=CA&filingStatus=single"
Enter fullscreen mode Exit fullscreen mode
{
  "data": {
    "gross": 120000,
    "taxable_income": 103900,
    "federal_tax": 17570,
    "social_security": 7440,
    "medicare": 1740,
    "state_tax": 7083.42,
    "net": 86166.58,
    "effective_rate": 28.19
  },
  "meta": {
    "source": "BLS OEWS + BEA RPP + U.S. Census ACS + IRS (via kultranz.com)",
    "vintage": "2026",
    "year": 2026
  }
}
Enter fullscreen mode Exit fullscreen mode

The meta block exists so a downstream product can display provenance instead of hard-coding "2026" somewhere and forgetting it. Free tier is 10 requests a day with no key; there is a $5 lifetime pass if you want to build on it, and the full docs are at kultranz.com/pages/api-docs/. The wage rows behind it are the May-2025 OEWS vintage, all 907 of them, and the before/after diff table is published as a data story on the site.

If you run a calculator or API on US wage or tax data: pin your vintages, print them in your responses, and keep a public log of your corrections. Users cannot tell a 2023 number from a 2025 one by looking at it. I could not either, until I diffed them.

Top comments (0)