UK AI JobsExpected · in use · happened
Check it yourself · the whole case is falsifiable

Don't trust the scores. Check them.

A contrarian read, that the apocalypse is priced in but not arriving, is only worth anything if you can check it. So every number traces to a public source, and the two model-generated layers are validated, not asserted. The dataset joins the UK National Careers Service profiles, ONS SOC-2020 employment and ASHE pay, then adds a Gemini 3 Flash AI-exposure score and a demand-elasticity score. Exposure validates against the peer-reviewed Felten index at ρ = 0.812; elasticity gets its first external check, against Anthropic's measured augmentation, and lands at only ρ = 0.17. That's why the site leads with the measured usage, not the scored guess. Both checks re-run in one command.

Occupations
738
NCS × SOC 2020 joined
Workers covered
24.7M
ONS employment
Exposure validated
ρ 0.812
vs Felten AIOE · N=331
Elasticity checked
ρ 0.17
vs AEI augmentation · N=300
The check that matters

The exposure scores are LLM-generated. Here's the proof they aren't vibes.

0.812
Spearman ρ between this site's exposure scores and the peer-reviewed Felten AI-exposure index, across N = 331 SOC codes.

Felten, Raj & Seamans built their AI Occupational Exposure index from O*NET task data. Different method, peer-reviewed, US-built. Crosswalked to UK SOC-2020, our independent Gemini scores rank-correlate with it at ρ = 0.812. Two unrelated methods landing in near-lockstep is the strongest evidence the exposure axis measures something real.

Re-run it yourself. The inputs and the script ship in the repo:

python3 scripts/validate_aioe.py
N 331 · ρ 0.812. That validates exposure. The second axis, elasticity, now has its first external check too, against measured AEI augmentation. It lands weak: ρ 0.17 (see below).
The other axis, checked the same way
0.17
Spearman ρ between this site's guessed elasticity and Anthropic's measured augmentation share, across N = 300 UK SOC codes.

The Anthropic Economic Index publishes, per occupation, the share of real Claude usage that augments a worker versus automates the task. That is a direct measurement of the thing our elasticity score only guesses at. Crosswalked to UK SOC-2020, the two rank-correlate at just ρ = 0.17, far below exposure's 0.812. The guess doesn't track what Claude users actually do, so elasticity stays a structured hypothesis, not a measurement.

python3 scripts/refresh_aei.py

Source: Anthropic Economic Index, release 2026-06-26 (“Cadences”), Claude.ai usage, global, April + May 2026. Released CC-BY. Confounds: it reflects Claude users only, not the whole labour market; the US O*NET-SOC → UK SOC-2020 crosswalk drops ~9% of codes; and it is a two-month cross-section, not a trend. The same measured augmentation drives the pay-gradient on the earnings page (augmentation rises gently with pay, a modest tilt, not a cliff) and, across 121 countries, the geography inversion on the international page (AI augments more where it is adopted more; adoption a proxy for national income), and the gender twist (male-dominated occupations lean more to automation-style usage than female-dominated ones, the reverse of the usual claim; usage ≠ job loss). Its artifact labels drive the “what people make with AI” tags on each role page. A four-release trend on the gap tracker (Feb 2025 → Jun 2026) shows the augmentation share sliding ~57% → 51%, read as a trend, not precise levels, since AEI's sample and method evolved across releases. The release's model-estimated task times (human-only vs with-AI) drive the ~7× time-compression stat on the home page (estimated, not stopwatch-measured), and its model-estimated education-equivalent (AI vs human years) drives the graduate-level stat beside it.

See it: 300 occupations, guess vs measure

Each dot is a UK SOC occupation. If our elasticity guess tracked reality, dots would line up bottom-left ↔ top-right. They don't: the two shaded corners hold big occupations where the guess points the opposite way to what Claude users actually do. We scored care work a survivor, the usage is mostly automation; we scored retail assistants squeezed, the usage is mostly augmentation. That shapeless cloud is the ρ 0.17.

