Changelog

What's changed in the model.

A running list of substantive changes to the model: its inputs, mechanics, and methodology. Each entry says what changed, why, and how the simulator's reference numbers moved (or didn't). Cosmetic and copy-only edits aren't tracked here.

v0.8: labour inflow into AI-proof jobs

People displaced by AI flock to so-called AI-proof jobs, and that extra supply pushes income down further. Until now the simulator only showed one side of the immune-worker paradox: a plumber's customers earn less, so the plumber earns less. It ignored the other side: the bookkeepers and truck drivers who lose their jobs go looking for work that AI can't do, and some of them become plumbers, hairdressers and personal trainers. Those newcomers bring no new customers, so the same revenue is split across more people.

  • New channel. Each occupation now receives newcomers in proportion to the scenario's adoption curve (lagged 12 months), how hard the occupation is to automate, and how easy it is to get into. Applies to every occupation, tradeable and local-service.
  • New field entry_barrier (0 = open, 1 = closed) for every occupation in all four countries, each with a one-line rationale. Examples: dentist 0.95, plumber 0.6, hairdresser 0.3, personal trainer 0.1.
  • Inflow rate 0.4, set in scenarios.json for every country. A judgement call: about 60% of displaced workers move into another job, about 25% of employment is displaceable (Goldman Sachs 2023, IMF 2024), divided by an average economy-wide openness of about 0.35. The derivation is on the formulas page.
  • Metric cards renamed. "Workers remaining" is now "Workers" (incumbents plus newcomers, with a note on how many are newcomers). "Income / remaining worker" is now "Income / worker".

Income per worker vs today, US, central scenario, month 60, before → after:

  • Plumber: −50% → −55% (newcomers add 10% to the workforce)
  • Hairdresser: −47% → −56% (+18%)
  • Personal Trainer: −54% → −63% (+24%)
  • Childcare Worker: −57% → −65% (+23%)
  • Real Estate Agent: −31% → −43% (+13.5%)
  • Registered Nurse: −30% → −35% (+7%)
  • Dentist: −47% → −47% (+1.4%, almost no one can get in)
  • National aggregate (32 occupations): −12% → −21% (+7.8%)

What we left out on purpose: newcomers are not traced from specific occupations (the occupations in the tool are too small a sample of the workforce for that), and we don't model wages bidding down on top of the dilution.

v0.7.1 - aerospace occupations (US)

Two US occupations added in response to a Reddit request for "quality control in aeronautics":

  • 51-9061 Quality Control Inspector (Aerospace), automation 40% (modern overlay, F-O 2013 said 98%). Customers: commercial aircraft primes (Boeing, Airbus), defense aerospace (Lockheed, NG, RTX), tier-1/2 suppliers, MRO services, certification & testing labs.
  • 17-2011 Aerospace Engineer, automation 35% (F-O 2013 said 2%). Customers: commercial primes, defense primes, space industry (SpaceX, Blue Origin), tier-1/2 suppliers, government/research (NASA, AFRL, DARPA).

New category "Manufacturing & Aerospace" in inferCategory(). Welder (51-4121) also moves into this category; it was previously mis-bucketed under White-Collar Office because no regex caught it.

US occupation count: 30 → 32. UK/AU/CA equivalents deferred (each needs a separate crosswalk + per-country wage/employment data).

v0.7 - assumption presets

The three "Estimated" coefficients (customer_industries[].share, customer_industries[].ai_exposure, ai_demand_boost) can now be viewed, edited, and saved as named presets. Three built-in lenses ship out of the box:

  • Consensus - the default lens; what the research suggests today.
  • AI hits a wall - skeptic's world; AI exposure halved, demand boost up slightly.
  • AI eats everything - doomer's world; exposure climbs hard (clamped at 1.0), demand boost shaved.

Users can clone any preset, edit the three estimated fields per customer industry, and save multiple personal presets. Saves are browser-local only (localStorage). A preset selector sits above the simulator's controls; switching presets re-animates the cascade from t=0 under the new assumptions. The headline annotates which preset is active so screenshots carry their own provenance.

Storage uses sparse overrides keyed by (country, occupation_code, industry_id, field) - only the values the user actually edited persist, so future data refreshes still propagate through unedited fields. Built-in presets ship as JSON under public/data/presets/; cloning a built-in concretizes any runtime transform (e.g. exposure × 0.5) into explicit overrides at clone time so the user preset stands on its own.

