Skip to content
Donate

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Attorney General

CandidateQuotes shownShared issues addressedWords quoted
James Uthmeier00 of 40
Jose Javier Rodriguez11 of 412

Broward County School Board, District 1

CandidateQuotes shownShared issues addressedWords quoted
Maura McCarthy Bulman11 of 359

Broward County School Board, District 4

CandidateQuotes shownShared issues addressedWords quoted
Nicole Morst11 of 396

Broward County School Board, District 7

CandidateQuotes shownShared issues addressedWords quoted
Cynthia Alceus Dominique42 of 355

Commissioner of Agriculture

CandidateQuotes shownShared issues addressedWords quoted
Wilton Simpson10 of 440
Joey Mendoza Atkins00 of 40

Governor

CandidateQuotes shownShared issues addressedWords quoted
Byron Donalds231 of 4447
David Jolly313 of 42,026
Scott Eckhard Jewett594 of 41,470
Charles Burkett544 of 42,720
Frank J. Russo374 of 41,466
Moliere "Moe" Dimanche91 of 4731
Dean Ocean Abrams00 of 40
Jeffrey Peter "Dr. Jeff" Datto00 of 40

Hillsborough County Commission, District 1

CandidateQuotes shownShared issues addressedWords quoted
Jackie Toledo44 of 4129
Harry Cohen00 of 40

Hillsborough County Commission, District 3

CandidateQuotes shownShared issues addressedWords quoted
Luiz F. F. Garcia72 of 4446
Gwen Myers00 of 40

Hillsborough County Commission, District 5

CandidateQuotes shownShared issues addressedWords quoted
Stacy Hahn32 of 4167
Neil Manimala21 of 427

Hillsborough County Commission, District 7

CandidateQuotes shownShared issues addressedWords quoted
Joshua Wostal20 of 4140
Aileen Rodriguez33 of 4112

Hillsborough County School Board, District 2

CandidateQuotes shownShared issues addressedWords quoted
Brittany Lyssy00 of 30
Daniela Simic11 of 328

Miami-Dade County Commission, District 2

CandidateQuotes shownShared issues addressedWords quoted
Marleine Bastien51 of 483

Miami-Dade County Commission, District 5

CandidateQuotes shownShared issues addressedWords quoted
Vicki L. Lopez32 of 425
Rob Piper00 of 40

Miami-Dade County School Board, District 1

CandidateQuotes shownShared issues addressedWords quoted
Linda Cothiere91 of 3191
Katrina Wilson00 of 30

Orange County Commission, District 2

CandidateQuotes shownShared issues addressedWords quoted
Kamia Brown63 of 445
Mike Crabb72 of 4131

Orange County Commission, District 7

CandidateQuotes shownShared issues addressedWords quoted
Patricia Rumph43 of 4137
Vicki Vargo00 of 40

Orange County Commission, District 8

CandidateQuotes shownShared issues addressedWords quoted
Jeannette Quinones Hernandez00 of 40
Victor M. Torres Jr.52 of 4217

Orange County Mayor

CandidateQuotes shownShared issues addressedWords quoted
Chris Messina72 of 4304
Tiffany Moore Russell00 of 40

Orange County School Board, District 2

CandidateQuotes shownShared issues addressedWords quoted
Gloria Reina O'Neal11 of 311

United States Representative, FL-7

CandidateQuotes shownShared issues addressedWords quoted
Ryan Elijah93 of 4211
Bale Dalton133 of 4967
Christopher Dennison31 of 4139

United States Representative, FL-8

CandidateQuotes shownShared issues addressedWords quoted
Mike Haridopolos144 of 4860
Jennifer Jenkins82 of 490

United States Representative, FL-9

CandidateQuotes shownShared issues addressedWords quoted
Dan Green41 of 4215
Darren Soto53 of 4225

United States Representative, FL-10

CandidateQuotes shownShared issues addressedWords quoted
Maxwell Alejandro Frost42 of 4260

United States Representative, FL-11

CandidateQuotes shownShared issues addressedWords quoted
Joe Strada00 of 40
James Pericola72 of 4122
Ralph Groves73 of 4595

United States Representative, FL-12

CandidateQuotes shownShared issues addressedWords quoted
Gus Michael Bilirakis42 of 4135
Kimberly Overman172 of 4678
Branden Scrivener30 of 4235

United States Representative, FL-14

CandidateQuotes shownShared issues addressedWords quoted
Mike Beltran00 of 40
Kathy Castor32 of 4114
Brian Lambert53 of 491

United States Representative, FL-15

CandidateQuotes shownShared issues addressedWords quoted
Laurel Lee62 of 4353
Robert People103 of 4528

United States Representative, FL-16

CandidateQuotes shownShared issues addressedWords quoted
Sydney Gruters73 of 4241
Kelly Kirschner223 of 4515
Mark Davis10 of 414

United States Representative, FL-20

CandidateQuotes shownShared issues addressedWords quoted
Brent Andersen21 of 4146
Debbie Wasserman Schultz00 of 40
Kedner Maxime424 of 4720

United States Representative, FL-22

CandidateQuotes shownShared issues addressedWords quoted
Casey Askar11 of 448
Pia Dandiya00 of 40

United States Representative, FL-24

CandidateQuotes shownShared issues addressedWords quoted
Te Mayonna Brown214 of 41,586
Oliver G. Gilbert III182 of 4548

United States Representative, FL-25

CandidateQuotes shownShared issues addressedWords quoted
Scott Singer142 of 4718
Jared Moskowitz92 of 4363
Peter Jassenoff00 of 40

United States Representative, FL-26

CandidateQuotes shownShared issues addressedWords quoted
Mario Diaz-Balart72 of 4150
Nicole Locklin174 of 41,485
Deborah Ann Meidinger Hosey00 of 40

United States Representative, FL-27

CandidateQuotes shownShared issues addressedWords quoted
Maria Elvira Salazar30 of 4204
Eliott Rodriguez00 of 40

United States Representative, FL-28

CandidateQuotes shownShared issues addressedWords quoted
Carlos A. Gimenez00 of 40
Phil "Felipe" Ehr82 of 4204
Eddy Rojas00 of 40

United States Senator

CandidateQuotes shownShared issues addressedWords quoted
Ashley Moody00 of 40
Angie Nixon644 of 41,593
Neil J. Gillespie00 of 40
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.

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:

  1. Official documents — the ballot text, the resolution that put it there, a staff or revenue analysis.
  2. Research — studies and analyses with a method behind them, from universities, institutes and policy groups.
  3. Reporting — a newsroom explaining or covering it.
  4. Advocacy — a named person or organisation making the case: editorials, the sponsor, an advocacy group.
  5. 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.