guess agreesdisagrees

Measured axis: AEI augmentation share, Claude.ai usage, April + May 2026, global, CC-BY. Claude users only, US→UK SOC crosswalk drops ~9% of codes, two-month cross-section. Bubble area ∝ UK employment.

Read the occupation numbers with this caveat
45%
of the Claude usage mapped to an occupation is actually work use. The rest is personal or coursework.

AEI maps conversations to occupations by the O*NET tasks they touch, not by who is talking. So the per-occupation numbers mix real work with personal use of the same skills. For desk and knowledge work (software, analysis, writing) most of the signal is genuine work. For manual and service jobs (care, kitchens, trades) it's largely people asking personal questions, not doing the job, so those occupations' augmentation and automation figures are thin and should be read with caution. The measured signal is strongest for office work.

The display rule that follows: any ranked table of occupation extremes on this site filters to work_pct ≥ 25%, or flags below-threshold rows inline. Otherwise the “most automated” slots fill with occupations whose usage is mostly students and hobbyists (caretakers at 7% work use, kitchen assistants at 15%).

And say the bigger one plainly: the per-occupation usage numbers are global Claude usage fingerprints for each occupation, applied to UK employment weights. They answer “how is AI used in this job worldwide, scaled to how many Britons do it”. The one genuinely UK usage cut in the dataset is the country slice, shown as the Britain-vs-world strip on the measured page.

Source: AEI use_case split (work / personal / coursework), Apr + May 2026, CC-BY, employment-weighted.

One more texture · teach-me, not do-it-for-me

Automate-vs-augment isn't the only split. Some usage is people asking AI to teachthem a domain, not to produce anything. That “learning” mode is a minority everywhere (about 9% of usage on average), but it concentrates in regulated, knowledge-application roles: emergency services, care management, law and skilled technical trades use AI to learn the rules far more than most jobs do. AI is a study aid as much as a doing-machine in the professions that must keep current with procedure.

Most learning-led · usage share
Fire service officers37%
Social services managers33%
Care home & domiciliary managers33%
Telecoms network installers29%
Solicitors and lawyers26%
Engineering technicians25%

From aei_soc_global_raw.csv (collaboration_learning_pct), rolled to UK SOC, work-filtered (≥45% of usage is work) and jobs ≥ 10k, deduped per SOC. Learning is a MINORITY mode everywhere, mean ~9% across 146 clean occupations, max ~37%, but it concentrates in regulated, knowledge-application work. Claude users only; Apr+May 2026; CC-BY; usage ≠ jobs lost.

And the “what AI makes” chart · how it's built

The home page's writing-machinechart takes AEI's 33 artifact_* metrics (what each conversation produced, model-classified), rolls them O*NET → UK SOC, then job-weights by ONS employment, the same weights as the automation/augmentation split, so both cover the same 23.4M workers. Confounds: the source keeps only per-job shares ≥2%, so the national column sums to ~84%, not 100. The rest is a long tail of rarer outputs; the artifact is what the conversation made, not proof the human shipped it; Claude.ai users only; the crosswalk drops ~9% of codes; Apr+May 2026 cross-section. Built by scripts/build_artifacts_national.py from the committed aei_artifact_by_soc.csv.

The self-audit · scored and measured, against reality

We benchmarked our own model against realised job change. It failed.

The hardest test either layer can face: rank correlation against the realised 2024→2025 employment change per occupation (ONS APS ad-hoc 3410), on the same 272 unit groups. Our scored exposure and outlook came back as noise. The measured automation share came back weak but real. We publish that as a finding: the model failed the benchmark, the measured data carries signal, so measured leads this site.

AEI measured automation share
measured usage
ρ=-0.150p=0.014
signal, weak
Site scored exposure (Gemini, 0-10)
our scored call
ρ=+0.048p=0.433
no signal
Site scored outlook
our scored call
ρ=-0.051p=0.401
no signal