v0.6 - accuracy & certainty pass, in progress

A multi-phase shift from "all expert judgement on top of literature anchors" to "data-derived where possible, judgement on top of measurement where not."

Phase 1 - scaffolding (no behaviour change)

  • This changelog introduced.
  • The Moretti local-multiplier was already wired into the simulation engine: when tradeable occupations (software developers, accountants, financial analysts) lose revenue in aggregate, that drag is propagated with a 9-month lag onto local-service occupations (chefs, personal trainers, real-estate agents). An earlier internal note had it as future work - the methodology page has been updated to match the actual code.

Phase 2 - Felten-Raj-Seamans AIOE ingestion (parallel input, no behaviour change)

  • Three datasets ingested from the open-source AIOE repository, all covering ~774 SOC-coded US occupations: the original General AIOE (2018, AI Occupational Exposure index across all applications), the 2023 Language Modeling update (generative-AI specific), and the 2023 Image Generation update (image-model specific).
  • For each US occupation, the build pipeline now joins these scores by SOC code and computes empirical percentile rank within the full ~774-occupation reference distribution. A small SOC 2010 → 2018 crosswalk handles the consolidated codes (Software Developer split was merged in 2018; Fast Food Worker re-coded). Result: 30/30 US occupations matched. UK/AU/CA carry null AIOE fields until the SOC ↔ ISCO/ANZSCO/NOC crosswalks land.
  • AIOE is a parallel input to the existing automation probability, not a replacement. Methodology page updated; coefficients page now lists AIOE fields under Derived.
  • Validator before/after: identical aggregate ratios across all four countries. AIOE is non-load-bearing on simulation behaviour - it's exposure surfacing, not a new mechanic.
  • Cross-check verdict: for white-collar occupations the AIOE LM percentile broadly agrees with the modern overlay (Accountant: overlay 78%, AIOE LM 84th percentile; Marketing Manager: overlay 30%, AIOE LM 83rd - the gap here is real and intentional, marketing carries an augmentation-style demand boost that lifts revenue rather than a replacement-style probability that cuts it). The two diverge for occupations where automation is physical rather than language-driven (Truck Driver: overlay 79%, AIOE LM 7th percentile; Fast Food Worker: overlay 92%, AIOE LM 44th) - exactly the expected pattern, and a useful sanity check.

Phase 3 - Anthropic Economic Index ingestion (parallel observation, no behaviour change)

  • Slice of the Anthropic Economic Index third report (data window 2025-08-04 to 2025-08-11) ingested. AEI publishes the observed share of Claude.ai conversations classified into each SOC major occupation group, broken down by country.
  • For each US occupation, the build pipeline now injects an observed-usage field - what share of measured Claude conversations in this country were tasks in this occupation's SOC major group. Each country also gains a country-level automation vs augmentation collaboration split (US: 49% / 51%; UK: 45% / 55%; AU: 46% / 54%; CA: 47% / 53%).
  • The simulator's title strip surfaces this as a small "AEI · X% of Claude usage" pill with a tooltip explaining the signal. The methodology page has a dedicated section walking through the data and the ~200× spread between Computer-and-Mathematical (26% of US Claude usage) and Construction-and-Extraction (0.13%) - observation, not projection.
  • Validator before/after: identical numbers across all four countries. AEI is observation surfacing, not a simulation input - by design.
  • Honest constraint: AEI as we ingest it is a single snapshot, not a time series, so it cannot replace the scenario S-curves yet. What it gives us is a defensible empirical floor on the near-term portion of every curve ("we're not asserting adoption is X - we're observing it"). Time-series anchoring across multiple AEI releases is on the future-work page.

Phase 4 - deferred: input-output derivation of customer-industry shares

The largest remaining data move - replacing hand-authored customer-industry shares with values derived from public input-output tables (BLS Industry-Occupation Matrix + BEA Use Tables for the US, and the equivalent statistical-agency tables for UK/AU/CA) - deliberately wasn't attempted in this pass. It directly drives the revenue cascade, so a wrong derivation would visibly destroy the simulation. See future-work for the proper sequencing and effort estimate.

v0.5 - multi-country (US + UK + AU + CA), shipped 2026-05

(Pre-changelog history.) Multi-country ETL, currency-aware Intl formatters, modern AI overlay on Frey-Osborne, three S-curve scenarios, hand-authored customer-industry shares, Moretti spillover for local-service occupations, uncertainty bands by horizon.

← Back to methodology