Methodology
AI exposure and job displacement are different objects.
A software developer and a data entry clerk can both score high on AI exposure, but one gets augmented (MOM lists software developers as in-demand in 2025) while the other faces substitution. We deliberately separate technical exposure from market translation using a three-layer structural score.
Our scoring pipeline uses government survey data plus published academic and institutional research. No LLM assigns a risk score — avoiding the circularity of using AI to score AI replaceability. The core formula is fully deterministic: every input is an observable signal from a published dataset. We publish the structural score separately from the Singapore context bundle so users can audit the core model independently from current labour conditions and support layers.
Validation & Limits
What this model does: Measures structural AI displacement pressure using observable inputs. It tells you which occupations face the most technical overlap with AI capabilities and which have the strongest human bottlenecks and market buffers.
What it does not do: Predict actual job losses or forecast hiring trends. The core score still captures structural displacement pressure, not realised reinstatement. We now publish a separate offset-potential layer to approximate some cushioning forces, but it should not be read as a direct measure of new-task creation or job growth.
TL;DR
Net risk = AI exposure × (1 − human bottleneck) × market modifier. Exposure uses a reliability-weighted blend of up to 4 academic/institutional sources. No LLM in the pipeline — every input is from published data.
Three-Layer Structural Score
Layer 1: Exposure
How much does this job overlap with current AI capabilities? The V4.1 exposure layer blends available signals from AIOE, Anthropic observed usage, Eloundou GPT exposure, and the ILO occupational exposure index.
Layer 2: Human Bottleneck
How much does this job require judgment, presence, and responsibility that resists automation? From Pizzinelli theta, computed from O*NET Work Context data.
Layer 3: Market Resilience
Is Singapore's labor market for this occupation growing or shrinking? Group-level employment and wage trends plus occupation-level wage scarcity proxies.
These three layers produce the structural score. Around that core score we add confidence, labour evidence, synthetic-role estimates, offset potential, and scenario tooling rather than hiding everything inside one opaque number.
Separate Singapore context modules now show industry footprint and worker-profile composition from official Section D labour-force tables and wage-by-sex tables. The industry footprint card now also shows sector wage anchors from MOM's industry wage tables where the occupation is covered. The labour monitor carries both published vacancy rates and published vacancy counts at cluster level. These context blocks are displayed as evidence around the score, not folded into hidden multipliers, and are published in a separate Singapore context bundle alongside the main score dataset.
| Layer | Measures | Source |
|---|---|---|
| Exposure | AI capability overlap with job abilities | Reliability-weighted blend of matched percentile-ranked exposure sources |
| Human Bottleneck | Judgment, presence, responsibility that resists automation | Pizzinelli theta from O*NET (2023), percentile-ranked |
| Market Resilience | Employment momentum + occupation wage scarcity | MOM employment/wage trends + occupation wage structure |
| Net Displacement Risk | Published as risk bands (Very Low to Very High) with confidence | Composite formula |
The Formula
net_risk = exposure_ensemble × (1 - bottleneck) × market_modifier
Where:
market_modifier = 1 - 0.35 × market_resiliencemarket_resilience = 0.6 × market_momentum + 0.4 × occupation_scarcity
The market modifier only dampens risk (it is always ≤ 1.0). Weak markets don't amplify risk beyond the technical signal — they simply provide less buffer. Maximum reduction: 35%.
Layer 1: Exposure
Exposure Ensemble
V4.1 treats exposure as an ensemble layer, not a single index. AIOE is the baseline source; Anthropic observed usage, Eloundou GPT exposure, and the ILO occupational exposure index are added when crosswalk coverage exists.
exposure_ensemble = weighted_mean(percentile-ranked matched exposure inputs)
Each source is percentile-ranked to a 0–1 scale and then blended using deterministic source weights based on recency, construct fit, coverage quality, and validation support. Occupations with fewer matched sources are kept, but should be read with lower evidential coverage.
What it does NOT measure: whether exposure leads to augmentation or replacement.
Layer 2: Human Bottleneck (Theta)
Pizzinelli Theta (Complementarity)
From Pizzinelli et al. (2023, IMF). Computed from 12 O*NET variables across 6 dimensions. Higher theta = stronger human bottleneck = harder to substitute.
- Communication: Face-to-Face Discussions
4.C.1.a.2.l, Public Speaking4.C.1.a.2.c - Responsibility: Outcomes/Results
4.C.1.c.2, Health/Safety of Others4.C.1.c.1 - Physical Conditions: Outdoors
4.C.2.a.1.c, Physical Proximity4.C.2.a.3 - Criticality: Consequence of Errors
4.C.3.a.1, Decision Freedom4.C.3.a.4, Decision Frequency4.C.3.a.2.b - Routine (inverted): Degree of Automation
4.C.3.b.2(inverted), Structured vs. Unstructured Work4.C.3.b.8 - Skills: O*NET Job Zone (1-5, scaled to 0-1)
θ = mean(6 dimension means, each normalized to 0-1)
bottleneck = percentile_rank(θ) across all matched occupations
Scale: 0 (lowest percentile — most automatable) to 1 (highest percentile — strongest human bottleneck)
No double-counting: We use AIOE and theta as separate, independent
layers. We do NOT use C-AIOE (which is aioe × f(theta)) as an input
to net_risk, because multiplying by (1 - theta) would double-count complementarity.
C-AIOE is computed and displayed as a reference score for IMF comparability only.
Layer 3: Market Resilience
Market data is a calibrator, not an override. Employment and wages are lagging and confounded. The market layer can reduce net risk by up to 35% — it never amplifies risk beyond the technical signal.
Separately, we build a Singapore industry-footprint layer from the official industry × occupation cross-tab plus industry vacancy series. That layer is shown on occupation and synthetic-role pages as contextual evidence, not as a direct score multiplier.
Market Momentum (group-level)
market_momentum = mean(pctile(group_empl_cagr), pctile(group_wage_cagr))
10-year employment CAGR (2015-2025) and 8-year wage CAGR (2015-2023) from MOM data, per major occupation group. Percentile-ranked across the 8 major groups.
Occupation Scarcity (occupation-level)
occupation_scarcity = mean(pctile(log(q75/q25)), pctile(wage_median / group_median))
Two wage-structure signals: (1) log wage spread (winsorized at 1st/99th percentile) as a scarcity proxy, and (2) within-group wage position (above group median = relative specialization). Both percentile-ranked across all 562 occupations.
Combined Market Modifier
market_resilience = 0.6 × market_momentum + 0.4 × occupation_scarcity
market_modifier = 1 - 0.35 × market_resilience
Group-level trends get 60% weight (direct measurement). Occupation-level wage structure adds within-group differentiation at 40% weight (noisier signal). The 0.35 cap means the market layer can reduce net risk by up to 35%.
Singapore Demand Signals (occupation-level bonuses)
Two MOM data sources provide occupation-level demand flags that boost market resilience:
- Shortage Occupation List (SOL) 2026: EP/COMPASS shortage list (released Nov 2025, effective Jan 2026). 36 occupations across semiconductors, healthcare, ICT, green economy, maritime, agritech, financial services. Matched to 62 SSOC codes. +15% market resilience bonus.
- Jobs in Demand 2025: Broader resident demand list (released Dec 30, 2025). Covers PMET and non-PMET roles: software developers, nurses, waiters, drivers, security officers, auditors. Matched to 29 SSOC codes. +10% market resilience bonus.
Where both signals match (e.g., software developer appears on both SOL and Jobs in Demand), bonuses stack (capped at 1.0). SOL is EP/COMPASS-focused (PMET bias); Jobs in Demand offsets this by covering non-PMET roles.
Labour Monitor (cluster-level evidence layer)
We ingest official MOM/SingStat raw feeds from data.gov.sg and compute a unified labour monitor for three broad occupation clusters. Where the published raw series is annual or incomplete, we attach the latest MOM quarterly enrichment snapshot instead of pretending the raw feed is finer than it is:
- PMET — Professionals, Managers, Executives & Technicians
- Clerical, Sales & Service Workers
- Production & Transport Operators, Cleaners & Labourers
Three signals are computed per cluster (where data is available):
- Vacancy rate trend: 4-quarter-over-4-quarter average trend. Signal: >+5% = heating up (+1), <-5% = cooling down (-1), else stable (0).
- Net hiring pressure: recruitment rate minus resignation rate (when available). Signal: net >+0.1pp = positive (+1), <-0.1pp = negative (-1), else neutral (0).
- Retrenchment trend: count and 4Q-over-4Q trend (when available). Falling retrenchment = positive (+1), rising = negative (-1).
The three signals are summed into an overall label:
total = vacancy_signal + hiring_signal + retrenchment_signal
2-3 = "strong" | 1 = "moderate" | 0 = "weak" | <0 = "deteriorating"
This is cluster-level data, not occupation-level. It provides context about the broad labour market conditions for each occupation's cluster, displayed as a labour market card on occupation pages. It is not a direct scoring input — we show it to ground the analysis in current labour-market reality without overfitting a sparse cluster-level series into the per-occupation formula.
Data displayed per cluster: vacancy rate with year-over-year trend and multi-year sparkline (2021–2025), recruitment vs resignation rates, retrenchment incidence per 1,000 employees, and re-entry rates (proportion of retrenched workers finding employment within 6 and 12 months).
Data sources: vacancy rates and counts, recruitment/resignation rates, retrenchment by occupation group, and re-entry into employment statistics from data.gov.sg/MOM, with MOM labour-monitor enrichment attached for the live monitor artifact vintage (Q4 2025 full) where the public raw series stays annual or sparse. Updated when a fresher official release is available.
Anthropic Economic Index (exposure calibration)
Observed AI usage rates from Claude conversations (HuggingFace dataset, Jan 2026 report). Calibrates the theoretical AIOE exposure by up to ±30% based on the gap between theoretical and observed AI usage per occupation.
Applied to 507 of 562 occupations via SOC code crosswalk. Key finding: some occupations (data entry, customer service) show higher observed usage than AIOE predicts, while others (teachers, software developers) show lower observed usage.
Used as calibration, not replacement. Anthropic measures Claude usage specifically, not universal AI adoption.
Risk Bands
Net risk is published as bands, not pseudo-precise decimals:
| Band | Range | Meaning |
|---|---|---|
| Very Low | 0.00 – 0.05 | Negligible displacement pressure |
| Low | 0.05 – 0.15 | Limited pressure; AI likely augments |
| Moderate | 0.15 – 0.30 | Mixed; bottlenecks or market provide buffer |
| High | 0.30 – 0.50 | Significant pressure; weaker bottlenecks and/or declining market |
| Very High | 0.50+ | Strong pressure across multiple signals |
Augmentation & Impact Type
A single displacement risk number misses half the story. We compute augmentation potential from the same three layers, with a different formula:
displacement_risk = exposure × (1 - bottleneck) × market_modifier
augmentation = exposure × bottleneck × market_resilience
Augmentation is highest when AI capability overlaps with strong human bottlenecks AND the local market has demand for the occupation. High exposure alone does not guarantee augmentation — the occupation must also have irreplaceable human elements (high bottleneck) that make AI a complement rather than a substitute.
Crossing displacement with augmentation gives a 2×2 impact type:
| Low Augmentation | High Augmentation | |
|---|---|---|
| High Displacement | At Risk — AI substitutes, weak bottleneck | Mixed — conflicting signals, high uncertainty |
| Low Displacement | Stable — AI has limited overlap | Augmented — AI amplifies, human essential |
Impact type is classified from net_risk and augmentation thresholds: net_risk ≥ 0.25 = "high displacement", augmentation ≥ 0.12 = "high augmentation". Occupations with high displacement and official demand signals (SOL/JiD) are classified as "mixed" rather than "at risk".
Confidence Scores
Every score carries a visible confidence indicator:
confidence = weighted_sum(crosswalk, market, freshness, coverage, agreement, sensitivity) − penalties
| Factor | How it is assigned | Typical range |
|---|---|---|
| Crosswalk quality | Direct = 1.0, sub-major fallback = 0.6, major fallback = 0.3, then reduced further by crosswalk dispersion where mapped SOC scores disagree. | 0.3 - 1.0 |
| Market data granularity | Baseline = occupation wage structure + group employment/wage trends. Exact official demand evidence adds more occupation-specific Singapore signal than prefix-inferred or absent demand evidence. | 0.65 - 0.85 |
| Source freshness | Weighted from the matched exposure sources' recency scores inside the reliability-weighted ensemble. | 0.55 - 0.98 |
| Source coverage | Rewards occupations with broader matched exposure coverage across AIOE, Anthropic, Eloundou, and ILO. | 0.10 - 1.00 |
| Signal agreement | Penalizes occupations whose matched exposure sources materially disagree or where only one source is available. | 0.25 - 0.95 |
| Sensitivity | Derived from the Monte Carlo stability label: stable > watch > sensitive. | 0.40 - 0.85 |
Published as: High (≥0.7) / Medium (0.45–0.7) / Low (<0.45).
In the current implementation, High confidence is reserved for direct, clean, multi-source cases only. Contested occupations, sparse one-source matches, and fallback mappings are capped below High even when their raw score crosses the threshold.
Classification
Building on the IMF framework, occupations are classified into four impact types based on the 2×2 matrix of displacement risk and augmentation potential:
At Risk
High displacement, low augmentation (e.g., data entry, bookkeepers)
Augmented
Low displacement, high augmentation (e.g., software developers, surgeons)
Stable
Low displacement, low augmentation (e.g., electricians, childcare workers)
Mixed
High displacement, high augmentation — conflicting signals, outcome depends on adoption path
TL;DR
2 of 4 cluster-level directional checks pass against Q4 2025 MOM data. BLS cross-country check shows weak but significant negative correlation (rho = -0.145, p < 0.01). This is a structural pressure score, not a job-loss prediction.
Validation
We backtest structural risk scores against actual labour market outcomes at the cluster level (Q4 2025 data). This tests whether higher-risk clusters show worse outcomes than lower-risk ones.
Cluster-Level Directional Checks
Only 3 labour clusters are available, so statistical
power is limited. This validates broad direction, not precision. Cluster-level data masks
within-cluster variation. Full raw results in data/backtests/q4-2025-validation.json.
Cross-Country Convergent Check (BLS Projections)
We mapped 530 of 562 Singapore SSOC occupations to US BLS 2024–2034 employment projections via the ISCO-08 → SOC crosswalk. Spearman rank correlation between our structural risk scores and BLS projected employment change: ρ = -0.145 (p < 0.01, n = 530). Higher risk scores are associated with weaker projected employment growth.
| Risk band | n | Avg BLS change |
|---|---|---|
| Very Low | 104 | +3% |
| Low | 188 | +3.4% |
| Moderate | 105 | +3.1% |
| High | 88 | +2.1% |
| Very High | 45 | -3.3% |
The highest-risk band is the only one with projected negative employment growth. Caveat:
BLS projections include non-AI factors (demographics, trade, policy). The modest
correlation (ρ = −0.14) is expected — our model measures AI-specific
structural pressure, not total employment change. Treat this as weak convergent
evidence, not strong external validation. Full results in data/backtests/bls-crosswalk-validation.json.
Temporal Robustness Check (Singapore labour history)
Using the fixed cluster risk ordering, we also test whether higher-risk clusters show weaker vacancy movement over multiple observed periods. Vacancy rate YoY alignment is 1.00 across 2 periods; vacancy count YoY alignment is 1.00 across 3 periods. Annual hiring-net alignment is much weaker at 0.30 across 10 years.
This strengthens the claim that the score tracks long-run pressure better than short-run
hiring appetite. Full raw results in data/backtests/multi-period-validation.json.
Calibration Diagnostics (mapping quality and confidence)
We also check whether the broadest, most trusted score population behaves as expected in the external cross-check. Direct SSOC mappings cover 92.6% of the matched BLS sample and retain a significant negative relationship (ρ = -0.16, p < 0.01). The combined high/medium-confidence population covers 98.5% of matched occupations and shows the same negative alignment (ρ = -0.145, p < 0.01).
Fallback mappings remain directionally negative but are much smaller (n = 39, ρ = -0.233). The low-confidence tier is intentionally tiny (n = 8) and should be treated as noisy rather than over-interpreted.
This is a calibration check for mapping quality and confidence labels, not separate
Singapore outcome truth. Full results in data/backtests/calibration-diagnostics.json.
Occupation-Family Convergent Check
To get beyond the 3 broad labour clusters without pretending we have occupation-level Singapore outcome data, we also aggregate occupations into 29 2-digit SSOC families and compare average family risk with average BLS projected employment change. The result is still directionally negative (ρ = -0.243), but weaker than the main vacancy-side checks and not significant at p < 0.01.
This is a more granular convergent cross-check, not Singapore realised labour truth.
Full raw results in data/backtests/occupation-family-validation.json.
Honest framing: Structural risk scores capture long-run pressure, not short-run employment fluctuations. A single exposure measure poorly predicts actual unemployment (Frank et al., 2025, PNAS Nexus). Research is "still in the first inning" (Brookings/PIIE, 2026) with no consensus on measurement.
Ensemble Exposure Measures
Frank et al. (2025) found that individual AI exposure scores are poor predictors of actual unemployment, but an ensemble of multiple measures improves fit over single scores. That motivates our multi-source exposure layer, but does not by itself prove any particular weighting scheme. We therefore use a deterministic reliability-weighted blend across multiple lenses:
| Measure | Source | Coverage |
|---|---|---|
| Felten AIOE | Academic index (Felten et al., 2021) — task-ability overlap with 10 AI applications | Primary exposure score. Covers all 562 occupations via SOC crosswalk. |
| Anthropic Observed Usage | Anthropic Economic Index (2026) — actual LLM usage patterns by occupation | 90.2% of occupations calibrated. Used to adjust AIOE where theory diverges from practice. |
| GPTs-are-GPTs | Eloundou et al. (2023) — LLM task-level exposure via human + GPT-4 assessment | Integrated in V4.1 ensemble with reliability weighting when matched via SOC crosswalk. |
| ILO AI Exposure | ILO (2024) — task-level AI automation potential scored across ISCO occupations | Integrated in V4.1 ensemble with reliability weighting when matched via ISCO crosswalk. |
Where multiple measures are available, we report whether they agree ("consensus high", "consensus low") or diverge. Divergence flags occupations where theory-based and observed measures disagree — often the most interesting cases for investigation.
Worked Examples
Both occupations score high on AI exposure. But their outcomes differ dramatically because of the bottleneck and market layers:
Software Developer
- Exposure: pctile(aioe) = 0.86
- Bottleneck: pctile(theta) = 0.19
- Market resilience: 0.92
- Market modifier: 0.68
- Net risk: 0.47 (High)
- Impact type: Mixed
Data Entry Clerk
- Exposure: pctile(aioe) = 0.87
- Bottleneck: pctile(theta) = 0.03
- Market resilience: 0.34
- Market modifier: 0.88
- Net risk: 0.74 (Very High)
- Impact type: At Risk
This is why a single "AI exposure score" is misleading. The software developer has higher exposure than many "at risk" occupations, yet their job is growing. The structural score captures this distinction.
TL;DR
Singapore SSOC codes map to US O*NET scores via ISCO-08 crosswalk. A seeded Monte Carlo stability routine generates deterministic optimistic/pessimistic risk bounds. Seniority modifiers adjust outlook for entry/mid/senior levels. Synthetic roles are weighted blends of official occupations.
Crosswalk: Singapore to US Scores
AIOE and theta scores originate from US O*NET data. We map Singapore's SSOC occupations to these scores via:
- SSOC 2020 maps to ISCO-08 unit groups via SingStat concordance
- ISCO-08 maps to US SOC 2010 via BLS crosswalk
- When one ISCO maps to multiple SOC codes, we average the scores
- Fallback 1: 2-digit ISCO sub-major group average (crosswalk quality starts at 0.6)
- Fallback 2: 1-digit major group average (crosswalk quality starts at 0.3)
Current coverage: 92.7% direct match (521/562), 7.1% sub-major fallback (40), 0.2% major fallback (1).
What This Version Shows
V4.1 implements the full three-layer structural score with a reliability-weighted 4-source exposure ensemble, human bottleneck (theta percentile), and market resilience (group-level employment/wage trends + occupation-level wage structure). Net risk is published as risk bands with visible confidence. Augmentation potential, impact type classification, and rule-based outlook/scenario modelling are included. 88 estimated modern roles (AI engineer, product manager, prompt engineer, startup operator, creator, gig-worker variants, etc.) are scored as weighted occupation priors plus workflow-aware context adjustments, with dispersion analysis for high-variance compositions.
Seniority adjustment (V3.2+): the Outlook section now supports experience-level modifiers (Entry-level / Mid-career / Senior). Adjustments scale with each occupation's variant sensitivity — roles with high institutional knowledge (e.g., software engineering) vary more by seniority than roles with low context-dependence (e.g., truck driver). Grounded in: Stanford "Canaries in the Coal Mine" (2025) showing entry-level displacement pressure, and Anthropic Economic Index (2026) showing 14% drop in job-finding for 22-25 year olds in AI-exposed occupations.
Labour monitor is built from official vacancy, recruitment/resignation, retrenchment, and re-entry feeds, then supplemented by MOM quarterly enrichment where the published raw series is annual or incomplete. It remains a cluster-level evidence layer, not a hidden scoring multiplier.
Singapore context bundle now publishes industry footprint, worker profile, sector wage anchors, geography context, macro labour context, national AI-adoption context, and official transition infrastructure as separate artifacts around the structural score.
Transition support is a hybrid layer: deterministic transition-capacity scoring plus official Singapore programme and training-system anchors (Jobs Transformation Maps, SkillsFuture / WSG programmes, WSQ activity). It is published separately from the structural score and should be read as decision support, not observed mobility data.
Not yet implemented: Occupation-level employment data (MOM OED, not publicly released; requested from agencies), company-size modifiers (startup vs enterprise context), and job postings pipeline for real-time demand signals.
Synthetic Role Methodology
Modern job titles (AI Engineer, Product Manager, Prompt Engineer) don't map to a single official SSOC occupation. We estimate scores by blending 2-4 official occupations with weights reflecting the typical task composition of each modern role, then applying a bounded workflow-context adjustment so the result is not treated as a flat occupation average.
Composition
Each synthetic role defines component SSOC occupations and weights (e.g., Startup CTO = 40% Software Manager + 30% Solution Architect + 30% Software Developer). Scores are built from a weighted occupation prior plus a workflow-aware context adjustment derived from coordination intensity, ambiguity, relationship depth, regulatory load, and physicality. All component SSOC codes are validated against the occupations dataset.
Dispersion
When component occupations have very different risk scores, the weighted average may not represent any single reality. For roles with high dispersion (stddev > 0.08), we show the full risk range. That range is widened further when the workflow overlay says the role is highly context-sensitive, so founder, gig, and hybrid GTM roles do not get a false sense of precision.
Confidence
Confidence is role-native, not hardcoded. It depends on component coverage, component agreement, primary-match distance, and workflow variant sensitivity. Founder, gig, and independent-role families are capped below High confidence even when the component blend is tight. Use component occupation pages for the strongest underlying evidence.
Experience Level Adjustment
The Outlook section supports experience-level modifiers that adjust displacement pressure based on research showing AI affects different seniority levels unequally.
| Level | Exposure Adj. | Bottleneck Adj. | Research Basis |
|---|---|---|---|
| Entry-level | +14pp × sensitivity | −12pp × sensitivity | More routine tasks, less institutional knowledge. Anthropic (2026): 14% drop in job-finding for ages 22-25. Stanford DEL (2025): entry-level faces disproportionate pressure. Brynjolfsson et al. (2023): largest AI productivity gains among junior workers, compressing the experience gap. |
| Mid-career | 0 | 0 | Baseline — current scores reflect mid-career task composition. |
| Senior / Lead | −10pp × sensitivity | +12pp × sensitivity | More judgment/strategy work, higher institutional knowledge. Noy & Zhang (2023): AI narrows experience gap. Dell'Acqua (2023): seniors better at knowing AI's capability boundary. |
"Sensitivity" refers to the occupation's variant_sensitivity score (0–1), derived from institutional knowledge, relationship intensity, regulatory weight, and coordination requirements. High-sensitivity roles (e.g., software engineering: 0.55) vary more by seniority than low-sensitivity roles (e.g., truck driver: 0.15).
Implementation Constants
Key constants and thresholds used in the scoring pipeline. All values are deterministic and reproducible.
| Parameter | Value | Details |
|---|---|---|
| Anthropic calibration cap | ±30% | exposure + 0.3 × (observed - exposure) |
| SOL exact bonus | +15% | Exact match to Shortage Occupation List adds 15% to market resilience |
| SOL prefix bonus | +8% | Prefix-inferred match to SOL adds 8% to market resilience |
| Jobs in Demand exact bonus | +10% | Exact match to Jobs in Demand adds 10% to market resilience |
| Jobs in Demand prefix bonus | +5% | Prefix-inferred match to Jobs in Demand adds 5% to market resilience |
| Augmented threshold | net_risk < 0.25 AND augmentation ≥ 0.12 | Low displacement with meaningful augmentation potential |
| At Risk threshold | net_risk ≥ 0.25 AND augmentation < 0.12 | High displacement pressure with weak augmentation buffer |
| Stable threshold | net_risk < 0.25 AND augmentation < 0.12 | Low displacement, low augmentation — AI has limited overlap |
| Mixed | net_risk ≥ 0.25 AND augmentation ≥ 0.12 | High displacement AND high augmentation — conflicting signals |
| Stability stress test | ±5 percentile points | Each of the three core layers is perturbed by ±5 percentile points to test band stability |
| Confidence: high | ≥ 0.7 | Confidence score ≥ 0.7 published as "High" |
| Confidence: medium | 0.4 – 0.7 | Confidence score between 0.4 and 0.7 published as "Medium" |
| Confidence: low | < 0.4 | Confidence score below 0.4 published as "Low" |
| Market modifier cap | 0.35 | market_modifier = 1 - 0.35 × market_resilience |
Known Limitations
- Exposure ≠ displacement — Market translation uses heuristics and lagging indicators. Captures displacement but not reinstatement (Acemoglu & Restrepo, 2019).
- US-centric ability data — O*NET surveys US workers; task composition may differ in Singapore.
- Hierarchical market granularity — Momentum is major-group level; wage structure adds occupation-level differentiation as a proxy.
- Estimated occupation employment —
estimated_sg_employment_thousandsis derived from published Labour Force 2024 sub-major totals, not official per-occupation headcounts. Wage-pool analysis separately uses a labeled BLS-weighted proxy rather than pretending this estimate is measured employment. - Static exposure snapshot — AIOE reflects 2021 AI capabilities.
- Career-stage blind spot — Scores the occupation as a whole; junior/senior impact likely differs (Stanford Canaries, 2025).
- Crosswalk imprecision — 7.3% of occupations use fallback scores. Confidence score reflects this.
- Wage-spread ambiguity — High wage ratio can mean specialization or seniority ladder (~16% effective weight).
- Cluster-level labour monitor — Only available for three broad clusters, not all 562 occupations.
TL;DR
12 academic papers + 43 data sources. Key influences: Felten AIOE, Pizzinelli bottleneck, Anthropic observed usage, Frank et al. ensemble approach. References link to DOI pages where available and official source pages otherwise.
Claims We Make
Every public claim on the site is tracked with its evidence source and strength.
The core structural score covers 562 Singapore SSOC occupations.
mom_ows_2024
The canonical structural score is deterministic and does not use an LLM in the scoring loop.
aioe_2021, pizzinelli_theta_2023, anthropic_economic_index_2026
V4.1 uses a reliability-weighted 4-source exposure ensemble (AIOE, Anthropic, Eloundou, ILO).
aioe_2021, anthropic_economic_index_2026, eloundou_gpt_exposure_2023, ilo_genai_2025
O*NET task and technology-skill profiles are used as supporting explanatory context on detail pages, not as direct score inputs.
onet_occupation_data, onet_task_statements, onet_technology_skills
The headline score measures structural AI pressure, not a forecast of job losses.
aioe_2021, pizzinelli_theta_2023, mom_labour_monitor_2025
Offset potential is published separately as a heuristic support layer and should not be read as a direct measure of reinstatement or realised job creation.
mom_labour_monitor_2025, mom_job_vacancy_rates, mom_sol_2026, mom_jobs_in_demand_2025, skillsfuture_transition_mapping, wsg_careersfinder, onet_task_statements
estimated_sg_employment_thousands is an estimated Singapore occupation headcount, not an official detailed occupation count.
mom_lfr2024_table_d8
The wage-pool headline uses a BLS-weighted proxy employment field rather than official Singapore occupation headcounts.
mom_lfr2024_table_d8, bls_projections_2024_2034
The BLS occupation comparison is a convergent cross-check and should be interpreted directionally, not as Singapore outcome truth.
bls_projections_2024_2034
Across the available multi-period Singapore cluster data, higher-risk clusters consistently show weaker year-over-year vacancy movement than lower-risk clusters.
mom_labour_monitor_2025, mom_job_vacancy_rates, mom_job_vacancy_counts
Academic References
Felten, Raj & Seamans (2021)
"Occupational, Industry, and Geographic Exposure to Artificial Intelligence: A Novel Dataset and Its Potential Uses." Strategic Management Journal, 42(12), 2195-2217.
Pizzinelli et al. (2023)
"Labor Market Exposure to AI: Cross-country Differences and Distributional Implications." IMF Working Paper WP/23/216.
IMF Singapore (2024)
"Impact of Artificial Intelligence on the Singapore Labor Market." IMF Selected Issues Paper SIP/2024/040.
Acemoglu & Restrepo (2019)
"Automation and New Tasks: How Technology Displaces and Reinstates Labor." Journal of Economic Perspectives, 33(2), 3-30. Displacement-vs-reinstatement framework referenced in our limitations.
Brynjolfsson, Li & Raymond (2023)
"Generative AI at Work." NBER Working Paper 31161. Largest AI productivity gains among junior workers; narrows experience gap.
Eloundou et al. (2023)
"GPTs are GPTs: An Early Look at the Labor Market Impact Potential of Large Language Models." arXiv:2303.10130. Published in Science (2024).
Demirer et al. (2025)
"Canaries in the Coal Mine: Early Signals from AI's Impact on the Labor Market." Stanford Digital Economy Lab.
Frank et al. (2025)
"AI Exposure Predicts Unemployment Risk." PNAS Nexus. Ensemble of exposure measures outperforms any single score.
Ministry of Manpower, Singapore (2025)
"Jobs in Demand 2025." Released December 30, 2025.
Ministry of Manpower, Singapore (2025)
"Job Vacancies 2024." Released March 28, 2025.
Ministry of Manpower, Singapore (2025)
COMPASS Shortage Occupation List (SOL). Released November 2025, effective January 1, 2026.
Anthropic (2026)
"The Anthropic Economic Index: Economic Primitives." January 15, 2026. Dataset on HuggingFace.
State of the Science
Research on AI and the labour market is evolving rapidly. Our model is informed by — and honest about — the current consensus:
Individual AI exposure scores are poor predictors of actual unemployment
Frank et al. (2025, PNAS Nexus) found that single exposure measures "misrepresent AI's impact" — but an ensemble of multiple measures accounts for 18% more variation in actual outcomes.
Research is "still in the first inning"
Brookings/PIIE (2026) reports no consensus on how to measure AI's labour market impact. BLS employment projections show only weak correlation between AI exposure and projected job decline.
No clear aggregate displacement through 2025
Yale Budget Lab finds no aggregate displacement signal. But entry-level pressure in exposed occupations is emerging (Stanford "Canaries in the Coal Mine," 2025).
Our approach: structural pressure model, not prediction
We measure where AI has the most technical overlap with human tasks, adjusted for human bottlenecks and market signals. Validated directionally at cluster level (2/4 checks pass vs Q4 2025 data) and temporally through vacancy rank-order checks, not causally at occupation level.
Reproduce Our Results
The entire scoring pipeline is open source and deterministic:
bun run scripts/score.ts
This reads raw data from data/raw/,
computes all scores, and writes data/occupations.json.
Version History
4-source exposure ensemble (AIOE + Anthropic + Eloundou + ILO). Reliability-weighted blend of all available matched inputs, plus separate published offset-potential and transition-support layers. BLS convergent cross-check, temporal vacancy validation, industry momentum spread, and 129 validation checks.
Seniority modifiers (entry-level / mid-career / senior) scaled by variant sensitivity. 2-input ensemble exposure (AIOE + Anthropic). Cluster-level backtesting (3/4 directional checks pass). Labour monitor moved to Q4 2025 full. 80 synthetic roles. Archetype classification expanded to cover all SSOC prefixes. 48 validation checks. Outlook simplified to 2 tabs with seniority toggle.
Three-layer scoring: exposure (AIOE), bottleneck (theta), market resilience. Produces: net risk, augmentation, impact type, stability, confidence. Anthropic observed-usage calibration. SOL 2026 and Jobs in Demand 2025 demand signals. Cluster-level labour monitor (Q4 2025 vacancy, recruitment/resignation, retrenchment, re-entry rates). Stability stress testing. 75 estimated modern roles. Rule-based outlook/scenario engine with 3 presets.
Added market resilience layer (employment trends + wage scarcity). Introduced risk bands and confidence scoring. Replaced single-score output with multi-layer evidence display.
Initial release. Two-layer model: AIOE exposure + Pizzinelli theta complementarity. 562 SSOC occupations via ISCO crosswalk.