Honesty about the effect size, both ways. Even the measured signal explains only ~2.2% of rank variance, and on the widest join it weakens to ρ=-0.08 (p=0.15, N=329), short of significance. Realised displacement is still nearly flat, which is exactly the gap this site tracks. A signal this size supports reading measured usage as the best available leading indicator. It does not support doom.

Found in the same audit · our own join bug, fixed 2026-07-01

The realised table is SOC2010-coded; everything else here is SOC2020. Our original join matched the two by raw code equality, and 90 of 209 joined occupations, 8.2M workers (24.8% of employment), were matched to a different-meaning occupation: 9233 is Cleaners in SOC2010 and Exam invigilators in SOC2020. The fix is the ONS dual-coded relationship table, committed as a proper crosswalk, which also lifted coverage from 209 to 306 of 369 occupations. Every number in this audit was re-derived after the fix, and the headline casualty (a youth exposure gradient of −3.1pp that corrects to -0.9pp) is logged openly on the gap tracker's corrections log.

uv run --python 3.12 --with pandas --with scipy python scripts/aei_realised_audit.py

Re-derives every number above from committed inputs: the crosswalk (scripts/build_soc2010_crosswalk.py), the rebuilt join (scripts/build_yoy_with_exposure.py), and the audit itself.

Step 1 · inputs

Four public datasets, one join key.

  1. 01
    National Careers Service profiles
    738 occupation pages · scraped April 2025

    Each NCS page has a task list, entry routes, typical hours, salary low/high, union coverage, and a day-in-the-life narrative. This is the richest public UK source for what a role actually involves and what formal qualifications gate entry. The full profile text becomes the input to the exposure rubric.

  2. 02
    SOC 2020 employment (ONS Labour Force Survey)
    412 SOC codes · mapped to NCS titles with a 738→412 many-to-one map

    The ONS Annual Population Survey reports employment counts by SOC 2020 4-digit code. NCS titles are more granular (roles) than SOC codes (occupational families), so each NCS profile is mapped to its SOC parent. Where one SOC covers many NCS entries, employment is split pro-rata by median pay and by role diversity.

  3. 03
    ASHE Table 8 · regional pay distributions
    12 UK regions × 2024 release

    The Annual Survey of Hours and Earnings publishes full-time median pay by region and by SOC. Combined with regional employment, this gives the wage-at-risk figure per region. ASHE is authoritative for UK regional pay and updates annually.

  4. 04
    Gemini 3 Flash · exposure score
    0–10 per occupation · full NCS profile as input

    Gemini 3 Flash was prompted with a calibrated rubric for UK AI exposure. 0 = essentially no LLM traction (e.g. hands-on trades with unpredictable physical environments). 10 = almost fully automatable today (e.g. rules-based tax filing). The prompt enforces UK labour market calibration (“this is a UK role in 2025”) rather than US benchmarks. Each score comes with a one-paragraph rationale that surfaces in the treemap tooltip.

  5. 05
    Gemini 3 Flash · demand elasticity score
    0–10 per occupation · orthogonal axis to exposure

    The missing ingredient: exposure alone doesn't predict outcomes. Admin assistants (exp 9) and software developers (exp 9) share the same automatability, but one grows and one doesn't. The difference is demand elasticity, whether cheaper supply opens up new demand (Jevons) or just removes workers at fixed demand (Anti-Jevons). Gemini 3 Flash was prompted with a four-test rubric (latent demand, marginal volume, fixed external gate, median-worker mode) plus 20 calibration anchors. Every role gets an elasticity score, a one-sentence mechanism, and a gate tag (regulation · population · capital · saturated · none).

Step 2 · the exposure rubric

Why the score is a UK score, not a generic one.

0–2
AI-safe

Physical trades, care work with high human-contact demand, roles where the output is the touch (plumbing, hairdressing, elder care). LLMs get zero purchase on the core task.

