See exactly which parts of your job AI will affect — task by task, with timeframes.
TaskFolio is a task-level AI exposure analysis tool for the Australian job market, helping 14.4M workers understand which specific parts of their job AI will affect — and when.
🌐 Live: ai-job-exposure.setiyaputra.me
📊 361 occupations • 6,690 tasks
🎨 Design: Neobrutal UI
Existing tools show occupation-level AI exposure ("Software Developer: 9/10") with no actionable breakdown. TaskFolio breaks jobs into individual tasks and shows:
- Which specific tasks in your job are changing
- How soon each task will be affected (now, 1-2y, 3-5y, 5-10y, 10y+)
- How much AI will help vs. replace (automation % vs augmentation %)
- Employment outlook — 10-year growth projections from Jobs and Skills Australia
Get a personalised AI exposure analysis for YOUR specific job — no install, no API keys, no data leaves your machine.
# 1. Clone the repo
git clone https://github.com/suryast/task-folio.git
cd task-folio
# 2. Run the profiler (zero dependencies — stdlib only, no pip install needed)
cd scripts
python3 -m profilerThat's it. No npm install, no pip install, no API keys. The profiler uses only Python standard library and reads data directly from the repo.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 YOUR PERSONAL AI EXPOSURE REPORT
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Software Engineer (ANZSCO 2613)
Analyzing 8 of 18 tasks
──────────────────────────────────────────────────────────────
📊 EXPOSURE SCORES
──────────────────────────────────────────────────────────────
Overall Exposure ████████████████░░░░░░░░░░░░░░ 53% 🟡 MEDIUM
🤖 Automation Risk ██████░░░░░░░░░░░░░░░░░░░░░░░░ 18%
🧠 Augmentation ██████████░░░░░░░░░░░░░░░░░░░░ 35%
──────────────────────────────────────────────────────────────
⏳ WHEN WILL AI AFFECT YOUR WORK?
──────────────────────────────────────────────────────────────
⚡ Happening now █████████░░░░░░░░░░░░░░░░ 38%
📅 1-2 years ████████░░░░░░░░░░░░░░░░░ 30%
🔮 3-5 years █████░░░░░░░░░░░░░░░░░░░░ 22%
🌅 5-10 years ██░░░░░░░░░░░░░░░░░░░░░░░ 10%
- Search for your occupation (fuzzy matching across 361 Australian jobs)
- Select which tasks you actually perform day-to-day
- Allocate your time across selected tasks
- (Optional) Enrich with a local LLM for personalised insights
- Get a colour-coded terminal report + Markdown + self-contained HTML
- Python 3.11+
- (Optional) Ollama or any OpenAI-compatible local LLM for enrichment — the profiler works without it
Point your agent (Claude Code, Cursor, Codex, etc.) at this repo. See AGENTS.md for:
- Chat-based profiling — agents ask you questions conversationally and build your profile through dialogue
- Programmatic API — import the profiler modules directly for scripting
graph TB
subgraph "Data Sources"
A1[Anthropic Economic Index<br/>1M conversations<br/>CC-BY]
A2[O*NET Database<br/>US task descriptions<br/>Public domain]
A3[Jobs & Skills Australia<br/>ANZSCO taxonomy<br/>Employment data]
A4[Claude Sonnet 4.5<br/>AU-specific generation<br/>214 occupations]
end
subgraph "Data Pipeline"
B1[ISCO Triangulation<br/>ANZSCO → ISCO-08 → SOC]
B2[Task Generation<br/>Unmapped occupations]
B3[Timeframe Prediction<br/>AU regulatory context]
B4[AI Exposure Scoring<br/>Weighted average]
end
subgraph "Storage Layer"
C1[(Cloudflare D1<br/>6,690 tasks<br/>361 occupations)]
C2[(KV Cache<br/>1hr TTL)]
end
subgraph "API Layer"
D1[Hono Worker API<br/>taskfolio-au-api]
end
subgraph "Frontend"
E1[Next.js 16 + Turbopack]
E2[D3 Treemap Visualization]
E3[Task Breakdown Pages]
end
A1 & A2 & A3 --> B1
A4 --> B2
B1 & B2 --> B3
B3 --> B4
B4 --> C1
C1 <--> C2
C2 <--> D1
D1 --> E1
E1 --> E2 & E3
style A1 fill:#e1f5fe
style A2 fill:#e1f5fe
style A3 fill:#e1f5fe
style A4 fill:#e1f5fe
style C1 fill:#fff3e0
style C2 fill:#fff3e0
style D1 fill:#f3e5f5
style E2 fill:#e8f5e9
style E3 fill:#e8f5e9
flowchart LR
subgraph Input
A[361 ANZSCO<br/>Occupations]
B[O*NET<br/>19,000+ tasks]
C[Anthropic Index<br/>3,074 tasks]
I[ISCO-08<br/>ILO Crosswalk]
end
subgraph Processing
D[ISCO Triangulation<br/>92 high-confidence<br/>55 unmapped]
E[Merge Anthropic<br/>Data]
F[Generate Tasks<br/>Claude Sonnet 4.5<br/>3,616 tasks]
G[Predict Timeframes<br/>AU context]
H[Calculate Scores<br/>Weighted average]
end
subgraph Output
I[6,690 Tasks<br/>100% coverage]
J[AI Exposure<br/>0.31-1.00]
end
A --> D
B --> D
C --> E
D --> E
D --> F
E --> G
F --> G
G --> H
H --> I
H --> J
style D fill:#bbdefb
style E fill:#c5cae9
style F fill:#d1c4e9
style G fill:#f8bbd0
style H fill:#ffccbc
style I fill:#c8e6c9
style J fill:#c8e6c9
pie title AI Impact Timeframes (6,690 tasks)
"Now - Already happening" : 1570
"1-2 years - Early deployment" : 2071
"3-5 years - Mainstream adoption" : 2103
"5-10 years - Significant barriers" : 726
"10+ years - Fundamental constraints" : 220
| Timeframe | Tasks | % |
|---|---|---|
| Now | 1,570 | 23.5% |
| 1-2 years | 2,071 | 31.0% |
| 3-5 years | 2,103 | 31.4% |
| 5-10 years | 726 | 10.9% |
| 10+ years | 220 | 3.3% |
Highest AI Exposure (90-100%):
- Legislators, Greenkeepers, Retail Managers, Sales Managers, General Managers
Medium AI Exposure (60-80%):
- Sales Assistants (73%), Teachers (75%), Software Developers (85%), Accountants (78%)
Lowest AI Exposure (30-40%):
- Domestic Cleaners (31%), Actors/Dancers (33%), Car Detailers (34%), Kitchenhands (38%)
Full methodology: docs/METHODOLOGY.md
| Metric | Definition |
|---|---|
| AI Exposure | Weighted average of task-level automation + augmentation (0-100%) |
| Half-Life | Estimated years until AI can perform ~50% of occupation tasks |
| Future-Proof Index | Composite of AI exposure (40%), pay risk (30%), employment outlook (30%) |
Inspired by AI Work Index (Singapore) by @kirso:
| Metric | Definition |
|---|---|
| Impact Type | 2×2 classification: At Risk, Augmented, Stable, or Mixed |
| Displacement Score | exposure × (1 - bottleneck) — how much AI replaces |
| Augmentation Score | exposure × bottleneck — how much AI amplifies |
| Risk Band | 5-tier scale: Very Low → Low → Moderate → High → Very High |
| Data Confidence | High/Medium/Low based on mapping method |
Improved occupation mapping using official international crosswalks:
ANZSCO (AU) ──→ ISCO-08 (ILO) ──→ SOC (US/O*NET)
│ │ │
└──ABS─────────┴──BLS───────────┘
concordance crosswalk
| Mapping Method | Occupations | Confidence |
|---|---|---|
| ISCO Triangulation | 92 | High |
| Manual Override (V1.3) | 95 | High |
| Enhanced Fuzzy Match (V1.3) | 19 | Medium |
| Fuzzy Title Match | 15 | Low |
| Unmapped (AU-specific) | 40 | Low |
Impact Type Matrix:
| Low Augmentation | High Augmentation | |
|---|---|---|
| High Displacement | At Risk | Mixed |
| Low Displacement | Stable | Augmented |
The bottleneck factor is calculated from the ratio of augmentation-oriented vs automation-oriented tasks in each occupation.
Major improvement to both occupation mapping and task data quality.
| Confidence Tier | Before | After | Change |
|---|---|---|---|
| 🟩 High (≥0.8) | 63 | 210 | +147 |
| 🟨 Medium (0.7-0.8) | 84 | 111 | +27 |
| ⬜ Low (unmapped) | 214 | 40 | -174 |
Coverage: 93% of occupations now have verified O*NET mappings (up from 41%).
- Manual overrides for 95 high-employment AU occupations (Sales Assistants → Retail Salespersons, Truck Drivers → Heavy Truck Drivers, Software Programmers → Software Developers, etc.)
- Enhanced fuzzy matching with weighted multi-strategy scoring (token_sort + token_set + partial_ratio)
- Full O*NET occupation list (1,016 SOC codes) used as matching target
Replaced synthetic (LLM-only) tasks with O*NET-backed, Australian-context tasks for all 174 newly-mapped occupations:
| Source | Before | After |
|---|---|---|
onet (empirical) |
1,362 | 4,220 |
anthropic (empirical) |
1,097 | 1,097 |
synthetic (LLM-only) |
3,616 | 601 |
| Total | 6,075 | 5,918 |
Empirical coverage: 90% of all tasks are now backed by verified O*NET occupation mappings (up from 40%).
Each regenerated task includes:
- Australian regulatory context (TGA, ASIC, APRA, Fair Work, SafeWork, state licensing)
- Australian terminology and industry norms
- Physical vs cognitive task classification
- AI automation and augmentation estimates with timeframes
- New treemap grouping — "Group by: Data Confidence" shows mapping quality distribution
- Backfilled taskfolio_score for all tasks with
ROUND((automation_pct + augmentation_pct) × 100) - Normalized source labels — canonical
onet,anthropic,syntheticacross D1, frontend, and pipeline - Note: Australian Skills Classification (ASC) was investigated but is decommissioned (Dec 2023). A replacement National Skills Taxonomy is under development by Jobs and Skills Australia.
Remaining 40 unmapped occupations are AU-specific roles with no clean O*NET equivalent (e.g., Aboriginal Health Workers, specific AU regulatory roles). These retain LLM-generated task data.
Fixed a bug where the Data Confidence widget on occupation pages showed 0/N for both Empirical and Synthetic task counts. The frontend was filtering for legacy source labels (onet, synthetic, llm) that no longer matched the D1 data after the O*NET v2 regeneration:
| Frontend expected | Actual D1 value | Count |
|---|---|---|
onet |
onet_v2 |
1,362 |
synthetic / llm |
claude_generated |
3,616 |
anthropic |
anthropic |
1,097 ✅ |
Updated OccupationClient.tsx source filters to match all current D1 source labels.
| Source | Description |
|---|---|
| Anthropic Economic Index | Task automation/augmentation from 1M AI conversations (CC-BY 4.0) |
| O*NET Database | US occupational task descriptions (Public Domain) |
| Jobs and Skills Australia | ANZSCO taxonomy, employment data, wages |
| JSA Employment Projections | 10-year employment growth forecasts (May 2025 → May 2035) |
| ISCO-08 | ILO International Standard Classification of Occupations |
| ABS ANZSCO-ISCO Concordance | Official ANZSCO → ISCO-08 mapping |
| BLS SOC-ISCO Crosswalk | Official SOC → ISCO-08 mapping |
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React, D3.js |
| API | Hono (Cloudflare Workers) |
| Database | Cloudflare D1 (SQLite) |
| Hosting | Cloudflare Pages |
Cost: $0/month (Cloudflare free tier)
# Clone and install
git clone https://github.com/suryast/task-folio.git
cd task-folio
pnpm install
# Run frontend
pnpm dev
# Run API (separate terminal)
cd api && pnpm dev- Code: MIT License
- Data: Per source terms (see Attribution)
- Anthropic for the Economic Index (1M conversation dataset)
- O*NET Program (US Dept of Labor/ETA) for task descriptions
- Jobs and Skills Australia for ANZSCO taxonomy and employment data
- Autor, Levy & Murnane (2003) for the "jobs as tasks" framework
- @karpathy for the original US Job Market Visualizer
- @ychua for the Australian adaptation with LLM-powered scoring pipeline
- @kirso for AI Work Index (Singapore) — V1.1 methodology inspiration (2×2 impact classification, risk bands, confidence scoring)
- Cloudflare for infrastructure
@software{taskfolio2026,
author = {Setiyaputra, Surya},
title = {TaskFolio: Task-level AI Exposure Analysis for Australian Occupations},
year = {2026},
url = {https://github.com/suryast/task-folio}
}Built in Sydney, Australia 🇦🇺
