Skip to content
whowonthedebate

§ — Methodology

How a verdict survives scrutiny.

Every line of this page is a shield against the obvious accusation: that this is just another biased AI rendering opinions in a more professional voice. Read it. Then read the receipts on any verdict. Then disagree on the receipts, not on the tone.

SECTION 01

The schema

A verdict is the output of a structured pipeline, not a chat. The model fills in a fixed JSON schema (defined in lib/analysis/schema.ts) with claims, refutation chains, fallacies, concessions, dropped points, definitional alignments, and per-debater score components. The schema is enforced at runtime by Zod. If the JSON does not validate, the model is given the validation errors and asked to repair its output once. If the repair fails, the analysis is rejected — we don't show you broken adjudications.

SECTION 02

The order is non-negotiable

The system prompt forces the model to execute the steps in this exact order:

  1. Identify two distinct debaters (or fail with NOT_A_DEBATE).
  2. Map definitional alignment for the central terms.
  3. Extract every load-bearing claim, with timestamps.
  4. Map the refutation chains exchange by exchange.
  5. Detect fallacies, with quotes and severity ratings.
  6. Score steelmanning per debater.
  7. Count: claims raised / defended / refuted / unanswered, weighted fallacies, concessions.
  8. Derive the verdict from the counts using the deterministic formula below — not from vibes.

SECTION 03

The formula

For each debater X:

total(X) = Σ(significance × weight) / Σ(significance) × 100

  where weight =
    defended   → 1.0  (claim stood)
    unanswered → 1.0  (opponent never engaged — point stands)
    draw       → 0.5  (balanced exchange)
    refuted    → 0.0  (claim fell)
    conceded   → 0.0
    dropped    → 0.0

margin =
  decisive  if |total_A - total_B| ≥ 25
  clear     if |total_A - total_B| ≥ 12
  narrow    if |total_A - total_B| ≥  4
  draw      otherwise

Every claim is weighted by its significance in the debate. The verdict is pure math — no rhetoric scores, no steelman bonuses, no subjective multipliers. Rhetorical strength is shown as supplementary information but has zero effect on the winner.

SECTION 04

The bias-killer

After the model returns its verdict, we re-run the formula deterministically in code (lib/analysis/verdict-validator.ts) and compare the model's verdict to what the math says. If the winner doesn't match, we override the model and patch the verdict. The model cannot smuggle a preference into the final call. It can only describe.

Each claim's final status is determined mechanically from its refutation chain: who spoke last and what move they made. If the holder's last move was a concession or evasion, the claim is refuted. If the holder rebutted and the opponent never responded, it's defended. The AI extracts the exchanges — the code decides the outcome.

SECTION 05

What the model can and cannot do

Can

  • Extract claims and quote them precisely.
  • Recognize refutation moves and concessions.
  • Spot common fallacies when the quote is exact.
  • Detect definitional misalignment.

Cannot

  • Override the math.
  • Declare a winner without referencing claim_ids in the justification.
  • Fact-check the world — only the internal logic of the exchange.
  • Disambiguate sarcasm or non-verbal moves perfectly. Read the receipts before reacting.

SECTION 06

Rhetorical winner ≠ winner

A debater can speak more confidently, more poetically, more compellingly — and still lose on substance. We separate rhetorical_winner from winner and say so explicitly when they diverge. Charisma is not substance. The verdict is determined entirely by the claim tally — rhetoric is shown for context but has zero weight.

SECTION 07

How to challenge a verdict

  1. Open the analysis. Find the claim_ids cited in the verdict's key_deciding_factor.
  2. Click each one. The video jumps to the exact timestamp. Verify the quote.
  3. If the quote is wrong, the verdict is wrong — file an issue with the claim_id.
  4. If the quote is right and you still disagree, that's a real disagreement. Vote in the crowd verdict widget — we surface the divergence openly.

SECTION 08

What's stored, what isn't

We store the analysis JSON, the video ID, vote counts, and rate-limit fingerprints. We do not store transcripts longer than 30 days. We do not store the originating IP except as a one-way hash for vote deduplication. See the privacy policy for the full list.

Disclaimer: this is an automated tool, not a court of law. It is built to be the second opinion you bring to a comment-section argument, not the final word on any debate. Read the receipts.