Simon-Pierre Boucher
All apps & projects
AI Risk Index icon
Web Platform
TypeScript

AI Risk Index

AI job exposure, measured task by task

A transparent, task-based index scoring 923 U.S. occupations from 18,796 O*NET tasks rated by a multi-model LLM panel.

923

occupations scored

18,796

O*NET tasks rated

~225k

dimension ratings

32%

of U.S. wage bill under pressure

194.2M

workers covered (BLS OEWS)

Overview

AI Risk Index scores every U.S. occupation on its exposure to AI-driven automation with a task-based methodology: each of the ~18,800 O*NET task statements is rated individually by a multi-model LLM panel across five weighted dimensions, and occupation scores are derived from importance-weighted task scores. Every number is transparent, versioned, and reproducible.

The index never collapses to one number. Three separate scores answer three different questions — Exposure (is AI technically capable?), Substitution (does AI actually replace the human after cost, barriers, and adoption?), and Augmentation (does AI assist without replacing?). Each ships with a confidence interval derived from rater disagreement, because single-model exposure ratings can vary by an order of magnitude.

The headline run finds 32% of the U.S. wage bill — roughly $4.7T of $14.5T — under substitution pressure, while 47.8M workers sit in high-augmentation occupations against 5.3M in high-substitution ones. The index is explicitly built as adaptation guidance, not doom, and its scores are published under CC BY 4.0.

Key Features

Task-based methodology

Every occupation score is built bottom-up from individually rated O*NET task statements, aggregated with official importance weights — never a vibes-based occupation guess.

Multi-model LLM rater panel

Claude Sonnet 5 and Haiku 4.5 rate every task independently; disagreement between raters becomes the published confidence interval.

Three scores, never collapsed

Exposure, Substitution, and Augmentation answer distinct questions — technical capability, actual replacement, and productivity assistance — and are always reported separately.

Confidence intervals on everything

CI bounds are a worst/best-case envelope over the rater panel, making multi-model disagreement visible instead of hiding it behind a single number.

Pure, deterministic scoring engine

The TypeScript scoring core has no I/O, clock, or randomness — pinned by property-based tests and a published worked example reproduced to three decimals.

Full audit trail

Every rating stores model, prompt version, raw response, parsed score, and rationale — visible on every occupation page by expanding any task.

Versioned public API

Health, machine-readable methodology, occupation search, and full score breakdowns with sub-scores, CI bounds, tasks, and wages — index_version in every payload.

Immutable score runs

Weight, formula, or prompt changes bump INDEX_VERSION with a changelog entry; every published score traces to an immutable run that stays queryable forever.

Colorblind-safe data design

Charts follow a validated palette with CI whiskers, data-table fallbacks, and a dark mode with selected rather than flipped color steps.

How It Works

  1. ETL pipeline (apps/etl)

    Python 3.12 downloads O*NET 30.3 and BLS OEWS, transforms them with committed manifests of hashes and row counts, and loads 1,016 occupations and 18,796 tasks into Postgres.

  2. Rating worker (apps/worker)

    A BullMQ pipeline drives Anthropic Message Batches — one request per task per model with deterministic custom IDs — making runs idempotent and resumable at a 50% batch discount.

  3. Scoring engine (packages/scoring)

    The auditable core: five weighted dimensions, inverted adoption-barriers orientation, importance-weighted aggregation, and CI envelopes — pure, deterministic, and property-tested.

  4. Web and API (apps/web)

    Next.js 14 serves the ranking, insights, occupation detail pages with expandable per-task audit trails, and the versioned public JSON API.

  5. Immutable runs (packages/db)

    Prisma schema for occupations, tasks, the full rating audit trail, and immutable score_runs rows — historical runs stay queryable forever.

Tech Stack

Frontend

Next.js 14
TypeScript (strict)
shared React UI package

Data

PostgreSQL 16
Prisma
Redis + BullMQ

AI Rating

Anthropic Message Batches
Claude Sonnet 5
Claude Haiku 4.5
prompt-cached rubric
schema-constrained JSON

ETL & Sources

Python 3.12
O*NET 30.3
BLS OEWS May 2025
pnpm + Turborepo

Highlights

  • Multi-model replication shows single-model exposure ratings can vary by an order of magnitude — so a single-model index is an artifact; this one makes disagreement visible.
  • Five dimensions with published weights: task automatability (0.35), technical feasibility (0.20), adoption barriers (0.20, inverted — strong barriers protect), cost vs. wage (0.15), and adoption velocity (0.10).
  • Headline finding: 32% of the U.S. wage bill (~$4.7T) overlaps with what AI can plausibly take over — framed explicitly as adaptation guidance, not a payroll forecast.
  • Scores and derived data are CC BY 4.0; the methodology is served live as machine-readable JSON at /api/v1/methodology.
  • Raw data dumps are immutable and never committed — derived artifacts commit manifests only, with hashes and row counts.
  • Grounded in a public research corpus reviewing 20+ existing AI-exposure indices, with a roadmap for human review samples, sensitivity analyses, and EU/France coverage via ESCO and ROME.

Explore AI Risk Index

Task-based AI job-exposure index — the full source is on GitHub.