Grading Methodology
CivicPulse accountability grades are computed algorithmically from public records. We are nonpartisan — our goal is transparency, not advocacy. Here's exactly how every score is calculated.
Percentage of scheduled council votes the official was present for. Sourced from official meeting minutes and voting records.
- •Absences for medical or official travel may not be flagged in raw data
- •Data sourced from Legistar / Granicus agendas
How often an official's vote matched the outcome of district ballot measures voted on by residents. A "yes" vote on a passed measure = aligned.
- •Only applies when there is an overlapping ballot measure and council vote
- •Higher weight because it reflects direct voter will
Proportion of campaign promises fulfilled vs broken, with pending promises counting as half credit.
- •Promise status is manually curated by CivicPulse editors
- •Promises marked ✓ = kept, ✗ = broken, unlabeled = pending
How often an official voted in favor of measures also supported by their top 5 campaign donors. High alignment reduces the score — it suggests potential conflicts of interest.
- •This metric is a red flag indicator, not a definitive finding of corruption
- •Uses campaign finance data from FPPC / Cal-Access / SF Ethics
How often an official voted with their party caucus. Extreme party-line voting (>95%) lowers the score slightly, rewarding independent judgment.
- •Score: >95% party-line = 40pts, 86-95% = 65pts, 71-85% = 85pts, ≤70% = 95pts
- •This is a minor factor and intentionally weighted low
Limitations: These scores are automated estimates based on available public data. They may not reflect the full context of an official's decisions, personal circumstances, or district-specific priorities. Constituent alignment and donor alignment metrics require sufficient overlapping data to be meaningful. Officials with low data availability receive a "?" grade. CivicPulse is nonpartisan and does not endorse or oppose any candidate or official.