Skip to main content

AI-generated and automatically checkedHow we check

Report an error

Where: This page

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

How this works

San Francisco and California Ballot Backstory explains each measure with its history, its money and its supporters, in seven languages. Here is how the pages are made and checked.

What we publish

Report an error

Where: What we publish

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

One page per measure: what a YES and a NO vote do, why the measure is on the ballot now, the money involved, who placed it on the ballot, who endorses it, who is paying for each side, and the strongest case for and against. Seven measures also get a timeline of earlier decisions and a record of what past measures promised and delivered.

How each page is written

Report an error

Where: How each page is written

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

We start from primary sources: the official voter guides, the Controller’s and Legislative Analyst’s fiscal analyses, the legal text, campaign finance filings and published endorsements. An AI model drafts each page from those sources only, and every sentence carries a link to the source that supports it.

The automated checks

Report an error

Where: The automated checks

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

No person reviews or edits pages before they go live. Instead, every page must pass these automated checks. The last column shows how many published pages passed each one.

CheckResult
Citations: a second model confirms that each cited passage supports its sentence.175 pages passed
Numbers: code checks every figure against the source data.175 pages passed
Quotes: code confirms that every quoted passage appears word for word in the saved source.175 pages passed
Cross-check: an AI model from a different company re-checks the claims.skipped on 175 pages
Neutrality: a model scores each draft against a neutrality rubric, reading it as progressive, moderate and conservative readers would. A page that still fails after rewrites shows only the official text.175 pages passed
Plain language: a model checks that each page is easy to read.175 pages passed
Translation: two models translate independently, and sections where they disagree in meaning are redone.—
Back-translation: another model translates the result back into English to catch changes in meaning.150 pages passed · not applicable on 25 pages
Glossary: election terms must match the official translations used by San Francisco and the state.150 pages passed · not applicable on 25 pages
Chinese wording: Simplified Chinese pages are checked for mainland, Taiwan and Hong Kong word choices.25 pages passed
Readers: anyone can report an error from any section, in any language.—

Which AI models we use

Report an error

Where: Which AI models we use

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

AI models from Anthropic write and check every page. This table is counted from the records each published page carries.

StepModelPages
bloc_summaryClaude Opus (Anthropic)175
impactClaude Opus (Anthropic)175
Writing the first draftClaude Opus (Anthropic)175
Researching why it’s on the ballot nowClaude Opus (Anthropic)49
Checking citationsClaude Sonnet (Anthropic)175
Neutrality checkClaude Opus (Anthropic)175
Plain-language checkClaude Haiku (Anthropic)175
TranslationClaude Opus (Anthropic)150
TranslationClaude Sonnet (Anthropic)150
Second, independent translationClaude Sonnet (Anthropic)150
Comparing the two translationsClaude Sonnet (Anthropic)150
Back-translationClaude Haiku (Anthropic)150

The cross-check by a model from another company was not run for this election, so it shows as skipped above.

How we stay neutral

Report an error

Where: How we stay neutral

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

We never endorse. We give each side’s strongest argument in its supporters’ terms. YES and NO use colors with no party or good-and-bad meaning, and both ovals on our pages stay empty.

How we place measures on the coalition scale

Report an error

Where: How we place measures on the coalition scale

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

The coalition scale runs from the progressive coalition to the moderate coalition. A measure’s position comes only from which tracked groups endorse or oppose it and who funds each side, using the group classifications listed below. It is not our opinion of the measure.

For state measures, the scale runs from the California Democratic Party and its allies to the California Republican Party and its allies, such as the Howard Jarvis Taxpayers Association. The position is set the same way: only by which tracked groups endorse or fund each side.

Where the money numbers come from

Report an error

Where: Where the money numbers come from

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

San Francisco campaign money comes from SF Ethics Commission filings on DataSF, which update daily. State measure money comes from the California Secretary of State (Cal-Access). Every money figure shows the date of the latest filing we include.

How we calculate cost examples

Report an error

Where: How we calculate cost examples

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

The cost examples on measure pages, such as a homeowner’s yearly bill, are calculated by code (ai/impact_costs.py) from the tax rates and amounts cited on each page. An AI model does not write or estimate these figures. Each example states its assumptions, such as building size and assessed value, so your own bill will differ.

How we translate

Report an error

Where: How we translate

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

Pages are translated into Chinese (Traditional and Simplified), Spanish, Filipino, Vietnamese and Russian. Terms are checked against the Department of Elections glossary, a third model translates back to English to catch changes in meaning, and wherever San Francisco or the state publishes an official translation of the ballot question, we show that exact text. There is no official Russian translation, so Russian pages must meet the strictest agreement threshold.

Why every page says AI-generated

Report an error

Where: Why every page says AI-generated

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

AI models write and check these pages. We label every page so you always know, and we show when each page was last checked.

Corrections and error reports

Report an error

Where: Corrections and error reports

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

