turnout.apppublic · no accounts · no tracking
About

Civic infrastructure
with provenance.

turnout.app is a public, accountless ballot lookup — every signal cited back to its source of record. Built so any voter, journalist, or organizer can verify the work without trust.

public-source URLs
505
catalogued + verified weekly
ingest pipelines
12
federal, vendor, and curated feeds
MCP tools
26
open to any LLM client, no key
political divisions
53,551
all 50 states + DC (TIGER 2024)
Updated every 10 minutes. See /status for the full operational view.
The five-tier confidence stack

Every fact carries its tier.

Trust isn’t binary. Some sources are state authorities of record; others are research datasets or our own plain-language summaries. We label which is which on every fact.

  1. 1
    Official source of record
    State and federal authorities. The version that controls the actual ballot, district, or filing.
    TIGER/Line 2024 · Census ACS · FEC OpenFEC · FVAP eVAG · Census Geocoder
  2. 2
    Official-republished
    Vendors and aggregators that republish state SOS data on contract. Trustworthy, but one step removed.
    Google Civic · Voting Information Project · Clarity Elections · Florida ENR
  3. 3
    Curated
    Trusted civic-data publishers and reference projects. Edited, but not the source of record.
    Congress.gov v3 · OpenStates v3 · NCSL voter-ID · NGA governors · @unitedstates/congress-legislators
  4. 4
    Historical / research
    Academic and archival datasets. Useful for trend analysis; not yet ingested in production.
    OpenElections · MIT Election Lab · EAC EAVS · VEST
  5. 5
    turnout.app interpretation
    Plain-language summaries and light enrichment authored by us. Always labeled. Never a substitute for verbatim ballot text.
    ballot-measure summaries · district context · explainer copy
Browse the full registry at /sources.
Two-sided architecture

Civic data: maximally open.
Voter data: maximally closed.

Public side · turnout.app
Open ballot lookup. This site.
  • · No accounts. No tracking. No PII.
  • · Public reference data only (divisions, rules, candidates).
  • · Citable, AI-friendly, free MCP for any client.
Private side · canvass.turnout.app
Self-custody canvasser app.
  • · Accounts required. End-to-end encrypted.
  • · Server stores ciphertext only; orgs hold keys.
  • · Self-host via docker-compose. AGPL-3.0.

The boundary is load-bearing. The public side never reads voter PII; the private side never writes PII to the public side. The two surfaces share OCD-IDs as keys and nothing else.

The stack

Boring infrastructure, on purpose.

Geography
PostgreSQL 16 + PostGIS 3.4. TIGER/Line 2024 canonical; 2025 staged for the redistricting cycle. Tile delivery via cloudflared tunnel at tiles.turnout.app.
Ingest
12 active pipelines on daily systemd timers — FEC, Census ACS, Congress.gov, OpenStates, NCSL, FVAP, plus the source-registry verifier sweep.
Public API
26 MCP tools at mcp.turnout.app, all unauthenticated. JSON-RPC + HTTP convenience endpoints. Any LLM client can plug in.
Delivery
Next.js static export on Cloudflare Pages. No origin server, no analytics, no cookies beyond what Pages sets to serve the page.
Open-source roadmap. Self-host pathways for the canvasser side ship with M5 (week 14–15).
What you can do with this
01
Look up your ballot
ZIP or address resolves to all 7 political divisions, your representatives, registration deadlines, and how to vote in your state.
Find your ballot
02
Connect Claude / ChatGPT / Cursor
Paste mcp.turnout.app into any MCP-capable client. No API key, no auth, no rate limit gauntlet — just a public civic data layer.
Wire up MCP
03
Audit our sources
Every URL we cite, grouped by tier, with last-verified timestamps from the weekly Playwright sweep. Find a stale link? Open an issue.
Browse the registry
Privacy posture

We don’t know who you are, and we don’t want to. The public Postgres has zero rows of voter PII; the front-end has no analytics. Anything user-identifying on this side of the system is a bug.

  • No accounts. There is no login on this side of the product.
  • No tracking. No third-party analytics, no advertising pixels.
  • No cookies beyond what Cloudflare Pages sets to serve the page.
  • No PII. The public database has zero rows of voter data.
  • No lock-in. Every result has a stable, citable share URL.

The canvasser side has the opposite posture by design: accounts, end-to-end encryption, self-custody keys. The two sides never share PII — not even by accident.

Contributor pathway

Found a bug, a stale URL, a wrong rule?

The weekly verifier sweep currently shows 453/505 sources verified green. The remainder — SPA shells, manual entries, the occasional 4xx — is exactly the kind of work that benefits from many eyes. File an issue when you spot something out of date or wrong.

Open an issue on GitHub →