Skip to content
CivicSeat The public record of local government
Coverage How we know Sign in Join

How this works

CivicSeat publishes procedural fact, not judgment. Everything here is derived mechanically from official documents, and every published fact links back to its source. Here is exactly how the record is built.

What this is

CivicSeat is the structured, searchable record of your local elected bodies: every roll-call vote, every deferral, every member's record — parsed from the official minutes, with a link back to the source document behind every fact.

No opinions. No endorsements. The facts — dispositions, tallies, and each member's vote — come only from the official minutes and are labeled with mechanical badges (split, deferred, failed, unanimous) derived solely from what the minutes say. The one thing we add for readability — a plain-language title for each item and a short summary of each meeting — is AI-drafted, human-reviewed, and always shown alongside the official record, never instead of it.

Sources

The record is built from the official minutes each body publishes — the PDFs posted by each government's clerk or meeting portal. We store a copy of every source PDF and record its address and a cryptographic hash, so the document behind any fact can always be produced, and every page links back to the exact minutes it came from.

What we cover, how fresh it is, and any known gaps are laid out body by body on the coverage page — because a silent gap is its own kind of error.

Extraction

Each PDF is converted to text and then read by a large language model that extracts a structured record: agenda items with their official identifiers and titles, the motions made, who moved and seconded, the vote method, the disposition (adopted, failed, deferred, withdrawn), the tallies, and each member's individual vote. The model copies official text verbatim; it is never asked to infer a vote that the minutes do not state.

Verification gates

Nothing is published until it passes two mechanical checks:

  • Roster gate. Every name in a roll call must match a member who actually held a seat on the body as of the meeting date.
  • Tally gate. The individual votes must add up to the tally stated in the minutes.

Anything that fails a gate is held out of publication.

Two independent readings

Every vote is read from the minutes by AI models from two different companies, each without seeing the other’s answer. A vote publishes only when both readings agree on the outcome, the count, and every member’s vote, and the result passes both gates. Where the first two readings differ, further models from other companies read it; if no two agree, the vote is not published. Published votes are re-read the same way over time. When two readings agree that a published vote was misread, it is corrected and the change is listed on the record changes page.

What the AI writes

AI drafts two kinds of plain-language text, both clearly labeled: a short, plain-language title for each agenda item (the official titles are dense legalese), and a brief plain-language summary of a meeting. Any quotes shown with a summary are copied verbatim from the minutes — never paraphrased or invented. Every one of these is shown alongside the official record and its source, never instead of it. The AI never decides how anyone voted or what the record says — those facts come only from the official minutes.

Photos

Member portraits are the officials' own official headshots as published by their government — the county, city, or town — shown for identification and credited to that source. Where we don't have an official portrait, we show a plain initials monogram instead.

The ballot & candidate profiles

The ballot page is a record, not a voter guide. Each candidate has a profile built only from documentable, sourced facts: any voting record on a body we cover, public-record offices they've held, and campaign-finance disclosures (public record from official filings). Where a candidate has answered a nonpartisan questionnaire, we link out to their answers in their own words rather than reproduce them here. We write no candidate bios, publish no ratings or endorsements, list every candidate in a fixed order, and where we have no document we say so plainly. A sparse profile means the record is thin — not a judgment.

Corrections

If you find an error, tell us and we will fix it and note the correction on the page. Every record page carries a Report inaccurate data form that reaches us with the record already attached — that is the fastest route. You can also email [email protected].

An independent public-records project. CivicSeat is not operated by, affiliated with, or endorsed by any government or elected official.