See what's built

Six civic tools covering the full democratic process — from petition to public meeting. Four microservices, 16 pluggable provider packages, and a fully local AI stack. Open source under AGPL-3.0.

The civic workflow

A petition becomes a ballot measure becomes law. We give citizens tools for every step.

01

Petitions

Citizens raise issues and collect support

02

Propositions

Issues become ballot measures

03

Campaign Finance

Money flows in to influence outcomes

04

Representatives

Elected officials cast votes

05

Meetings

Decisions are debated in public

What the platform does

Six tools that give communities direct access to civic information.

Petition Scanner

AI-Powered

Point your phone at a petition. OCR extracts the text, AI generates a plain-language breakdown, and the system automatically matches it to related ballot measures — all in seconds.

  • Camera-based capture with Tesseract.js OCR processing
  • AI-generated plain-language analysis with automatic ballot measure matching
  • Real-time activity feed showing petition momentum with hourly trends
  • Map view with privacy-preserving geo-fuzzed locations
  • Community abuse reporting for misleading or fraudulent petitions
  • Geolocation tagging for civic district context

Proposition Explorer

47 pages of legal text become a 5-minute read. Browse every ballot measure with AI-extracted summaries, fiscal impact analysis, and arguments for and against — with full source text always one click away.

  • Browse measures by status: pending, passed, failed, withdrawn
  • AI-powered content extraction with plain-language summaries
  • Fiscal impact breakdowns and arguments for and against
  • Full text and PDF access for primary source verification
  • Track outcomes across election cycles

Campaign Finance Tracker

Follow the money behind any ballot measure. See who contributed, how the money was spent, and what outside groups are involved — aggregated from state finance databases into a single view.

  • Committee-level contribution tracking with donor details
  • Expenditure breakdowns by category and recipient
  • Independent expenditure tracking for outside spending
  • Aggregated from multiple state databases (e.g., CAL-ACCESS for California)

Representative Directory

Enter your address and see every elected official who represents you — from city council to Congress. View their bios, committee assignments, and contact them directly from the platform.

  • Address-based lookup with geocoded civic district resolution
  • "My Representatives" section showing all levels of government
  • Detail pages with photos, bios, party, and committee assignments
  • Built-in contact forms to email representatives directly
  • Filter by chamber, party, or district across the full directory

Meeting Calendar

Every public legislative meeting in your jurisdiction, searchable by body — with agendas, minutes, and video links for recorded sessions.

  • Upcoming and past legislative meeting schedules
  • Meeting agendas and minutes when available
  • Video links for recorded sessions
  • Filter by legislative body (Assembly, Senate, committees)

Document Q&A

AI-Powered

Upload any civic document — a bill, a budget, a regulation — and ask questions in plain English. The RAG pipeline chunks the document, generates vector embeddings, and retrieves relevant passages to answer your question with citations.

  • Upload and index documents with automatic chunking (1,000-character segments with overlap)
  • Semantic search via 384-dimension vector embeddings (Transformers.js)
  • Retrieval-augmented generation with local Ollama LLM inference
  • Answers include source citations pointing to exact passages
  • Specialized analysis modes for contracts, budgets, regulations, and forms
  • All processing runs locally — nothing leaves your infrastructure

Real-world scenarios

See how the tools work together in practice.

Election season

A voter preparing for election day uses the Proposition Explorer to understand each ballot measure in plain language, checks Campaign Finance to see who's funding the "Yes" and "No" campaigns, and uploads the full ballot text to Document Q&A to ask specific questions about fiscal impact.

Proposition ExplorerCampaign FinanceDocument Q&A

Community organizing

A civic group concerned about local development uses Petition Scanner to analyze a circulating petition, tracks upcoming Planning Commission hearings through the Meeting Calendar, and uses the Representative Directory to contact their council member ahead of the vote.

Petition ScannerMeeting CalendarRepresentative Directory

Government transparency

A journalist investigating campaign spending uses Campaign Finance to identify outside spending patterns on a contested ballot measure, then uploads related budget documents to Document Q&A to cross-reference financial claims — all without their research queries leaving the local server.

Campaign FinanceDocument Q&A

Built for real people

Every community instance comes with these capabilities out of the box.

Works offline

Progressive web app. Save ballot measures, representative info, and documents for offline access.

Multi-language

English and Spanish at launch, with community-contributed translations.

Dark mode

Comfortable reading in any environment.

Accessible

WCAG 2.2 AA compliant with keyboard navigation, screen reader support, and high contrast.

Guided setup

Onboarding wizard walks new users through jurisdiction selection and feature discovery.

Data portability

Export your data anytime. Your civic research belongs to you.

How civic data stays current

Government websites change. Your civic data shouldn't break when they do.

Government websites publish civic data — propositions, campaign finance filings, meeting schedules, representative directories — but they restructure constantly. Traditional scrapers with hardcoded CSS selectors break whenever a site is redesigned.

Our pipeline uses a schema-on-read approach: AI analyzes website structure to generate versioned extraction rules (structural manifests), rather than relying on brittle selectors. When a site changes, the system detects the structural shift, re-analyzes, and adapts — no developer intervention needed.

The pipeline handles three source types: HTML scraping with AI structural analysis, paginated REST APIs, and bulk file downloads (ZIP/CSV/TSV). Every extracted record is validated against domain rules before entering the platform.

Any jurisdiction, no code required

Adding your region's data sources doesn't require writing code. Communities configure their own data connections through simple, declarative setup.

Every jurisdiction publishes civic data differently — different websites, different formats, different update schedules. The region plugin system handles this complexity so communities don't have to.

Region configs are simple JSON files that describe what data to collect — URLs, data types, and natural language content goals. The AI-powered scraping pipeline figures out how to extract it. No scraper code required.

JSON, not code

Describe data sources with URLs and plain-language content goals — the AI handles extraction

Schema-validated

CI validates every config against a JSON Schema and checks URL connectivity before publishing

Community-contributed

Region configs live in a shared open repository — add your jurisdiction with a pull request

Self-healing pipeline

When government websites change format, the AI re-analyzes and adapts automatically

California launch example

7 data sources across the Secretary of State, Assembly, Senate, and CAL-ACCESS campaign finance database — all defined in a single JSON config file with no scraper code.

AI that never leaves your server

All AI processing runs locally on your own infrastructure. Nothing is sent to external services.

Most AI-powered civic tools send your queries to third-party services. What legislation you're researching, what politicians you're looking up, what petitions you care about — all of it becomes someone else's data.

Opus Populi runs entirely on open-source AI models hosted on your own infrastructure. Embeddings are generated in-process with Transformers.js (all-MiniLM-L6-v2, 384 dimensions). Vector similarity search runs on pgvector in PostgreSQL. LLM inference runs locally through Ollama with configurable models — Qwen 3.5 by default, with support for Mistral, Llama 3.1, and others.

Your civic research stays on your server. Period. See our AI transparency commitments and privacy architecture for the full picture.

No external API calls

AI processing never leaves your network

No per-query costs

Run as many analyses as you need

Full auditability

Inspect every model and every decision

100% open source

No proprietary dependencies in the AI stack

Bring this to your community

Every community deserves civic tools they own and control. Join the network or contribute to the platform.