3–4
Lightly AI-assisted

Tools the worker uses to be faster (carpenter with CAD, teacher with lesson-plan drafts). AI is useful but not substitutable for the human.

5–6
Mid-range

Mixed cognitive + interpersonal (many management roles, project roles). AI reduces 20–40% of the task but the interpersonal and judgement layer persists.

7–8
High-exposure

The fork. Whether this row is Jevons or Anti-Jevons depends on demand elasticity, not on the score itself. Software engineering sits here (8) but so does admin (7–8): same exposure, opposite outlooks.

9–10
Near-fully automatable

Rules-based processing at scale: tax preparation, first-line customer support, content moderation, recruitment screening. The task is the bottleneck today; within 2–3 years most output is model-generated.

Step 3 · the elasticity axis

The four tests every role is scored against.

A role can be high-exposure and high-elasticity (software: AI can do it AND cheaper code opens up more projects) or high-exposure and inelastic (admin assistant: AI can do it but admin volume doesn't grow as admin gets cheaper). The elasticity score captures that second axis with four explicit tests:

T1Latent demand

Is there huge unmet demand at current prices? YES → elasticity up. Software: infinite feature backlog every org has. Admin: nobody wants more meetings.

T2Marginal volume

Would 10× cheaper supply cause buyers to consume 10×+ more? YES = unbounded wants (code, marketing content, apps). NO = buyers use fixed amount regardless (payslips, patient appointments).

T3Fixed external gate

Is output capped by a fixed external count: UK company count, UK population, UK property stock, licensed quotas? YES caps the score at 5 regardless of other factors. This is why accountants land mid despite being high-exposure.

T4Median-worker mode

What does the median worker in this role do 60–80% of their time? Routine/transactional/compliance → lower elasticity. Advisory/creative/complex → higher. Broad titles (accountant, solicitor, engineer) get scored against the majority, not the top 5% of senior-partner work.

The calibration
The rubric ships with 20 pre-scored anchors spanning the full 0–10 range. These are embedded in the system prompt so every new role is scored relative to them, not in isolation. thinking_budget set to 256 tokens, enough to reason about mechanism without over-fitting. 738 roles scored in 23.3s at ~31 requests/sec with 0 failures.
Honest about this axis
Until recently, elasticity had no external benchmark. Anthropic's Economic Index now gives it one, the measured augmentation share per occupation, from real Claude usage, and our score ranks against it at only ρ 0.17 (N = 300 UK SOC). That weak fit is the strongest reason to treat elasticity as a structured hypothesisabout demand, not a measurement. It earns its place as a qualitative lens (two equally exposed jobs can head opposite ways) and as the signal behind the gender split; it is weakest read as a precise per-role number. The six zones it feeds are deliberately coarse: the largest single bucket is “mixed” (no clear story), the honest answer for ~40% of roles.
Step 4 · the 20 anchors

The roles every new score is triangulated against.

Each dot is a pre-scored anchor embedded in the Gemini 3 Flash system prompt. Their placement on the exposure × elasticity plane defines the rubric, making scoring relative and consistent. A new role inherits coordinates by analogy: closer to “paralegal” (AI 8, elasticity 3) means it inherits Anti-Jevons; closer to “electrician” (AI 2, elasticity 7) means Baumol.

AI EXPOSURE →← DEMAND ELASTICITYJEVONSANTI-JEVONSBAUMOLAI engineerSoftware developerMarketing content creatorData scientistWeb developerStockbrokerSolicitorGeneral accountantGPSecondary teacherElectricianPlumberCare workerCarpenterScaffolderParalegalAdmin assistantPayroll administratorBookkeeperCustomer service assistant
Step 5 · outlook = f(exposure, elasticity)

The formula that converts two scores into a 2035 projection.

outlook = (elasticity − 5) × exposure × 0.55
       + baumol_bump(exposure, elasticity)

// Baumol bump: low-exposure trades with real demand elasticity get
// positive outlook from surrounding wage inflation (electrician, care)
baumol_bump = exposure < 4 ? (4 − exposure) × 2.0 × (elasticity / 5) : 0

Worked examples: software developer (exp 9, elast 9) → outlook +19.8%. Admin assistant (exp 9, elast 2) → −14.85%. Plumber (exp 2, elast 6) → +5.9% (Baumol bump dominates). The formula is deliberately simple and readable. Outlook rank is more reliable than absolute values, and the site rolls up rank tables not point forecasts. The constants (the ×0.55, the Baumol multiplier) are authoring choices, not estimated parameters, so read outlook as a transparent ordering of roles, not a forecast.

A separate trajectory layer takes this endpoint and fits a 12-year curve through it, adding a Gaussian augmentation boom centred at 2027 for roles that have both high exposure and high elasticity (the classic Jevons Cliff shape), and overlaying an extra 2030+ automation pressure term for high-exposure + low-elasticity roles (Anti-Jevons compounding). Both the endpoint and the curve shape are intentionally conservative; real-world elasticity gate tightness and regulatory responses could shift every number ±40%.

Step 6 · zone assignment

Exposure × outlook → zone.

Each occupation is assigned one of six zones from its AI exposure score (0–10) and its outlook, the value from the formula above, not an ONS projection. These are the exact thresholds in scripts/apply_elasticity_outlook.py.

ZoneConditionInterpretation
jevonsexposure ≥ 6 AND outlook ≥ +5%Cheaper AI-assisted output expands demand faster than it substitutes for workers.
anti-jevonsexposure ≥ 6 AND outlook < 0%Demand is inelastic or capped, so AI shrinks the workforce that meets the same output.
ambiguous5 ≤ exposure < 6 (any outlook)The unclear middle band. AI does some of the job and the demand call won't resolve cleanly either way.
baumolexposure < 3 AND outlook ≥ +5%Baumol winners: trades, crafts, human-touch services. Wages rise because the task can't scale.
safeexposure < 3 AND outlook < +2%Little AI traction, flat demand. Stable baseline work.
mixedeverything elseMiddle-range cases where neither a Jevons nor Anti-Jevons interpretation clearly wins.
Step 7 · the two wage-pool numbers

Where “£288B” and “£163B” come from.

// Pool in play: all high-exposure wages
exposure_pool = Σ (median_pay × employment)
where exposure ≥ 7 → £288B

// Anti-Jevons: the pool actively shrinking
anti_jevons_pool = Σ (median_pay × employment)
where zone = anti_jevons → £163B

The exposure pool (£288B) is the wage base sitting at the top of the AI exposure curve, the wages that AI touches at all. The Anti-Jevons pool (£163B) is the subset inside it that the model says is actively shrinking because demand is capped. Both figures are computed live from the dataset on this page, not typed in. Neither is a forecast of wages “lost”; they're the size of the bases in play. The Jevons page converts these into three distributional scenarios by applying high/low productivity uplifts asymmetrically.

Step 8 · what this does not do

Known limits.

  • Exposure is a ceiling, not a timestamp. An AI 9/10 score says the task is automatable today, not that the firm has deployed the model or re-worked its processes. Adoption lags capability by 2–5 years in practice.
  • Outlook is a formula, not a forecast. The 2035 outlook is computed from the exposure × elasticity formula above, with hand-chosen constants: a transparent ordering of roles, not an econometric projection.
  • The scatter hides within-occupation variance. “Solicitor” contains M&A associates (high exposure) and immigration solicitors (low exposure). The median score is the right fleet-level metric; don’t read it as a per-career prediction.
  • Regional splits use employment-weighted aggregates. A region’s exposure score is the employment-weighted mean of its occupation mix. Two regions with identical scores can therefore have very different underlying profiles.
  • Cascade series is directional, not a forecast. The 7-layer cascade projection uses transparent elasticities to show plausible compounding. Treat the £480B/yr 2035 figure as a stress test, not a base case.
Data release

Open dataset · JSON API · CSV exports · CC-BY-4.0.

Current version
v2026.03
Released 2026-03-29

Every page on this site derives from this dataset version. Next release target Autumn 2026with refreshed ONS APS + a re-scored elasticity column at temperature > 0 for confidence intervals.

Cite as: UK AI Jobs Explorer · Charlie Morgan · 2026 · v2026.03. API root /api.
Changelog
v2026.07b (realised refresh)2026-07-24
  • Realised macro layer refreshed to the 21 Jul 2026 ONS print (PAYE RTI to June 2026, LMS to April 2026).
  • A pre-registered falsification watch resolved. 18-24 payroll stayed positive and strengthened, +0.4% (+15.0k) against +0.2% (+6.4k) last print, so by our own stated reading the acute youth-displacement story weakens. The verdict sits on its card in the log.
  • New band on the tracker: under-18 payroll, down 9.0% year on year and 25% off its Sep 2022 peak. It is the whole of what is left of the under-25 fall. Confounded by the minimum-wage uprating and by this being the Saturday-job cohort.
  • 16-24 unemployment hit 16.4%, an ~11-year high, while the headline 16+ rate held at 4.9%. Payroll levels and the unemployment rate now point opposite ways for the same cohort.
  • The cascade's four realised series are rebuilt from the committed ONS files by a committed script instead of an external project. Numbers moved slightly across all three charts and the payroll headline moved from -171k (Nov 2025) to -71k (June 2026). Full account in the corrections log on The gap.
v2026.07 (launch + join fix)2026-07-01
  • Live at uk-ai-jobs-explorer.vercel.app as the three-ledger instrument: what firms expect, what AI measurably does, what has actually happened.
  • SOC2010→SOC2020 join rebuilt on the ONS dual-coded relationship table. 90 of 209 raw-code joins (8.19M workers) had been carrying the wrong occupation's exposure data.
  • Youth exposure-by-cohort gradient corrected from −3.1pp to −0.9pp after the join fix. Full account in the corrections log on The gap.
  • Self-audit published: both scored axes benchmarked against realised 2024→25 per-occupation job change. The scored model failed (ρ=+0.05, p=0.43). Measured AEI automation share passed (ρ=−0.150, p=0.014). Measured data leads the site.
  • Measured usage layer (Anthropic Economic Index) joined sitewide: pay staircase, age panels, Britain vs the world, six collaboration modes on every role page.
v2026.06 (realised refresh)2026-06-22
  • Realised macro layer refreshed to the 18 Jun 2026 ONS print (PAYE RTI to May 2026).
  • 18-24 payroll turned positive (+0.2%, +6.4k) for the first time in the series. Acute youth signal softened.
  • New convergence tracker: firms' AI-displacement expectations (BoE DMP) vs realised cohort signal, with a falsification log + skeptic wall.
  • International comparison layer added (12-country AI-labour archetype grid).
  • Earnings + wealth reference layer joined in from the income/wealth dataset.
  • Exposure scores unchanged, still anchored to the March APS ad-hoc 3410 (next refresh: autumn).
v2026.032026-03-29
  • Second axis added: demand elasticity scored 0–10 for all 738 roles by Gemini 3 Flash.
  • Outlook formula switched to (elasticity − 5) × exposure × 0.55 + Baumol bump.
  • Zone assignments updated: ambiguous + baumol + safe + mixed now distinct from jevons / anti_jevons.
  • Per-role elasticity mechanism and gate added to every occupation record.
  • Trajectory curves reshape against the two-axis score rather than generic Working Futures sector trend.
v2026.012026-01-14
  • Initial public release.
  • 738 NCS profiles × ONS SOC 2020 × ASHE Table 8 join, single-axis exposure score.
Go explore

The treemap has every occupation.