AI Work Index

Implementation Appendix

Complete V4.1 implementation reference. All thresholds match score.ts, synthetic-roles.ts, and validate.ts. This appendix documents the current implementation, including heuristic components that should not be read as causal proof.

Core Formula

net_risk = exposure × (1 − bottleneck) × market_modifier

Where exposure and bottleneck are percentile-ranked (0–1) across all 562 occupations.

Risk Band Boundaries

BandThresholdMeaning
very_low< 0.05Negligible displacement pressure
low0.05 – 0.15Limited pressure; AI likely augments
moderate0.15 – 0.30Mixed; bottlenecks or market provide buffer
high0.30 – 0.50Significant pressure; weaker buffers
very_high≥ 0.50Strong pressure across multiple signals

Impact Type Classification

Based on displacement (net_risk) × augmentation 2×2 matrix. Demand signal override: high displacement + SOL/JiD match → mixed (not at_risk).

TypeRuleDescription
ai_leveragednet_risk < 0.25 AND augmentation ≥ 0.12Low displacement with meaningful augmentation potential
at_risknet_risk ≥ 0.25 AND augmentation < 0.12 AND no demand signalHigh displacement, low augmentation, no market buffer
mixednet_risk ≥ 0.25 AND (augmentation ≥ 0.12 OR demand signal)High displacement but offset by augmentation or demand
stablenet_risk < 0.25 AND augmentation < 0.12Low displacement, low augmentation — minimal AI impact

Augmentation Score

augmentation = exposure × bottleneck × market_resilience_adjusted

BandThreshold
very_high≥ 0.8
high≥ 0.6
moderate≥ 0.4
low≥ 0.2
very_low< 0.2

Market Modifier

market_resilience = 0.6 × market_momentum + 0.4 × occupation_scarcity

market_modifier = 1 − 0.35 × market_resilience

Singapore demand signal bonuses:

SourceMatchBonus
SOL 2026exact+0.15
SOL 2026prefix+0.08
Jobs in Demand 2025exact+0.10
Jobs in Demand 2025prefix+0.05

Confidence Scoring

confidence = weighted_sum(crosswalk, market, freshness, coverage, agreement, sensitivity) − penalties

  • Weights: crosswalk 0.25, market granularity 0.15, source freshness 0.10
  • Weights: source coverage 0.20, signal agreement 0.15, sensitivity 0.15
  • Penalties: one-source direct = 0.05, one-source sub-major fallback = 0.08, one-source major fallback = 0.12, contested signal = 0.04
LevelScore
high≥ 0.7
medium0.45 – 0.7
low< 0.45

Stability Stress Test

V4.1 uses a seeded 1,000-run Monte Carlo perturbation of exposure, bottleneck, and market resilience. The current implementation perturbs the three inputs independently but deterministically, so identical source data reproduces the same 10th/90th percentile optimistic and pessimistic bounds across builds.

LabelCondition
stableBand unchanged under all perturbations
watch±1 band shift
sensitive±2+ band shifts

Seniority Modifiers (V3.2)

Applied in the Outlook engine. Adjustments scale with the occupation's variant_sensitivity (0–1), derived from institutional knowledge, relationship intensity, regulatory weight, and coordination requirements.

LevelExposureBottleneck
Entry-level+0.14 × sensitivity−0.12 × sensitivity
Mid-career00
Senior / Lead−0.10 × sensitivity+0.12 × sensitivity

Synthetic Role Rules

  • Base score = weighted blend of 2–4 component SSOC occupation scores
  • Workflow context adjustment is bounded to 0.85–1.15 around the blended prior
  • All component SSOC codes validated against occupations.json at build time
  • Confidence depends on component coverage, dispersion, primary-match distance, and workflow variant sensitivity
  • Founder, gig, and independent-role families cannot publish High confidence
  • High-dispersion roles (stddev > 0.08) show risk range visualization, widened by variant sensitivity
  • Low-dispersion roles (< 3pp from primary) link to closest official occupation
  • Always labeled "Estimated modern role" in the UI

Validation Checks (129 total)

  • Record completeness (562 occupations, all fields present)
  • Crosswalk coverage and evidence signals
  • Distribution sanity (band counts, impact type ratios)
  • Anchor occupation directional checks (5 occupations)
  • Confidence coverage, source-weight, and contested-signal checks
  • Labour monitor data integrity
  • Synthetic role SSOC validity (all components must exist)
  • Synthetic role workflow and confidence sanity checks
  • Alias SSOC validity (all references must exist)
  • Archetype classification coverage (no professional/manager gets field_manual)
  • Workflow overlay completeness (17 archetypes)
  • Transition capacity sanity checks

Structural AI exposure scores, not employment predictions. Methodology

V4.1 structural score · 2024 wages · Q4 2025 full live monitor · 562 occupations · 88 roles

Latest official labour release: MOM Labour Market Report Q4 2025 (2026-03-20)

Made by Kirill So · Built with Claude & GPT
MIT Licensed · Open Source · Structural release V4.1 · Updated 2026-03-20