The verdict system
- KEPT β The politician took the action they promised.
- PARTIAL β Some action toward the promise, but incomplete delivery, OR outcome blocked by opposing party despite their full effort.
- BROKEN β The politician's own vote or action contradicted the promise.
- YOU DECIDE β Outcome depends on the reader's interpretive framework. Used sparingly.
Promises are contracts for the next term
A campaign promise made in 2024 cannot be graded in 2025. It is a contract for the next term β and that term has barely begun. So every promise on this site is anchored to the term it covers, and a verdict only locks in once that term ends.
- Graded β the term has ended; the verdict is final.
- Pending β the term is still in progress; we publish the promise but withhold the verdict. The politician page shows a "Live tracking" indicator instead of a kept-rate percentage.
For senators, the term is six years. For House members, two. For governors and presidents, four (with variation by state). For mayors and attorneys general, we honor each office's actual term length. The page header on every politician profile names the term boundaries you're looking at.
No career averages. A politician who served 1980β2024 made different promises in each of seven cycles. Averaging them into a single number erases meaning. Prior terms are displayed as separate scorecards on the politician page; we never collapse them into one aggregate.
How a politician's promise list is built
The biggest hidden trap in any promise tracker is who decides which promises get tracked. If the curator picks five flattering pledges, the politician scores well; if they pick five unflattering ones, the politician scores badly. Same person, different selection bias.
Our protocol: for each politician, identify the most-frequently-repeated commitments across three independent surfaces β (1) the official campaign website during the relevant cycle, (2) the politician's debate appearances and stump speeches, and (3) their voter-guide questionnaire responses. Promises that appear on two or more of these surfaces enter the list. Promises that appear on only one surface are excluded.
The minimum list size is 10 promises per cycle; the typical list is 15β25. When fewer than 10 surface, we flag the profile as "limited corpus" and treat its kept-rate as illustrative rather than conclusive.
The primary-source archive
Every verdict on this site is grounded in a primary-source document β campaign-site policy pages, debate transcripts, signed pledges, official speeches. Many of those documents live on fragile hosts: a single third-party CDN, a wayback snapshot that could decay, a news outletβs archive that has deleted older posts before. When a citation we depend on lives only at one fragile URL, we mirror the document to campaignreceipts.com/sources so the citation chain doesnβt break.
Each mirrored document lists its original host and at least one additional public mirror so anyone can independently verify our copy matches the canonical one. We donβt fabricate URLs and we donβt cite documents we canβt produce on request.
When obstruction changes the verdict
Promises live or die in a system the politician doesn't fully control. Our routing rule keeps verdicts about the person rather than about the system:
- Blocked by Congress β PARTIAL. If the politician used the procedural tools available to them (introducing the bill, whipping votes, taking the public position) but the opposing caucus killed it, that is PARTIAL β movement without completion, not the promisor's fault. The case study names the obstructing party explicitly.
- Blocked by courts β case-by-case. If the policy was struck down because the politician's own design was unconstitutional, that's closer to BROKEN. If struck down on standing or a tangential ruling, that's PARTIAL. The reasoning text explains which.
- Stalled by the politician's own caucus β BROKEN. If the politician's party held the trifecta and the promise still didn't move, that's an own-action failure regardless of who voted against it on the floor.
The rule applies symmetrically across parties. A Democratic senator whose bill died in a Republican-held chamber gets PARTIAL credit; a Republican senator whose bill died in a Democratic-held chamber gets the same. We do not let partisan alignment of the obstructor shift the routing.
The 3-pass adversarial review
Every politician profile passes through three sequential reviewers β each a separate, isolated reasoning pass with a distinct partisan-perspective brief:
- Neutral researcher
Pulls campaign promises from primary sources β campaign websites via the Wayback Machine, debate transcripts, voter-guide questionnaires. For each promise, searches the legislative record and cross-spectrum news. Assigns a verdict backed by at least 2 primary sources.
- Conservative-perspective reviewer
Stress-tests the profile for left-leaning bias, missing context, and unfair verdicts. Flags any framing a thoughtful conservative reader would object to.
- Progressive-perspective reviewer
Mirror-image β stress-tests for right-leaning bias, missing accountability moments, and overly generous framings.
A profile is only published when both partisan reviewers return zero high-severity objections. Disagreements trigger a re-run of the research pass with both critiques as context. Full review logs are stored as an audit trail.
On the underlying technology: the research and review passes are run by current-generation language-model systems with web-search access. They are not the source of authority β primary records and public votes are. The reviewers exist to catch one-sided framing in the writeup; the receipts themselves do the load-bearing work.
The obstruction-aware verdict rule
When a promised outcome was prevented by the opposing party β filibuster, refusal to take up, presidential veto, courts β the verdict considers whether the politician took the actions available within their caucus's power.
BROKEN is reserved for cases where the politician's own actions prevented the outcome. When obstruction came from outside their caucus's control AND they took the maximally available procedural action, the verdict is PARTIAL with the obstructing party named explicitly. The rule applies symmetrically to politicians of both parties.
Two review tiers β and how a profile gets upgraded
Not every profile receives the full 3-pass adversarial review. We use a two-tier system:
- Full review β Research pass + Conservative-perspective reviewer + Progressive-perspective reviewer + adjudication when reviewers disagree. Reserved for politicians most likely to be screenshot-mocked if biased: leadership, presidential candidates, partisan flanks, controversial figures.
- Standard review β Single research pass with the stable prompt. Produces the same primary-source receipts but does not run the adversarial reviewers. Used for rank-and-file politicians where the marginal cost of full review exceeds the marginal benefit.
- Sourced from the SEALED book β Scorecard imported from the SEALED Press book's full case-study research (currently: Trump 2016).
Auto-upgrade by reader interest: we track page-view counts on individual politician pages. When a Standard-review profile crosses a traffic threshold (currently set at 1,000 monthly views, subject to revision), it gets queued for promotion to Full review. The rationale: profiles that draw real reader attention deserve the deeper editorial process, and bias is more consequential where more readers see it.
Every politician page shows its current tier in the sidebar. You can see exactly what level of review the verdicts received.
Stakes-naming rule
When a promise has documented real-world stakes β number of people affected, dollar amounts, casualties β those stakes are named explicitly in the case study, regardless of whether they help or hurt the politician. Symmetric stakes-naming applies across both KEPT and BROKEN verdicts. Selectively-cited political quotes are treated as equivalent to manufactured paraphrase.
Monthly verdict-routing audit
The biggest risk to a directory of this size is drift β the same situation routed to PARTIAL on one profile and BROKEN on another, simply because different research passes handled them. Two safeguards prevent that:
- 5% monthly spot audit. Every month we randomly sample 5% of all verdicts and re-route them under the rules above. Discrepancies are corrected and the routing rules are tightened wherever the audit surfaces ambiguity.
- Public audit log. When a verdict changes as a result of an audit, the change is recorded with a date, the original verdict, and the routing reason. The log is linked from every politician page.
How we classify donor profiles
For federal candidates with reported activity, we surface FEC-sourced donor data on a per-politician /donors page and tag each politician with one of five donor profiles:
- Grassroots β individual contributions β₯70% of total raised AND large-donor share β€50%.
- Corporate β political-action-committee contributions β₯30% of total raised.
- Self-funded β candidate's own contributions β₯25% of total raised.
- Mixed β anything else, the most common bucket. Most senators land here because their large-donor share crosses the grassroots threshold even when PAC share is low.
- Unknown β no FEC data (state-level candidates, joint-fundraising-committee structures, or no reported cycle activity).
Source: FEC OpenAPI v1. Industry rollups use a conservative 9-category keyword classifier on the contributor's employer and occupation fields β false positives hurt credibility more than missing tags, so we leave most donors industry-untagged when unsure.
Dispute a verdict
Found a factual error? Email disputes@campaignreceipts.com with the politician's name, the specific verdict, and the source you believe contradicts our finding. We respond within 7 days. Verified corrections are applied with a public changelog.