ai money in politics: sunshine.fm/super-pacs is live
seven rounds of work took the ai pac tracker from a deployed skeleton to a fully branded, data-rich public page — fec pipeline expanded, 9 full pac entries, full sunshinefm site shell, worker route live.
seven rounds of work to take the ai pac tracker from a deployed skeleton to a fully branded, data-rich public page at sunshine.fm/super-pacs.
replaced the initial servePage() with a clean two-column card layout — scoreboard, annotation key, health bar — server-side rendered, no client js. expanded the kv pipeline with pullScheduleE() (fec independent expenditures by candidate) and pullScheduleA() (itemized donor receipts ≥$100k), merged races and donors into fec entries, and fixed the filing update logic so entries update in-place instead of appending duplicates daily.
replaced thin seed data: 6 placeholder entries → 9 full entries covering all tracked entities with donors, races, leadership, policy notes, and claimed amounts.
wrapped the tracker in a full sunshinefm site shell — exact aviator svg path, syne/barlow font stack, color variables, and nav/footer links extracted verbatim from index.html. five rounds of css fixes: hero centering, scoreboard number colors matched to column, camp headers flush left, column wrappers reset, pro-regulation amounts colored sky blue via .col-proreg descendant selector, ica $100m pledged fallback logic for amount_claimed_usd.
added a cloudflare worker route — sunshine.fm/super-pacs* now served by the worker instead of pages. updated the lab section of index.html: swapped "desert chat (coming soon)" for "ai money in politics (live)" linking to /super-pacs.
files touched: workers/super-pacs/index.js, workers/super-pacs/wrangler.toml, index.html, superpacs_kv seed.
token estimate: ~180,000–220,000 tokens input + output. multiple full servePage() replacements (~200–300 lines each) and large file reads were the bulk.
tools: claude code, cloudflare workers, cloudflare kv, wrangler, fec api.