CalBallot is a free explorer for California's statewide and local ballot measures, from 1911 to the ones on the next ballot. Every measure comes with a plain-language AI summary alongside the official record: what it proposed, where it was voted on, and how it turned out.
Search — look up any measure by title, topic, or yearGrid / List — browse and filter the full catalogInsights — trends and analysis from the dataExplore — pass rates by topic and jurisdictionAsk AI — query the data in plain English (bring your own key)
A reported-analysis view of the full CalBallot dataset: what voters approve,
where the ballot is busiest, which rules turn majorities into losses, and where
campaign money does and doesn’t decide statewide fights.
Ballot activity rises and falls with election cycles
Annual counts, decade composition, and election-cycle patterns show when California voters faced the heaviest measure load.
Annual volume and pass rate
Local measures per year (5-yr avg)
Shown from 1990 forward; CEDA local coverage begins in the 1990s. See the Annual chart above for the full historical arc.
Statewide measures per year (5-yr avg)
Shown from 1990 forward to align with local. Statewide propositions are tracked back to 1911 in the Annual chart above.
Avg. measures per year by cycle
Pass rate by cycle
Method: active records by election year. Trend fits are descriptive and not coverage-adjusted.
Topics
The issue mix is broad, but unevenly classified
How the issue mix has shifted over time across the most consistently classified topic categories.
Topic share by decade
Method: shares and rankings use topic-classified records only (Other is excluded). Local CEDA records are better analyzed by measure type.
Measure Types
Fiscal tools dominate the local ballot
Measure type is the cleaner lens for CEDA-heavy local records.
Largest measure types
Fiscal share over time
Shown from 1990 forward. Bond, sales tax, and property tax are local-ballot instruments tracked through CEDA; pre-1990 the dataset is statewide-only and these labels do not apply.
Method: normalized category type from source records. Threshold mixes use derived threshold fields.
Geography
The map of ballot activity is not evenly distributed
County totals reflect local-government density and source coverage. They are not population adjusted.
Color by
Busiest counties
Method: active local records grouped by normalized county name. Map geometry loads from the public us-atlas county topology.
Rules
Thresholds can turn majorities into losses
A 55% or two-thirds contest is a different world than a simple-majority one. Same yes share, very different legal outcome.
Outcome share by threshold
Each bar runs from 0% to 100% of decided records at that threshold. The grey segment is normal failures (didn’t reach majority); the red segment is measures that crossed 50% yes but still failed under the higher rule.
Method: pass/fail codes and derived vote-threshold fields. Threshold assignment is selected (mostly by instrument), not random — so rate gaps below describe the contests, not voter mood. Known edge cases remain under review.
Campaign Finance
Statewide proposition campaigns have drawn billions
Statewide only
Finance coverage is intentionally scoped to matched statewide propositions from CalAccess. Each campaign is keyed by election cycle, so receipts attributed to the 2020 PROP_16 are the 2020 measure’s, not the 2010 reuse of the same proposition number.
How much money has flowed
Total receipts grouped by election cycle. Bars include both support and oppose receipts.
The donors who showed up
The single most absent thing on the old panel: the names. Both lists below aggregate the per-campaign top-donor reports — not every transaction, but the donors big enough to land in a campaign’s top-20.
Top 15 by aggregated receipts
Donors with the largest total dollars across all campaigns where they appeared in the top-20.
Repeat players
Donors that landed in the top-20 of 3+ campaigns with $1M+ aggregate — the policy actors, not the one-off industry fights.
Three fights, three industries
Curated case studies across gig work, gambling, and healthcare. Top 5 donors per side; concentration line below each card.
Money matters but isn’t decisive: across all reportable spending (direct receipts, in-kind, loans, and independent expenditures), the better-funded side wins about 65% of the time and loses the other 35%. And this is the visible top of the iceberg — California’s local ballot has tens of thousands of measures with no comparable donor data.
Method: totals now combine four scopes of reportable money: (1) itemized monetary contributions to recipient committees tagged with the prop’s CAL-ACCESS ballot number, (2) loans received by those committees, (3) in-kind contributions reported on Form 460 Schedule C, and (4) independent expenditures (Form 461 / 465 / S496 filings) advocating for or against the measure. Contributions to untagged side-committees and Schedule E party-passthrough expenditures are still excluded. Our totals now approximate (but typically run somewhat below) press citations like Ballotpedia, since methodology decisions on attribution remain conservative. Combined aggregates draw from finance_statewide_v2.db (monetary) and finance_statewide_v3.db (loans + in-kind + IE), with the v3 attribution layer applying field-specific ambiguity rejection (AG queue IDs, multi-prop separators, regional/local measures) and post-ingest cross-source dedup. The spending-arc chart offers two lenses: election-cycle (totals per measure’s actual election year, the substantive frame for ballot-measure campaigns) and calendar-year (totals per Monday-of-week bucket, useful for cash-flow timing). The calendar view groups boundary weeks by their week-start year, so a transaction in the week of 2007-12-31 is attributed to 2007 even though it’s for the 2008 cycle. Donor lists aggregate across all four receipt types per donor; sector labels are hand-curated for prominent visible donors. Donor canonicalization is partial; some entities still appear under multiple legal-entity variants across v2 and v3.
How these insights were calculated
1 / 9
Filter & Explore
Filter by statewide propositions or local/county measures
🏛️Statewide(1,315)
📍Local(10,997)
Click to select one or more regions (click again to deselect)
Click to select one or more topics (click again to deselect)
Click to select one or more years (click again to deselect)
Filter by measure outcome
✓Passed(8,188)
✗Failed(4,064)
⏳Pending/Unknown(60)
Filter by measure type (GO Bond, Property Tax, Sales Tax, etc.)
Active filters
0measures found
🗳️ Upcoming 2026 Ballot Measures
Get informed about California's upcoming ballot measures before you vote.
📋 Full official details will be available as the election approaches.
🎯
Ballot Measure Trivia
Loading question...
Question 1 of 15
About This Project
CalBallot is a tool for exploring over 12,000 ballot measures
from across California, spanning local school bonds to statewide propositions.
Background
This project grew out of the UCLA Voter Guide Project,
a volunteer-driven initiative I started to research and publish ballot measure summaries for California voters
in areas with limited local news coverage. While that project focused on writing new summaries with student volunteers,
I wanted to build something that could make historical ballot measure data more accessible and explorable.
Features
Filter by region, topic, year, and outcome
AI-generated plain-language summaries
Related measures recommendations using semantic similarity
Vote results and historical trends
Data Pipeline
Building this database required substantial data engineering work:
Data collection: Aggregated records from multiple sources including the CA Secretary of State,
NCSL, ICPSR, and CEDA research databases
Deduplication: Merged overlapping records using fingerprinting algorithms to identify
the same measure across different sources
Standardization: Normalized county names, vote percentages, and date formats
across inconsistent source data
Topic classification: Used K-means clustering on sentence embeddings to automatically
categorize measures into ~20 topic clusters
AI summaries: Generated plain-language summaries using LLMs for measures
with sufficient ballot text
Similarity matching: Computed semantic embeddings (all-MiniLM-L6-v2) to find
related measures based on content similarity
Author
Built by Igor Geyn, a data scientist and researcher
based in the Bay Area. My background is in political economy and causal inference, with a PhD from UCLA.
Hi! I can answer questions about 12,000+ California ballot measures in plain English.
It runs on an AI key you bring: an OpenRouter key (typically a fraction of a cent per question; stored only in your browser, sent only to OpenRouter) or a local Ollama model (free, offline). Set it up here — it takes about two minutes.
Example questions:
AI Configuration
Get a free key at openrouter.ai/keys. You pay model costs directly — no markup.