How we show campaign contributions
On each candidate's page we group contributions into a small grid by donor type and dollar amount. The grid isn't a design choice — every line in it is tied to a real California campaign finance rule. This page explains what each line means and where it comes from.
The 2026 source-linked ledger
The November guide and its money ledger use a separate, reconciled set of source reports. The older donor categories described later on this page are not used to infer ownership or control in that ledger.
- A filing is a statement made by its filer. Multiple filings can describe one contribution. The index retains the original source assertions and links matching reports; it does not erase two gifts merely because their amounts are equal and their dates are close.
- Cash gifts, loans, noncash contributions, refunds, outgoing contributions, and independent expenditures are different kinds of activity. Candidate cash-gift subtotals exclude the other kinds. Upstream committee transfers are not added to downstream advertising as a single spending total.
- Amendments follow the source system's explicit filing lineage. An ambiguous match remains outside the reconciled public totals pending review. Source coverage and gaps appear on the guide; a partial set is not a candidate's complete fundraising total.
- Independent support or opposition comes from the filing. A source that identifies a candidate but not an election cannot contribute to a November-specific spending total. Earlier and unidentified-election records remain visible with their activity dates.
- Committee links use reported FPPC identifiers. A person's employer is not treated as the donor of that person's gift. Similar names, addresses, or treasurers do not establish ownership, control, or the original source of a nonprofit's funding.
- The public projection preserves the existing 90% extraction threshold and requires source attribution. That threshold is an extraction rule, not a statistical probability that a political claim is true.
- Downloads contain reported names, committee identifiers, dates, amounts, event types, reconciliation status, and original filing URLs. They omit street addresses and private review material. Blank cells mean a value has not been established.
Methodology version: September 6, 2026. Read the 2026 money ledger and follow each original source. Reporting deadlines are linked in the November guide.
Dollar amount groups
Each row in the grid is a dollar range with a real meaning. Crossing one of these boundaries triggers a new disclosure rule, a new ethics rule, or hits the legal cap for a single contribution.
Under $100
Donations under $100 don’t have to list the donor’s name on filings. They’re reported as one combined total.
Source: FPPC Campaign Manual 2, Chapter 3 (itemization threshold)
$100 to $249
At $100 the donor’s name, employer, and occupation appear on the candidate’s public filings.
Source: FPPC Campaign Manual 2, Chapter 3
$250 to $999
At $250 a state pay-to-play rule kicks in. A Richmond elected official can’t accept this much from anyone with business pending before the city without either returning the money within 14 days or stepping aside from the vote.
Source: SB 1439 / California Gov. Code §84308 (since Jan 1, 2023)
$1,000 to $2,499
In the 90 days before an election, donations of $1,000 or more trigger a 24-hour disclosure form. The candidate has one business day to report them publicly.
Source: FPPC Form 497 (24-hour late-contribution report)
At the $2,500 cap
Richmond limits any one person, business, union, or PAC to $2,500 per candidate per election cycle. Anyone here has given the maximum allowed.
Source: Richmond Municipal Code §2.42.050(a)(1)
Who's giving
Each column in the grid is a type of giver. The label comes from how the contribution was reported on the candidate's filing.
Individual
A person giving their own money (a resident, business owner, employee — anyone donating in their personal capacity).
Business
A company, partnership, or corporation donating from business funds. Includes LLCs, real-estate firms, consulting groups, and similar.
Union
A labor union or its political arm — for example, SEIU Local 1021, Richmond Police Officers Association, IBEW, firefighters’ associations.
PAC
A political action committee — a separate organization that raises money to support candidates or ballot measures. Includes party committees and independent expenditure committees.
How we decide the type: we use the filing's own donor code when one is provided (the state assigns codes like “IND” for individual and “COM” for committee). When no code is provided we read the donor's name for the standard markers — words like “Union,” “LLC,” or “PAC.” The classification logic is in src/contributor_classifier.py in the project repo.
Campaign record CSV field guide
Downloads from political committee, union, and company profiles use one row per tracked filing record. Blank cells mean the source record did not provide a value; Richmond Commons does not fill them in.
donor_name, donor_employer- The contributor name and employer written on the filing. Employer may be blank.
recipient_committee_name, recipient_candidate_name- The receiving committee and, when known, the candidate associated with it.
recipient_committee_id- The Richmond Commons identifier for a matched receiving committee. It is not a committee registration number and may be blank.
candidate_name- The candidate or beneficiary named on an independent-expenditure record. It may be blank.
support_or_oppose- The filing's direction code: S means support, O means oppose, and blank means the direction was not reported.
amount- The dollar amount on that individual filing record, not an aggregate calculated by Richmond Commons.
contribution_date, expenditure_date- The date reported for the contribution or expenditure, written as YYYY-MM-DD.
contribution_type, expenditure_code- Codes carried from the filing for the kind of contribution or expenditure. Unknown or missing codes stay blank.
payee_name, description- The payee and description reported for an independent expenditure. Either may be blank.
filing_id- The filing identifier supplied with the source record. It may be blank when the imported record did not include one.
What the grid is good for
Two candidates can raise the same dollar amount in very different ways. One might raise $40,000 from sixteen people who each gave the $2,500 cap. Another might raise $40,000 from four hundred people who each gave $100. The total is the same; the picture isn't.
The grid lets you see that picture in one glance. A heavy column under “Union” or “PAC” means organized money. A heavy row at “Under $100” means a broad small-donor base. A heavy bottom-right corner means cap-hitting donors who care a lot about this race.
Where the numbers come from
Every contribution comes from the City of Richmond's public e-filing system, NetFile. Each candidate's committee files reports on a schedule set by California law (Form 460 every six months, plus Form 497 within 24 hours of any single contribution of $1,000 or more in the 90 days before an election). We pull from those reports directly. No modeling, no estimates.
We follow the candidate's own report for the headline total (the “raised $X” line). The grid underneath re-groups contributions by amount and donor type so you can see the shape.
We only show the grid when the contributions we have on file add up to the candidate's headline total. When they don't — usually because of a Form 497 late-filing that hasn't been rolled into the next Form 460 yet, or a paper filing still being processed — we show the headline alone. The honest choice is to wait until the breakdown matches rather than show a grid that disagrees with the headline.
Honest caveats
- Late-filed contributions can shift the picture. We refresh from NetFile hourly. Anything filed in the last hour may not be reflected yet.
- Amendments can change past numbers. Candidates sometimes amend earlier filings (correcting a typo, refunding a contribution). When that happens, our numbers update — they don't stay frozen at the original reading.
- Donor names aren't deduplicated by person. If “Jane Smith” gives $100 and “Jane S. Smith” gives $100, those count as two donors in the totals on the candidate page, even though they're probably the same person.
- The “Business” column counts donor businesses, not the businesses where individual donors work. If five Chevron employees each donate as individuals, those are counted as individual contributions, not business contributions. Chevron Corp. itself would have to be the donor for it to land in the Business column.