Skip to content
Projects

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.

https://github.com/alanvaa06/unemployment_analysis

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 .env BLS 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).

GitHub →