§ — 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:
- Identify two distinct debaters (or fail with NOT_A_DEBATE).
- Map definitional alignment for the central terms.
- Extract every load-bearing claim, with timestamps.
- Map the refutation chains exchange by exchange.
- Detect fallacies, with quotes and severity ratings.
- Score steelmanning per debater.
- Count: claims raised / defended / refuted / unanswered, weighted fallacies, concessions.
- 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 otherwiseEvery 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
- Open the analysis. Find the claim_ids cited in the verdict's key_deciding_factor.
- Click each one. The video jumps to the exact timestamp. Verify the quote.
- If the quote is wrong, the verdict is wrong — file an issue with the claim_id.
- 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.