Methodology

How we source, verify, and date every figure

Primary source: the ballot text

All factual claims about the structure of the Act (rate, threshold, who pays, valuation, payment options, revenue allocation) are quoted from the official AG-filed PDF 25-0024 Amdt. 1. Where we cite, we cite the section number (for example §50301(b) for the rate). News interpretations are flagged as interpretation, not fact.

Donor disclosures

Every dollar figure attributed to a named donor is traceable to a California Secretary of State Cal-Access committee filing. We scrape four committees daily: Building a Better California, Golden State Promise, Californians Against Higher Taxes, and Save California Health Care and Public Education. The donor leaderboard is rebuilt from scratch on every run.

When a donor gives to multiple committees (Eric Schmidt to both Building a Better California and Californians Against Higher Taxes, for example), we sum the contributions and surface the committee breakdown in the donor row. We never roll up unnamed contributions into a named donor's total.

Prediction markets

Prices come from the Polymarket Gamma API for two slugs: billionaire-one-time-wealth-tax-on-california-ballot (qualification) and billionaire-one-time-wealth-tax-passes-in-california-election-2026 (passage). We refresh every 15 minutes via Vercel ISR. If Polymarket returns a 5xx, we serve the last cached snapshot and visibly mark it stale on the terminal.

Polling

Polls are added by hand. We require a published methodology document with sample size, field dates, and sponsor before adding a row. When a pollster releases a split-sample (pre-information and post-information), we record both rows so the reader can see the swing.

News headlines

Headlines come from a curated allowlist of outlets: AP, Reuters, CBS News, The New York Times, Wall Street Journal, Los Angeles Times, Sacramento Bee, San Francisco Standard, Politico, Bloomberg, CalMatters, and Ballotpedia. We do not aggregate from opinion sites or partisan outlets.

Conversation tracking

X tweets are curated. We add a tweet ID to data/tweets.json by hand and render it server-side via the public syndication endpoint, so no Twitter API key is required and no third-party JavaScript is loaded on first paint. Reddit threads are pulled live from the public JSON search at reddit.com, deduplicated across four queries, and cached for 30 minutes.

Editorial principles

Steelmanned, never partisan. The strongest argument on each side is presented in its proponents' own framing. We disclaim uncertainty explicitly: “the LAO warns” beats “experts say.” The site does not tell readers how to vote.

Corrections

Every correction is logged in the changelog with the original value, the corrected value, the date, and the source that prompted the change. We do not silently edit numbers.