Where the data comes from.

We don't generate figures with a model. Every fact is pulled from a primary U.S. government source, stored with its source URL and the moment we captured it, and signed — so you can verify it without trusting us.

DataPrimary sourceVerify
Members of CongressCongress.gov (official) + Biographical Directory/api/official/{id}
State legislatorsOpenStates / Plural (open data) + Wikidata/api/official/{id}
House roll-call votesclerk.house.gov roll-call XML (the Clerk record)/api/official/{id}/votes
Senate roll-call votessenate.gov roll-call records/api/topic/{topic}/votes
State legislature votesOpenStates / Plural/api/topic/{topic}/votes
Floor speechesGovInfo — Congressional Record (CREC)/api/official/{id}
Campaign financeFEC — api.open.fec.gov (the candidate filings themselves)/api/official/{id} → finance + source
BillsCongress.gov/api/bill/{id}
Stated positionsthe candidate official campaign websiteeach position carries its source URL

How to verify — without trusting us

Source link on every record. Each API record carries its source_url and the capture timestamp. Follow it to the government page it came from.
Signed, append-only archive. We capture primary sources, hash them, and sign each at capture (Ed25519). Anyone can verify: /archive/verify/{hash} returns verified: true with the source + time; public key at /archive/pubkey; recent changes at /archive/changes.
Signed digests. Every "Just the Facts" email carries an origin hash; verify it at /watchlist/verify.
The AI only composes — it never invents. Our model writes prose over already-verified, source-linked facts, and an independent audit checks every claim against the record before anything sends. Figures are never model-generated.

For your AI

No key, no scraping. Point any assistant at the open API or /.well-known/ai, or connect over MCP at /mcp — every answer cites its source URLs, so your AI can confirm the upstream itself. AI tools →

Build a watchlist Why origin matters