
Karpathy Jobs Bls Visualizer
Fork and run the karpathy/jobs pipeline to explore BLS Occupational Outlook data in a treemap and layer custom LLM-scored metrics like AI exposure.
Overview
Karpathy-jobs-bls-visualizer is an agent skill most often used in Idea (also Validate, Build) that guides you through the BLS job-market treemap repo, scraping utilities, and optional LLM scoring pipeline.
Install
npx skills add https://github.com/aradotso/trending-skills --skill karpathy-jobs-bls-visualizerWhat is this skill?
- 342 occupations from BLS Occupational Outlook Handbook in an interactive treemap (area = employment size)
- Color layer switchable: growth outlook, median pay, education, or custom LLM-scored metrics via OpenRouter
- Setup: git clone, uv sync, playwright chromium install, optional .env for OPENROUTER_API_KEY
- Forkable scoring pipeline—new prompt, re-run scoring, new treemap color layer
- Live reference demo at karpathy.ai/jobs
- 342 occupations in OOH dataset
- uv sync + playwright chromium install in setup
Adoption & trust: 1.2k installs on skills.sh; 31 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want to compare hundreds of BLS occupations visually or test a custom ‘AI exposure’ metric without manually rebuilding scrapers and a treemap UI.
Who is it for?
Indie researchers and builders validating market narratives with official BLS OOH data plus optional LLM-derived occupation scores.
Skip if: Teams that need production HR compliance datasets, real-time hiring feeds, or zero local Python/Playwright setup.
When should I use this skill?
Triggers include explore BLS job market data, visualize occupational outlook handbook, add custom LLM scoring to jobs treemap, scrape BLS occupation pages, or run the jobs visualization pipeline.
What do I get? / Deliverables
You have a running local jobs visualization pipeline and can fork prompts to produce new treemap color layers from re-scored occupation data.
- Local treemap visualization of BLS occupation data
- Optional custom-scored occupation dataset for new color layers
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Job-market and occupation research belongs in Idea before you commit to a niche, pricing story, or hiring plan. Interactive OOH treemaps answer ‘what occupations look like statistically’—core discovery research, not shipping code.
Where it fits
Compare median pay and growth outlook across occupation clusters before picking a product theme.
Map which occupations are largest by employment size to frame audience size stories.
Run a custom LLM prompt to score AI exposure and sanity-check whether your idea targets shrinking vs growing roles.
Adjust scrape parsers and re-run the scoring pipeline after BLS page structure changes.
How it compares
Research pipeline skill for exploring public BLS OOH data—not a packaged SaaS analytics MCP server.
Common Questions / FAQ
Who is karpathy-jobs-bls-visualizer for?
Solo builders and researchers who want to clone karpathy/jobs, visualize BLS occupational outlook metrics, and optionally add LLM-scored layers via OpenRouter.
When should I use karpathy-jobs-bls-visualizer?
In Idea research when exploring job-market structure; in Validate when stress-testing a niche against growth and pay data; in Build when customizing scrape/score scripts for your fork.
Is karpathy-jobs-bls-visualizer safe to install?
Cloning and running third-party repos requires your own review; check the Security Audits panel on this Prism page and audit network, API key, and Playwright usage before running scrapers.
SKILL.md
READMESKILL.md - Karpathy Jobs Bls Visualizer
# karpathy/jobs — BLS Job Market Visualizer > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. A research tool for visually exploring Bureau of Labor Statistics [Occupational Outlook Handbook](https://www.bls.gov/ooh/) data across 342 occupations. The interactive treemap colors rectangles by employment size (area) and any chosen metric (color): BLS growth outlook, median pay, education requirements, or LLM-scored AI exposure. The pipeline is fully forkable — write a new prompt, re-run scoring, get a new color layer. **Live demo:** [karpathy.ai/jobs](https://karpathy.ai/jobs/) --- ## Installation & Setup ```bash # Clone the repo git clone https://github.com/karpathy/jobs cd jobs # Install dependencies (uses uv) uv sync uv run playwright install chromium ``` Create a `.env` file with your OpenRouter API key (required only for LLM scoring): ```bash OPENROUTER_API_KEY=your_openrouter_key_here ``` --- ## Full Pipeline — Key Commands Run these in order for a complete fresh build: ```bash # 1. Scrape BLS pages (non-headless Playwright; BLS blocks bots) # Results cached in html/ — only needed once uv run python scrape.py # 2. Convert raw HTML → clean Markdown in pages/ uv run python process.py # 3. Extract structured fields → occupations.csv uv run python make_csv.py # 4. Score AI exposure via LLM (uses OpenRouter API, saves scores.json) uv run python score.py # 5. Merge CSV + scores → site/data.json for the frontend uv run python build_site_data.py # 6. Serve the visualization locally cd site && python -m http.server 8000 # Open http://localhost:8000 ``` --- ## Key Files Reference | File | Description | |------|-------------| | `occupations.json` | Master list of 342 occupations (title, URL, category, slug) | | `occupations.csv` | Summary stats: pay, education, job count, growth projections | | `scores.json` | AI exposure scores (0–10) + rationales for all 342 occupations | | `prompt.md` | All data in one ~45K-token file for pasting into an LLM | | `html/` | Raw HTML pages from BLS (~40MB, source of truth) | | `pages/` | Clean Markdown versions of each occupation page | | `site/index.html` | The treemap visualization (single HTML file) | | `site/data.json` | Compact merged data consumed by the frontend | | `score.py` | LLM scoring pipeline — fork this to write custom prompts | --- ## Writing a Custom LLM Scoring Layer The most powerful feature: write any scoring prompt, run `score.py`, get a new treemap color layer. ### 1. Edit the prompt in `score.py` ```python # score.py (simplified structure) SYSTEM_PROMPT = """ You are evaluating occupations for exposure to humanoid robotics over the next 10 years. Score each occupation from 0 to 10: - 0 = no meaningful exposure (e.g., requires fine social judgment, non-physical) - 5 = moderate exposure (some tasks automatable, but humans still central) - 10 = high exposure (repetitive physical tasks, predictable environments) Consider: physical task complexity, environment predictability, dexterity requirements, cost of robot vs human, regulatory barriers. Respond ONLY with JSON: {"score": <int 0-10>, "rationale": "<1-2 sentences>"} """ ``` ### 2. Run the scoring pipeline ```python # The pipeline reads each occupation's Markdown from pages/, # sends it to the LLM, and writes results to scores.json # scores.json structure: { "software-developers": { "score": 1, "rationale": "Software de