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.
Petitions
Citizens raise issues and collect support
Propositions
Issues become ballot measures
Campaign Finance
Money flows in to influence outcomes
Representatives
Elected officials cast votes
Meetings
Decisions are debated in public
What the platform does
Six tools that give communities direct access to civic information.
Petition Scanner
AI-PoweredPoint 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-PoweredUpload 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.
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.
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.
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
Built on open source
Every component is open source. No proprietary lock-in at any layer.
Frontend
Backend
AI / ML
Infrastructure
Observability
Bring this to your community
Every community deserves civic tools they own and control. Join the network or contribute to the platform.