labor-market · BLS · plotly
Unemployment Analysis
Has AI taken a toll on US jobs? Reproducible BLS labor-market pipeline feeding a 13-exhibit interactive Plotly dashboard served via Flask.
Overview
A reproducible, data-driven attempt to answer one question: since ChatGPT launched in November 2022, is there a detectable AI signal in US employment, hiring, and unemployment? The pipeline pulls roughly 900 BLS series across five programs, joins external AI-exposure indices, and feeds a single self-contained HTML dashboard whose exhibits recompute in the browser as the comparison window changes. The analysis is deliberately built to argue against itself, pairing every AI-exposure story with a baseline-flip control and a counter-example.
What it does
- BLS data pipeline: a declarative series registry feeding a BLS API v2 client, pulling ~900 series across five programs (CPS, LAUS, CES/SAE, JOLTS, OEWS) into a revision-aware parquet cache.
- AI-exposure join merges the BLS series with AIOE/AIIE and GPTs-are-GPTs indices to test whether AI-exposed industries move differently.
- 13 interactive Plotly exhibits — contribution waterfall, industry beeswarm, OLS scatter, event study, JOLTS quadrant, state percentile fan, Beveridge curve, and more — all recomputing client-side from a baseline/compare date selector.
- Flask app adds one-click BLS refresh, a runtime API-key box, print-to-PDF export, and per-chart Excel export.
- Static build (
dashboard.publish) ships a snapshot dashboard to GitHub Pages. - Reproducible by design:
pip install, a.envBLS key (or the public keyless tier), one command to fetch data and one to build the dashboard, backed by a 62-test TDD suite.
Stack
Python · pandas · Plotly · Flask.
Status
Open source. Live dashboard published via GitHub Pages (static snapshot); local Flask app adds BLS refresh, PDF, and Excel export. Test-driven — 62 tests (pytest).