Every section has a Report an error button. Every fix is listed in the public corrections log with the date and what changed.

Groups we track and how we classify them

Report an error

Where: Groups we track and how we classify them

Tell us what’s incorrect and, if you can, where the right information is.

Only if you’d like a reply. We don’t share it.

Attach a picture of the error, or paste one here.

GroupTypeClassificationWhy
San Francisco Democratic PartypartyPolitical partiessf axis +0.40 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.81 (computed from 13 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
San Francisco Republican PartypartyPolitical partiessf axis +0.60 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors)
GrowSFadvocacyModerate slateAnchor for the sf scale's moderate end, as listed in PLAN.md §5; sf axis +0.56 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis +0.04 (computed from 13 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
TogetherSF Action (now Blueprint SF)advocacyModerate slateAnchor for the sf scale's moderate end, as listed in PLAN.md §5; sf axis +1.00 (computed from 6 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors)
San Francisco Chamber of CommercebusinessModerate slateAnchor for the sf scale's moderate end, as listed in PLAN.md §5; sf axis +0.79 (computed from 7 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis +1.00 (computed from 5 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
Abundant SFadvocacyModerate slateAnchor for the sf scale's moderate end, as listed in PLAN.md §5; No Nov 2026 positions could be read; the org has no effect on any score.
San Francisco League of Pissed Off VotersadvocacyProgressive slateAnchor for the sf scale's progressive end, as listed in PLAN.md §5; sf axis -0.85 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.86 (computed from 11 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
Harvey Milk LGBTQ Democratic Clubdemocratic-clubProgressive slateAnchor for the sf scale's progressive end, as listed in PLAN.md §5; sf axis -0.85 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.96 (computed from 12 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
Democratic Socialists of America, San FranciscoadvocacyProgressive slateAnchor for the sf scale's progressive end, as listed in PLAN.md §5; sf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
San Francisco BerniecratsadvocacyProgressive slateAnchor for the sf scale's progressive end, as listed in PLAN.md §5; No Nov 2026 positions could be read; the org has no effect on any score.
San Francisco Labor CouncillaborLaborsf axis -0.78 (computed from 3 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors)
SPURgood-governmentOther groupssf axis +0.65 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -1.00 (computed from 10 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
League of Women Voters of San Franciscogood-governmentOther groupssf axis -0.85 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors)
YIMBY ActionadvocacyOther groupssf axis +0.78 (computed from 6 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -1.00 (computed from 3 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
San Francisco Chronicle editorial boardnewspaperOther groupsNo Nov 2026 positions could be read; the org has no effect on any score.
San Francisco Women's Political CommitteeadvocacyOther groupssf axis -0.60 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.89 (computed from 13 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
Alice B. Toklas LGBTQ Democratic Clubdemocratic-clubOther groupssf axis +0.40 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.89 (computed from 13 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
Edwin M. Lee Asian Pacific Democratic Clubdemocratic-clubOther groupssf axis +0.77 (computed from 8 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.12 (computed from 13 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
San Francisco Green PartypartyPolitical partiessf axis -0.83 (computed from 7 measures where the anchors split; +1 = always with the moderate anchors, -1 = always with the progressive anchors); state axis -0.27 (computed from 13 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
SEIU Local 1021laborLaborsf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
San Francisco Taxpayers AssociationtaxpayerOther groupssf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
Sierra Club, San Francisco Bay ChapterenvironmentalOther groupssf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
San Francisco Tenants Uniontenant-advocacyOther groupssf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
United Educators of San FranciscolaborLaborsf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
Coalition on HomelessnessadvocacyOther groupssf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
Small Business ForwardbusinessBusinesssf axis not scored: fewer than 3 measures with a yes/no position where the anchors split
California Democratic PartypartyPolitical partiesAnchor for the state scale's left end (the two major parties and the Howard Jarvis Taxpayers Assn.); state axis not scored: fewer than 3 measures with a yes/no position where the anchors split
California Republican PartypartyPolitical partiesAnchor for the state scale's right end (the two major parties and the Howard Jarvis Taxpayers Assn.); state axis +0.82 (computed from 11 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
Howard Jarvis Taxpayers AssociationtaxpayerOther groupsAnchor for the state scale's right end (the two major parties and the Howard Jarvis Taxpayers Assn.); state axis +1.00 (computed from 10 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
California Labor FederationlaborLaborstate axis not scored: fewer than 3 measures with a yes/no position where the anchors split
California Chamber of CommercebusinessBusinessNo Nov 2026 positions could be read; the org has no effect on any score.
ACLU of Northern Californiacivil-rightsOther groupsstate axis not scored: fewer than 3 measures with a yes/no position where the anchors split
League of Women Voters of Californiagood-governmentOther groupsstate axis -0.71 (computed from 12 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)
California Teachers AssociationlaborLaborstate axis -0.60 (computed from 5 measures where the anchors split; +1 = always with the right anchors, -1 = always with the left anchors)