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.