Imouto

Iceberg App -- Multi-Country AI Job Exposure Pipeline and Frontend

Built a multi-country AI job exposure dataset pipeline (US via O*NET, AU via OSCA/JSA) with Claude-based task scoring and a static SvelteKit frontend featuring job explorer, task breakdown, and country comparison views.

6 Phases
22 Tasks
1 Days

The Problem

The MIT Project Iceberg found that visible AI adoption in tech represents only 2.2% of US labour market wage value, while hidden exposure across administrative, financial, and professional roles is 11.7% -- five times larger. That insight is powerful but abstract. There was no interactive tool that lets individuals explore their own occupation's AI exposure at the task level, compare across countries, or see what their job looks like after AI rather than simply whether it is "at risk".

I wanted to build something that reframes the conversation from "will AI take my job" to "how is AI changing what my job actually involves" -- task by task, country by country.

What I Built

The project has two halves: a Python data pipeline and a SvelteKit frontend.

Pipeline

The pipeline pulls occupation and task data from two national sources:

  • US: O*NET v2 API -- standardised occupation codes, detailed task lists
  • AU: OSCA Excel files for occupation structure, JSA Gen AI scores for pre-computed automation exposure at the ANZSCO unit group level

Each task gets scored by Claude for automatability (full, partial, or human-required), with a bypass path for AU tasks that already have JSA pre-scores. This cut API costs significantly -- over 60% of AU tasks used existing JSA scores instead of hitting Claude.

I also built match.py, which uses Claude to semantically match US occupations to their Australian equivalents. Twenty occupations per country, matched across borders so users can compare how the same role is defined differently in each labour market.

The dataset schema (v2.0) supports multi-country fields: country, source, native_code, id, and matched_id. Validation tooling (validate.py) checks schema compliance and can compare US/AU datasets side by side.

Frontend

The SvelteKit app is fully static -- no backend, no database. Dataset JSON files are imported at build time and baked into the output.

Three views:

  • Job Explorer: Search bar, country toggle, occupation cards with iceberg scores showing the ratio of automatable to human-required tasks
  • Task Breakdown: Every task in an occupation, categorised as full/partial/human, with AI tool badges showing which tools apply
  • Country Comparison: Side-by-side US/AU view of the same occupation, showing how task definitions and scores differ across countries

Design follows a minimal, data-forward approach -- Hanken Grotesk for body, Azeret Mono for labels, IBM Plex Serif for editorial pull quotes. Mobile-responsive down to 390px.

Every piece of UI copy was reviewed for editorial tone. The framing is consistently "job change, not job loss" -- no mention of replacement or elimination anywhere.

What is Next

The pipeline architecture is ready to scale beyond 20 occupations per country. The immediate next steps are Dockerising the frontend for the local home server, wiring it into the shared Caddy reverse proxy, and then applying the solarpunk glassmorphic design system to bring it visually in line with the rest of the agent suite.

Features Delivered

Multi-Source Pipeline Architecture

  • Pluggable data source system with base interface and normalised contracts
  • O*NET v2 API integration for US occupation data
  • Source-agnostic scoring with --country flag
  • Dataset v2.0 schema with multi-country support

Australian Data Sources

  • OSCA Excel parser for 1,156 AU occupations
  • JSA Gen AI score loader with ANZSCO-to-OSCA mapping
  • JSA bypass in scoring pipeline -- skips Claude for pre-scored tasks
  • Curated set of 20 default AU occupations

Country Matching and Validation

  • Claude-powered semantic matching of US to AU occupations
  • Multi-country validation with --compare flag
  • Full pipeline QA tooling

Frontend Explorer and Task Breakdown

  • SvelteKit app with static adapter
  • Job Explorer with search, country toggle, occupation cards
  • Task Breakdown with full/partial/human categorisation and AI tool badges
  • Mobile-responsive layout down to 390px

Frontend Comparison and Polish

  • Country Comparison side-by-side view
  • Editorial tone review for job-change framing
  • Cross-browser and mobile QA