Open Source Project
A single, model-agnostic prompt that turns any capable LLM with web access into a rigorous, non-partisan election researcher. Point it at any race, in any district or country, and it hands back sourced candidate memos, a fact-checked claim ledger, and an issue comparison table an ordinary voter can actually use.
The short version: local races get almost no fact-checking coverage. National outlets pick apart the presidential race and skip the state senate primary and city council runoff completely, even though those affect daily life more directly. This prompt makes any LLM do that missing work on demand, with a sourcing standard strict enough to trust and output plain enough to read over coffee.
Attack ads and vague claims travel fastest exactly where scrutiny is thinnest: down-ballot races. I wanted a tool that would apply the same rigor a national fact-checker gives a presidential debate to a school board seat or a state senate primary, without requiring an API key, a codebase, or a subscription to anything beyond the AI chat tool someone already uses.
The result is a single prompt file. Copy it, fill in the race, paste it into Claude, ChatGPT, Gemini, or Perplexity, and it runs the research itself, live, sourcing every claim as it goes.
| Deliverable | Description |
|---|---|
| Race overview | What the office actually does, how the winner is decided, all ballot-qualified candidates, seat history |
| Candidate memos | One per candidate: background, priorities, record, funding, endorsements, red flags, claims checked |
| Issue comparison table | Key issues x candidates, every cell cited, "No stated position found" where that's honestly the answer |
| Claim ledger | Every claim quoted exactly, attributed to its true speaker, rated, and sourced |
| Voter logistics box | Registration deadlines, ID rules, early and mail voting, from the official election authority |
| Report card | What was verified, what was assumed, what was skipped and why, source freshness |
Every claim in the ledger gets one of six ratings, on a strict sourcing bar: at least 3 independently owned sources that did their own reporting, or 1 verifiable public government record. If the bar isn't met, the claim is marked Unverifiable and stated plainly, never guessed.
Open prompt-candidate-research.md, copy everything below the first horizontal rule, and fill in the input block:
Paste it into your model of choice and run. It works for any jurisdiction: a UK constituency, a Canadian riding, a German Wahlkreis, a mayoral runoff, a school board seat.
Cost warning: this is a deep-research prompt and it's deliberately expensive. The sourcing standard (3+ independent sources per claim, all candidates, all issues, adversarial re-checking) can drive dozens to hundreds of web searches in a single run, especially in a crowded primary.
On metered APIs, set a spend limit first. On subscription chat plans, expect a run to consume a meaningful chunk of your usage quota. Cost scales with candidate count, so narrow the "issues I care most about" field to cut scope on large fields.
Output quality tracks the model's search capability and the jurisdiction's press coverage. Sparse local coverage means more Unverifiable ratings, which is honest, not broken. Ad transparency data is strong in the US and EU and weaker elsewhere, so ad claims outside those regions skew Unverifiable too. A prompt cannot make a model neutral; it can only demand a symmetric process, so it's worth spot-checking results, especially in a race you already know well. And facts decay fast in a live campaign, so re-run close to election day.