How We Calculate Risk
Every figure on this platform traces back to a public government statistical release. Here's what we measure, where the data comes from, and how to read the scores.
Every occupation receives a score from 0 (very safe) to 100 (critical risk). The score is generated by a proprietary multi-factor model that analyses several dimensions of labour market health simultaneously. The specific weighting methodology is part of our proprietary research process.
When multiple dimensions deteriorate at the same time — for example, hiring is falling and wages are stagnating and the occupation is highly automatable — the score rises nonlinearly. A single weak signal alone rarely pushes a job into the danger zone. It's the combination and interaction of signals that matters. The model also applies dynamic confidence weighting based on data completeness per occupation.
| What We Measure | Data Source | What It Tells You |
|---|---|---|
| Hiring Demand | Government vacancy and job openings data | Are employers still hiring for this role — or pulling back? |
| Wage Trends | Government wage statistics | Are wages rising with inflation, stagnating, or falling? |
| Employment Levels | Government labour force surveys | Is the total workforce in this occupation growing or shrinking? |
| AI & Automation Exposure | O*NET task analysis data | How much of this job's daily work could be done by software or machines? |
| Structural Vulnerability | Cross-dimensional analysis | How do these factors compound when multiple signals move together? |
| Tier | Score Range | Interpretation | Recommended Action |
|---|---|---|---|
| CRITICAL | 75 – 100 | Multiple simultaneous stress signals: hiring collapse, wage compression, AND high AI exposure | Immediate upskilling or adjacent career pivot warranted |
| HIGH | 60 – 74 | Strong structural headwinds — at least two major factors declining | Monitor closely; begin contingency planning |
| ELEVATED | 45 – 59 | Emerging pressure — one significant factor declining | Stay aware of industry trends; maintain skill currency |
| LOW | 30 – 44 | Minor signals; below-average risk relative to labour market | No immediate action required |
| STABLE | 0 – 29 | All indicators positive or flat; occupation is structurally sound | Career path well-supported by current labour market |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Occupational Employment & Wage Statistics (OES) | Annual (May) | Employment, median wage, occupation codes | SOURCE |
| Job Openings and Labor Turnover Survey (JOLTS) | Monthly | Job openings, hires, separations | SOURCE |
| Employment Projections 2023–2033 | Biennial | Projected employment change by occupation | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Indeed Job Postings Index | Weekly | Job postings YoY change by sector | SOURCE |
| JOLTS Total Job Openings (JTSJOL) | Monthly | Total job openings in thousands | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Labour Force Characteristics by Occupation (14-10-0023-01) | Monthly | Employment by NOC occupation, Canada total | SOURCE |
| Job Vacancies by Occupation (14-10-0288-01) | Quarterly | Job vacancies, offered wages by NOC | SOURCE |
| Average Hourly Wages by Occupation (14-10-0063-01) | Monthly | Median hourly wages by occupation | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Employment by Occupation (EMP04) | Quarterly | Employment by UK SOC major group | SOURCE |
| Average Weekly Earnings (EARN01) | Monthly | Average weekly pay, total and regular | SOURCE |
| Vacancies (VACS02) | Monthly | Job vacancies by industry sector | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Labour Force, Australia (6202.0) | Monthly | Employment by ANZSCO major group | SOURCE |
| Job Vacancies, Australia (6354.0) | Quarterly | Total job vacancies by industry | SOURCE |
| Wage Price Index (6345.0) | Quarterly | WPI by industry, quarterly % change | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Employment by ISCO-08 (lfsa_egai2d) | Annual | Employment by 2-digit ISCO occupation, 34 countries | SOURCE |
| Labour Cost Index (lc_lci_r2_q) | Quarterly | Wage cost index by NACE sector, base 2020 | SOURCE |
| Job Vacancy Statistics (jvs_q_nace2) | Quarterly | Job vacancies by NACE sector, 29 countries | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Labour Force Survey — Employment by Occupation | Monthly | Employment by JSCO major group | SOURCE |
| Monthly Labour Survey — Wages | Monthly | Average wages by industry sector | SOURCE |
| Dataset | Cadence | Fields Used | Link |
|---|---|---|---|
| Job Vacancy Counts by Occupation | Real-time | Live job postings by ISCO-mapped category, 16 countries | SOURCE |
Each country uses a different occupational classification system. To enable cross-country comparisons, IsJobSafe maps occupations using the following standards:
| Country | Classification System | Version | Mapping Method |
|---|---|---|---|
| US | Standard Occupational Classification (SOC) | SOC 2018 | Direct — all BLS data uses SOC codes |
| CA | National Occupational Classification (NOC) | NOC 2021 | BLS-to-NOC crosswalk via O*NET / HRSDC mapping tables |
| GB | UK Standard Occupational Classification (UK SOC) | SOC 2020 | SOC-to-UKSOC crosswalk; major group alignment |
| AU | Australian and NZ Standard Classification (ANZSCO) | ANZSCO 2013 | ANZSCO major group to SOC major group alignment |
| EU (34) | International Standard Classification of Occupations (ISCO-08) | ISCO-08 | ISCO 2-digit to SOC major group alignment via custom mapping |
| JP | Japan Standard Classification of Occupations (JSCO) | JSCO 2009 | JSCO major group to ISCO/SOC alignment |
| Script | Source | Country | Rows | Status | Last Run |
|---|---|---|---|---|---|
| compute_risk.py | COMPUTED | ALL | 2,847 | SUCCESS | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 0 | ERROR | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 2,847 | SUCCESS | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 2,847 | SUCCESS | 2/25/2026 |
| fetch_eurostat.py | Eurostat | ALL | 5,083 | SUCCESS | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 2,847 | SUCCESS | 2/25/2026 |
| fetch_eurostat.py | Eurostat | ALL | 5,083 | SUCCESS | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 2,847 | SUCCESS | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 0 | ERROR | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 0 | ERROR | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 0 | ERROR | 2/25/2026 |
| compute_risk.py | COMPUTED | ALL | 2,847 | SUCCESS | 2/25/2026 |
IsJobSafe is a quantitative signal system, not a career counselling service. Scores reflect statistical trends in public data, not individual job security.
Occupational data release cycles vary by country and dataset. Some scores may lag real-world conditions by 1–3 months.
Cross-country comparisons use aligned major occupation groups. Detailed sub-occupation comparisons between countries are not directly comparable.
AI exposure scores are derived from O*NET task descriptors using a composite model. They reflect structural susceptibility to automation, not guaranteed displacement timelines.
All data is sourced from public government statistical agencies. IsJobSafe does not modify, estimate, or interpolate source figures.