Work / product
99chambers.app
Nonpartisan forecasts for every 2026 U.S. Senate, House, governor and state legislative race, published as 18.5K programmatic pages.
- Status
- live, since 2026
- Headline number
- 3,348 organic clicks in its first 17 days
- Link
- 99chambers.app
- Commits
- 1,326 commits · 26 wks
99chambers.app forecasts every 2026 U.S. Senate, House, governor and state legislative race: 89 chambers and about 6,100 seats across all 50 states and DC. Every race, chamber and candidate has its own page, 18.5K pages in all.
What I built
- A data pipeline, end to end. Polite scrapers collect polls, FEC and state campaign-finance filings, candidates and officeholders into Postgres with PostGIS. A forecast model runs nightly, and a nightly publish writes the results to Cloudflare D1.
- The site. Astro, server-rendered on Cloudflare Workers, reading from D1. A Next.js admin sits behind Cloudflare Access.
- Election rules as data. Each state’s rules are a registry file: ranked-choice voting, top-two and top-four primaries, runoffs, fusion voting and multi-member districts. Adding a state means adding a file, not writing new code.
Results
In its first 17 days of search traffic the site reached 3,348 organic clicks and 68.7K Google impressions, at a 4.9% click-through rate and an average position of 10.9. It had no backlinks (Ahrefs Domain Rating 1.7), and daily clicks doubled within a week to a peak of 428.