How we stay fair
Fairness you can check, not just trust
Nothing is truly unbiased, so instead of asking you to trust us, we show you the whole method in plain language: what we publish, the checks it passes, and the same rules every candidate gets.
Where it falls short is here too: known limits and what we don’t cover.


Candidates in their own words
A brief shows one thing: what each candidate says about the issues, quoted word for word from their own official campaign website. We don’t summarize, paraphrase or rewrite, and no one edits a quote by hand. The website is one we have opened and confirmed names the candidate and the office.
We quote nothing else: not news coverage, not opponents, not parties, advocacy groups or endorsers. A quote shows what a candidate says. It is not a fact we have checked, and we don’t rate whether it is true.
No source, no quote

Every quote links to the page it came from, so you can read it in context. The step that writes a brief stores each quote together with its page, and the page that shows a brief only shows quotes that have one. A quote without a source never reaches you.
How a quote gets here
Every candidate goes through the same steps, with the same settings.
- We read the site. The homepage, then up to 8 more pages linked from it that are most likely to hold the candidate’s positions, plus their About page when the site has one we can find. The site is split into passages, each kept exactly as written.
- Two questions for every passage, then its issue. An AI model asks whether the passage commits the candidate to something they will do, support, oppose, fund or change, and whether that commitment is the candidate’s own, rather than biography, a past record, someone else’s endorsement or criticism of an opponent. It also asks which of our 25 issues the passage is about. A passage is quoted only if the model is at least 85% sure of both questions and also at least 85% sure it is about one of those issues. It sorts passages; it never writes a word you read.
- A second review. A separate review checks every candidate’s results against one fixed checklist: every passage comes from the candidate’s own site, every quote matches the site character for character, nothing that is only biography or a past record is counted as a position, and silence is recorded rather than filled. That review is also done by an AI model, with the same written instructions for every candidate. Where it flagged a passage, a person decided by one rule for everyone: a passage that only describes a past record, with no commitment, is left out.
- The audit, then a person. The race goes through the Balance Audit below, and a person approves it before it is published. A problem is fixed by running the same steps again, never by editing the result.
Every race for an office asks the same questions
Each brief lines the candidates up side by side on a few shared issues. Those issues are set by the office, the same for every race for that office, rather than picked from what the candidates happened to write about, so no candidate’s emphasis, or the length of their website, decides what everyone is compared on:
- U.S. Senate and U.S. House: Economy, inflation, and jobs; Healthcare access and costs; Immigration and border enforcement; Social Security and Medicare.
- Governor: Property insurance costs; Property taxes; Housing affordability; Cost of living in Florida.
- Chief Financial Officer: Property insurance costs; Property taxes; Economy, inflation, and jobs; Cost of living in Florida.
- Attorney General: Crime policy, policing and courts; Threats to democratic institutions; Immigration and border enforcement; Property insurance costs.
- Commissioner of Agriculture: Water quality and Everglades restoration; Water supply and drinking water; Growth, development and land conservation; Cost of living in Florida.
- County commission and county mayor: Housing affordability; Growth, development and land conservation; Storm resilience and flood protection; Crime policy, policing and courts.
- School board: Public school funding and teachers; School choice and vouchers; Career, vocational and higher education.
- Clerk of the Courts: none of our issues fits the office, so a clerk race has no shared issues.
A position on one of our other issues still appears, under that issue, so the shared issues decide only what is compared side by side. But we show a position only when it fits one of our 25 issues. A position on anything outside that list isn’t shown (see known limits).
All 25 issues
- Property insurance costs
- Housing affordability
- Property taxes
- Cost of living in Florida
- Water quality and Everglades restoration
- Public school funding and teachers
- School choice and vouchers
- Career, vocational and higher education
- Elections administration and voting access
- Economy, inflation, and jobs
- Healthcare access and costs
- Immigration and border enforcement
- Social Security and Medicare
- Abortion policy
- Election integrity
- Threats to democratic institutions
- Crime policy, policing and courts
- Climate and environment (national)
- Energy and utilities
- Growth, development and land conservation
- Storm resilience and flood protection
- Water supply and drinking water
- Renters and evictions
- Homelessness
- Condominium and HOA costs
Silence is recorded, never filled in
If a candidate has no stated position on a shared issue, we say exactly that: "No stated position found." We never invent a position, never fill the gap from another source, and never quietly drop the issue.
It can mean several things, and we don’t guess which: the candidate’s site doesn’t state a position on it; it does, but our two questions missed it or we didn’t match it to this issue; it does, on a page we didn’t read (see known limits); or we could not read the site at all, because there isn’t one, it blocked us, or it asked not to be read.
How we read campaign sites
We read a campaign site the way a polite visitor would: a handful of pages, one at a time, with a pause between them. If a site’s robots.txt file asks crawlers to stay out, whether all crawlers, ours by name, or Anthropic’s AI crawlers, we don’t read it.
Our reader says who it is and never poses as anything else. Some sites show an automatic "checking your browser" screen; we let that check run, as any visitor’s browser does. We never solve a captcha and never work around a block. If a site still won’t let us in, we quote nothing from it.
The Balance Audit, as it is actually set
Before a race is published, an automatic audit compares its candidates. It is plain arithmetic, with no AI in it, over counts like the ones in the table below. For each count it measures the gap between the candidate with the most and the candidate with the least, as a share of the most. If one candidate’s quotes add up to 1,000 words and another’s to 250, the gap is 75%. A gap can never be more than 100%.
- Words quoted is the check meant to hold a race back when one candidate gets far more space than another. Its limit is set at 150%. No gap can reach that, so in practice it never holds a race back. That is a deliberate choice: campaign sites differ hugely in length, some candidates have no site at all, and holding a race back for that would mean publishing nothing about what any of its candidates say. The difference is shown instead of hidden: every candidate’s word count is in the table below.
- Verified facts and fact-checks have checks of the same kind, but we don’t collect either yet. Every candidate has zero of both, so those two checks pass without measuring anything.
- Quotes shown and shared issues addressed never hold a race back. A gap of more than 15% in quotes, or any gap at all in shared issues addressed, is flagged for a person to see, and the race is then published as it is. We never even it out by adding words for a quieter candidate.
The audit’s numbers, in the open
For every published race, what the audit measured for each candidate. A quote filed under two issues appears twice in the brief, so it counts twice here. You’re welcome to check the math against any brief.
36 published races, 82 candidates, 648 quotes, all as of September 29, 2026.
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| James Uthmeier | 0 | 0 of 4 | 0 |
|---|
| Jose Javier Rodriguez | 1 | 1 of 4 | 12 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Maura McCarthy Bulman | 1 | 1 of 3 | 59 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Nicole Morst | 1 | 1 of 3 | 96 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Cynthia Alceus Dominique | 4 | 2 of 3 | 55 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Wilton Simpson | 1 | 0 of 4 | 40 |
|---|
| Joey Mendoza Atkins | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Byron Donalds | 23 | 1 of 4 | 447 |
|---|
| David Jolly | 31 | 3 of 4 | 2,026 |
|---|
| Scott Eckhard Jewett | 59 | 4 of 4 | 1,470 |
|---|
| Charles Burkett | 54 | 4 of 4 | 2,720 |
|---|
| Frank J. Russo | 37 | 4 of 4 | 1,466 |
|---|
| Moliere "Moe" Dimanche | 9 | 1 of 4 | 731 |
|---|
| Dean Ocean Abrams | 0 | 0 of 4 | 0 |
|---|
| Jeffrey Peter "Dr. Jeff" Datto | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Jackie Toledo | 4 | 4 of 4 | 129 |
|---|
| Harry Cohen | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Luiz F. F. Garcia | 7 | 2 of 4 | 446 |
|---|
| Gwen Myers | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Stacy Hahn | 3 | 2 of 4 | 167 |
|---|
| Neil Manimala | 2 | 1 of 4 | 27 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Joshua Wostal | 2 | 0 of 4 | 140 |
|---|
| Aileen Rodriguez | 3 | 3 of 4 | 112 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Brittany Lyssy | 0 | 0 of 3 | 0 |
|---|
| Daniela Simic | 1 | 1 of 3 | 28 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Marleine Bastien | 5 | 1 of 4 | 83 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Vicki L. Lopez | 3 | 2 of 4 | 25 |
|---|
| Rob Piper | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Linda Cothiere | 9 | 1 of 3 | 191 |
|---|
| Katrina Wilson | 0 | 0 of 3 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Kamia Brown | 6 | 3 of 4 | 45 |
|---|
| Mike Crabb | 7 | 2 of 4 | 131 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Patricia Rumph | 4 | 3 of 4 | 137 |
|---|
| Vicki Vargo | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Jeannette Quinones Hernandez | 0 | 0 of 4 | 0 |
|---|
| Victor M. Torres Jr. | 5 | 2 of 4 | 217 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Chris Messina | 7 | 2 of 4 | 304 |
|---|
| Tiffany Moore Russell | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Gloria Reina O'Neal | 1 | 1 of 3 | 11 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Ryan Elijah | 9 | 3 of 4 | 211 |
|---|
| Bale Dalton | 13 | 3 of 4 | 967 |
|---|
| Christopher Dennison | 3 | 1 of 4 | 139 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Mike Haridopolos | 14 | 4 of 4 | 860 |
|---|
| Jennifer Jenkins | 8 | 2 of 4 | 90 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Dan Green | 4 | 1 of 4 | 215 |
|---|
| Darren Soto | 5 | 3 of 4 | 225 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Maxwell Alejandro Frost | 4 | 2 of 4 | 260 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Joe Strada | 0 | 0 of 4 | 0 |
|---|
| James Pericola | 7 | 2 of 4 | 122 |
|---|
| Ralph Groves | 7 | 3 of 4 | 595 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Gus Michael Bilirakis | 4 | 2 of 4 | 135 |
|---|
| Kimberly Overman | 17 | 2 of 4 | 678 |
|---|
| Branden Scrivener | 3 | 0 of 4 | 235 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Mike Beltran | 0 | 0 of 4 | 0 |
|---|
| Kathy Castor | 3 | 2 of 4 | 114 |
|---|
| Brian Lambert | 5 | 3 of 4 | 91 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Laurel Lee | 6 | 2 of 4 | 353 |
|---|
| Robert People | 10 | 3 of 4 | 528 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Sydney Gruters | 7 | 3 of 4 | 241 |
|---|
| Kelly Kirschner | 22 | 3 of 4 | 515 |
|---|
| Mark Davis | 1 | 0 of 4 | 14 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Brent Andersen | 2 | 1 of 4 | 146 |
|---|
| Debbie Wasserman Schultz | 0 | 0 of 4 | 0 |
|---|
| Kedner Maxime | 42 | 4 of 4 | 720 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Casey Askar | 1 | 1 of 4 | 48 |
|---|
| Pia Dandiya | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Te Mayonna Brown | 21 | 4 of 4 | 1,586 |
|---|
| Oliver G. Gilbert III | 18 | 2 of 4 | 548 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Scott Singer | 14 | 2 of 4 | 718 |
|---|
| Jared Moskowitz | 9 | 2 of 4 | 363 |
|---|
| Peter Jassenoff | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Mario Diaz-Balart | 7 | 2 of 4 | 150 |
|---|
| Nicole Locklin | 17 | 4 of 4 | 1,485 |
|---|
| Deborah Ann Meidinger Hosey | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Maria Elvira Salazar | 3 | 0 of 4 | 204 |
|---|
| Eliott Rodriguez | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Carlos A. Gimenez | 0 | 0 of 4 | 0 |
|---|
| Phil "Felipe" Ehr | 8 | 2 of 4 | 204 |
|---|
| Eddy Rojas | 0 | 0 of 4 | 0 |
|---|
| Candidate | Quotes shown | Shared issues addressed | Words quoted |
|---|
| Ashley Moody | 0 | 0 of 4 | 0 |
|---|
| Angie Nixon | 64 | 4 of 4 | 1,593 |
|---|
| Neil J. Gillespie | 0 | 0 of 4 | 0 |
|---|
Listed, no brief (25 races)
These races show who is on the ballot but have no brief, so there is nothing to count. No count here is not a count of zero.
- Broward County Commission, District 2
- Broward County Commission, District 4
- Broward County Commission, District 6
- Broward County Commission, District 8
- Broward County School Board, At Large 8
- Broward County School Board, District 6
- Chief Financial Officer
- Hillsborough County School Board, District 4
- Hillsborough County School Board, District 6
- Miami-Dade County Commission, District 1
- Miami-Dade County Commission, District 4
- Miami-Dade County Commission, District 6
- Miami-Dade County Commission, District 8
- Miami-Dade County Commission, District 10
- Miami-Dade County Commission, District 12
- Miami-Dade County School Board, District 2
- Miami-Dade County School Board, District 4
- Miami-Dade County School Board, District 6
- Miami-Dade County School Board, District 8
- Orange County Clerk of the Courts
- Orange County Commission, District 4
- Orange County Commission, District 6
- Orange County School Board Chair
- Orange County School Board, District 1
- Orange County School Board, District 3
Listed before briefed
A race reaches this site in two steps. First it is listed: we show who is on the ballot and nothing more. That means the names printed on the ballot — from the Florida Division of Elections’ general-election candidate list for state and federal races, and from each county Supervisor of Elections’ candidate list for county seats — each candidate’s party as they filed it, their official campaign site where we have opened the page and confirmed it names the candidate and the office, and whether the seat was already decided. All of that is public record, and every candidate in the race gets the same card.
Then it is briefed: what each candidate says, quoted from their own site, appears only after the race passes the Balance Audit and a person approves it. A listed race never shows a position — not a partial set, and not the ones we happened to find first.
A race stays listed, with no brief, when there is nothing to compare: when we read its candidates’ sites, none of them stated a position that passed our checks, or none had a site we could read. A page that said "No stated position found" for every candidate on every issue would add nothing to the list of names, and could read as a judgment on them. A race can also be listed for a short time while its brief is rebuilt.
Who serves now
Beside each candidate we say whether they serve today in the office or on the body the race elects to: ‘Holds this office now’ for an office one person holds, ‘Member of … now’ for Congress, a county commission or a school board. A member counts whatever district or seat they hold today: a member of Congress running in a district renumbered by Florida’s 2026 map, and a commissioner or board member running for a different seat on the same body, both count. We check every candidate against the body’s own list of current members.
Known limits
- Some real positions are missed. The two questions are strict on purpose, to keep biography and past records out, and that costs some real commitments. When we checked the first question against one candidate’s site, it missed about 1 in 7 of the positions a reviewer found. The second question, added later, turns away more, and we have not measured how many. So "No stated position found" means we found none that passed our checks, not that the candidate has none.
- Positions outside our list of issues aren’t shown. A commitment that fits none of our 25 issues closely enough is left out, even when it passed both questions. Across every site we read, that was about 45 of every 100 passages that passed both.
- We read at most 8 pages of each site, besides the homepage and About page, and only pages the homepage links to. A position stated only deeper in a site can be missed.
- Briefs are a snapshot. We read the candidates’ sites on September 29, 2026. Anything added or changed since then isn’t here yet.
- Some races have no brief. When no candidate in a race had a stated position we could quote, we list who is on the ballot instead.
- Some candidates could not be read. A candidate with no campaign site, a site that blocked our reader, or a site that opted out in its robots.txt shows "No stated position found" on every shared issue.
- Length is shown, not evened out. A candidate who writes more about their positions gets more space.
What we don’t cover
- Records and votes. We don’t cover what a candidate has done in office, how they voted, or what they passed.
- Fact-checks. We don’t rate whether what a candidate says is true.
- Biographies. There is no bio section. We quote a candidate’s About page only where it states a position.
- Judicial retention. The questions on whether to keep a Florida Supreme Court justice or an appeals court judge in office are on Florida ballots, but we don’t cover them.
- Races outside our area. We cover the statewide races and amendments, the U.S. House districts that include part of Miami-Dade, Broward, Hillsborough, or Orange County, and the county commission, school board, Orange County mayor and Orange County clerk races in those four counties. We don’t cover Florida House or Florida Senate seats, other judicial races, county or city ballot questions, city races, special districts such as soil and water conservation and community development districts, or local races anywhere else.
For your official sample ballot, and for anything this site doesn’t cover, check with your county Supervisor of Elections or the Florida Division of Elections.
We show the ballot, not the filing list
The state’s filing list includes everyone who ever ran for a seat, not everyone who will appear on Election Day. We show only the candidates with a printed line on the ballot — those marked Qualified (QUA) or Unopposed (UNO). We leave out candidates who were Defeated in the primary (DEF), who Did Not Qualify (DNQ), who Withdrew (WIT), or who were Removed (REM). We also leave out qualified write-in candidates: a write-in has no printed name on the ballot, only a blank line for voters to fill in themselves, so there is nothing on the ballot itself for us to show. This page shows the ballot as it will look in the booth, not every name that was ever in the race.
Some seats are settled before November, and we list them rather than leave a gap — a voter whose seat was decided should be able to see who holds it and why it isn’t on the ballot. They come in two kinds, and we keep them apart. A seat is unopposed when nobody filed against the candidate: Florida law (F.S. 101.151(7)) then keeps the contest off the ballot, and the candidate takes the office. A seat was decided in the primary when a candidate won it outright in August, as Florida’s nonpartisan county races, such as school board, do when someone clears half the vote. Both are missing from the November ballot, for opposite reasons: in one, no one ran against the winner; in the other, people did, and an election was held. Saying "no one filed" about a seat that was won in a contested election would be untrue, so we never merge the two.
How we label the news
Every news card shows its publisher and whether the piece is reporting or opinion, so you always know what kind of writing you’re looking at, and opinion pieces are set apart visually from reporting rather than left to blend in.
A card does not carry the outlet’s political lean; the outlet’s own page does, next to where the rating came from. Every outlet we draw from has a page that says one of three things:
- A rating, when an independent rating agency such as AllSides has published one — shown as they published it. It describes where the outlet sits, not the story; we never score articles, and we never correct or offset a lean.
- No independent rating, when no rating agency covers the outlet. That is true of most local newsrooms — the agencies rate national and large-metro outlets — and we say so rather than guess one.
- Lean does not apply, for sources that are primary documents rather than journalism, such as a government filing or an official record.
An outlet whose ratings exist but have not been reviewed yet says "Not yet reviewed" — a gap on our side, not a fact about the outlet.
Stories are also tagged with the issues they cover, from one fixed list of 11 categories: Economy & Affordability, Education, Healthcare, Housing, Environment & Water, Immigration, Insurance & Property Costs, Public Safety & Crime, Elections & Voting, Retirement & Benefits, and Abortion Policy. A model does the tagging, and only after a story is already stored. Whether a story is stored is settled before any model sees it: it has to come from an outlet on our list, name a candidate on the ballot, and be approved by a person. Tagging adds a label and never decides what is stored, and a story without a tag still appears — just without an issue label.
Every candidate on the ballot gets the same number of news slots as every other candidate in their race, so heavier press coverage for one candidate never crowds the others off the page. That number comes from measuring how much coverage candidates actually get, and we have not measured it yet — until we do, every sourced story from the last 30 days is shown, ordered by the same rule for every candidate. If we can’t fill a candidate’s slots with sourced stories, we say so plainly — a shortfall is stated, never padded with unrelated or unsourced items.
How we order what people say about a ballot question
We write no case for or against an amendment. Each ballot question page collects what other people have published about it and puts each link in one of five groups, by what kind of source it is:
- Official documents — the ballot text, the resolution that put it there, a staff or revenue analysis.
- Research — studies and analyses with a method behind them, from universities, institutes and policy groups.
- Reporting — a newsroom explaining or covering it.
- Advocacy — a named person or organisation making the case: editorials, the sponsor, an advocacy group.
- Commentary — takes from people speaking for themselves: a video channel, a podcast, a blog.
The group decides where a link sits on the page, most established first. Nothing else does — not the outlet’s lean, not whether it is a video or an article, and never our opinion of it. A video can sit in any group depending on who made it. Official documents and reporting are shown to everyone first; advocacy and commentary are shown under the side they argue for, in two columns of equal size. A ballot question is published only when both sides are represented. Until then its page shows the ballot text and any official documents, research and reporting that take no side, but nothing that argues for either side.
We describe. You decide.
We never tell you who to vote for, never rank candidates, and never color-code parties.
Candidates are listed in Florida’s order for the November ballot, the same rule in every race: the Republican, then the Democrat, because their parties came first and second in the 2022 governor’s race (F.S. 101.151(3)); then minor-party candidates, then candidates with no party, each in the order they qualified. Nonpartisan races, such as school board, are alphabetical by last name, as county ballots print them (F.S. 105.041).
If anything here reads as slanted to you, email info@knowyour.vote. Skeptics are exactly who this page is for.