Our mission

Portland's civic record — who voted how, on what, and why — is public, but it is scattered across meeting minutes, PDFs, and portals that were never built to be read together. pdxcivic assembles that record into a single, queryable model so that residents, journalists, and researchers can follow the work of local government without first becoming archivists.

Provenance is the product

A civic dataset is only as trustworthy as its trail back to the source. Every record here carries its provenance: the dataset it came from, when it was fetched, and a link to the origin document. We don't ask you to take our word for a roll-call tally — we show you where it came from. Nothing is editorialized into the data; the model is a faithful projection of the public sources, not an opinion about them.

Open by default

Everything this site renders is served by a public, read-only API — the same REST and GraphQL surfaces this site uses. There is no privileged view. If you want to build your own analysis, chart, or story on top of this data, you can, without scraping a single page. See the getting-started guide or the API overview.

Canonical, not comprehensive — yet

We promote a source into the canonical model only once it is mapped, deduplicated, and carries full provenance. That means coverage grows deliberately rather than all at once. Today the model covers Portland City Council roll-call votes and Oregon Legislature bills; sponsors, payments, and documents follow as they're promoted. The changelog tracks what has landed.