pac.dog pac.dog / 101

Module 9 of 9

The shape of the site

pac.dog is a browsable mirror of the U.S. government public record. Every row of every dataset above — every candidate, committee, bill, member, vote, nonprofit, lobbying filing — has a detail page at a stable URL, a JSON equivalent at /api/v1/<collection>/[id], and a place on the entity graph at /connections. The same engine renders the page, the JSON, and the graph edge.

Find things — search, ask, browse

/search — semantic search across candidates, committees, bills, and members. Type a phrase; the top matches come back ranked by cosine similarity against a 1024-dim Voyage AI embedding. Use it when you don't know the exact name (e.g. "chips act lead sponsor").

/ask — natural-language question answering, grounded strictly in our corpus. The model can't answer a question with facts it didn't pull from a tool call; every entity it mentions is a clickable @handle linking back to the detail page. Each ask costs tokens from your wallet (your first 5,000 each month are free). The footer shows your live balance.

Browse hubs — every collection has a sortable paginated index: /candidates, /committees, /bills, /members (federal + state), /votes, /nonprofits, /lobbying, /fara, /persons, /orgs. Every column header is clickable to sort.

Track things — watchlists, reactions, threads

Watchlists collect entities you want to follow. They're private by default; flip to public to share. Anything in your list surfaces back to your dashboard at /me when its activity timeline updates.

Reactionsare emoji per entity (👍, 👀, 😮, etc.). They're public, signed by your handle, and appear in aggregate on the entity page. Use them to express a stance without writing a post.

Threads are short typed posts. Inline @-typeahead links any entity in the graph: @G000555 (a member), @C00401224 (a committee), @hr1234-118 (a bill). Threads are public by default; toggle private at compose time.

See the network — connections, trends, graph

/connections is every typed edge in the graph (currently ~1.3M rows): donations, IE spending, lobbying contracts, principal-committee assignments, bill sponsorships, LDA-client ties. Filter by edge type to slice by relationship; click either endpoint to jump to its detail page.

/trends is the aggregate view — top donors, top independent expenders, top lobbying payers — refreshed every 15 minutes from the underlying graph.

Use the data — tools, API, tokens

/tools/district-fetch takes a postal address (or a CSV of addresses) and returns the seated U.S. House rep, both senators, active candidates, and Census ACS demographics for that district. The geocoding runs entirely in your browser — the address never reaches our server.

/api/v1 is the public JSON API. Every browse page has a JSON equivalent; every detail page has an /api/v1/<collection>/[id] route. Mint a personal access token at /me/tokens and send it as Authorization: Bearer pacd_… .

Token wallet. The /ask feature and metered tools draw against a per-user token balance. Signed-in users get a monthly free allowance; top up at /ask/topup if you need more. The footer always shows your live balance.

Sign in

/signin uses a magic link — no password. Enter your email; we send a one-tap sign-in link. Watchlists, reactions, threads, /ask, and any tool that costs tokens require sign-in. Browsing, search, and the public REST API are anonymous-friendly.

One operating principle

Every value displayed comes from a primary U.S. government source — FEC, congress.gov, House Clerk, Senate LIS, Senate/House LDA registers, DOJ FARA, IRS Form 990, Census ACS, each state SOS or legislature. We don't use aggregator vendors. If you see a number on pac.dog you can't trace back to a primary source, that's a bug — file it.


Sign in to track your progress.

pac.dog is a free, independent, non-partisan research tool. Every candidate, committee, bill, vote, member, and nonprofit on this site is mirrored from primary U.S. government sources (FEC, congress.gov, govinfo.gov, IRS) and each state's Secretary of State / election commission — no third-party data vendors, no paywall, no editorial intermediation. Citations to the originating source are on every detail page.

Estimated value: $180/mo per user — but we made it free.