diff --git a/.claude/skills/verify-debatelab/features/case-generation.md b/.claude/skills/verify-debatelab/features/case-generation.md index 47317d94..2f7ea87f 100644 --- a/.claude/skills/verify-debatelab/features/case-generation.md +++ b/.claude/skills/verify-debatelab/features/case-generation.md @@ -46,5 +46,6 @@ Preconditions: - `Save` appears both on the result toolbar and in the dialog. Scope the second click to `getByRole("dialog")`. The toolbar `Save` exists only for one-off results. - A case filed in a debate is titled with the motion, which the header control also shows (truncated and hidden). Look for it inside the History panel, not with a page-wide `getByText`. - The client files a result after it renders. Wait for the result on screen (and the row, if the next step reloads) before a `page.goto`, or the reload can drop it. +- `recipes/case-examples.spec.ts` is not a check: it generates the public `/debate-case-example` samples (a debate with a format setting, then R1 and R2) and runs only on a live stack with `CASE_EXAMPLES=all` or a sample id. `scripts/case-examples/README.md` covers the run. - The model label in the result header (for example `anthropic/claude-sonnet-5.5`) is the model the function requested. The answer itself came from the fake provider. - `Google Docs` export needs Google OAuth and cannot be proven locally. diff --git a/.claude/skills/verify-debatelab/recipes/case-examples.spec.ts b/.claude/skills/verify-debatelab/recipes/case-examples.spec.ts new file mode 100644 index 00000000..145fc7af --- /dev/null +++ b/.claude/skills/verify-debatelab/recipes/case-examples.spec.ts @@ -0,0 +1,71 @@ +import { admin, aiResponse, debateControl, expect, LIVE, providerCalls, test } from "./fixtures"; + +// Generates the samples on the public /debate-case-example page through the real +// app: Login, Start debate with a format, Generate as R1, then R2 in the same debate. +// It spends live model and Exa calls, so it runs only when asked: +// VERIFY_LIVE_MODEL=anthropic/claude-sonnet-5.5 $H up --live +// CASE_EXAMPLES=all $H drive recipes/case-examples --project desktop-chromium (or CASE_EXAMPLES=bp-en) +// scripts/case-examples/README.md says how the evidence becomes the committed raw files. +const SAMPLES = [ + { id: "bp-en", motion: "This House would lower the voting age to 16", format: "British Parliamentary", side: "In favor", language: undefined }, + { id: "policy-en", motion: "Resolved: The United States federal government should substantially increase its investment in high-speed rail", format: "Policy", side: "Against", language: undefined }, + { id: "classroom-hu", motion: "Ez a Ház betiltaná a házi feladatot az általános iskolákban", format: "Classroom", side: "In favor", language: "Magyar" }, +] as const; + +const selected = process.env.CASE_EXAMPLES; + +for (const sample of SAMPLES) { + test(`case example ${sample.id}`, async ({ signedIn: page, user, evidence }) => { + test.skip(!LIVE || !selected || (selected !== "all" && selected !== sample.id), "set CASE_EXAMPLES on a live stack to generate the public samples"); + test.setTimeout(30 * 60_000); + + if (sample.language) { + await page.getByRole("button", { name: "Language", exact: true }).first().click(); + await page.getByRole("radiogroup", { name: "AI output language" }).getByRole("radio", { name: sample.language }).click(); + await page.keyboard.press("Escape"); + await evidence.step(`AI output language: ${sample.language}`); + } + + if (!page.url().includes("/app")) await page.goto("/app"); + await debateControl(page).click(); + const dialog = page.getByRole("dialog"); + await dialog.getByLabel("Motion").fill(sample.motion); + await dialog.getByRole("combobox", { name: "Format" }).click(); + await page.getByRole("option", { name: sample.format, exact: true }).click(); + await evidence.shot("00-start-debate"); + await dialog.getByRole("button", { name: "Start debate" }).click(); + await expect(dialog).toBeHidden(); + await evidence.step(`Started debate "${sample.motion}" with format ${sample.format}`); + + await page.goto("/app/generate"); + await expect(page.getByRole("heading", { name: "Your case will appear here" })).toBeVisible(); + await expect(page.getByRole("textbox", { name: "Motion / topic *" })).toHaveValue(sample.motion); + await page.getByRole("combobox", { name: "Side" }).click(); + await page.getByRole("option", { name: sample.side, exact: true }).click(); + + for (const role of ["R1 - Rebuttal/Arg (6 min)", "R2 - Rebuttal/Build (6 min)"]) { + const key = role.startsWith("R1") ? "r1" : "r2"; + await page.getByRole("combobox", { name: "Speaker Role" }).click(); + await page.getByRole("option", { name: role }).click(); + const before = (await providerCalls()).length; + const response = aiResponse(page, "generate"); + const requestPromise = page.waitForRequest((request) => request.url().endsWith("/functions/v1/ai") && request.method() === "POST"); + await page.getByRole("button", { name: "Generate debate case" }).click(); + const request = await requestPromise; + const body = await response; + await evidence.json(`${key}-request`, request.postDataJSON()); + await evidence.json(`${key}-response`, body); + await evidence.json(`${key}-provider-calls`, (await providerCalls()).slice(before)); + const thesis = (body.output as { caseStructure: { thesis: string } }).caseStructure.thesis; + await expect(page.getByText(thesis).first()).toBeVisible(); + await evidence.shot(`${key}-generated`); + await evidence.step(`Generated ${key}`); + } + + const userId = await user.userId(); + const { data: requests } = await admin.from("ai_requests").select("*").eq("user_id", userId); + await evidence.json("ai-requests", requests); + const { data: cases } = await admin.from("cases").select("id,title,side,created_at,debates(motion,settings)").eq("user_id", userId); + await evidence.json("case-rows", cases); + }); +} diff --git a/docs/operations.md b/docs/operations.md index 062c667d..309bd9b7 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -66,7 +66,7 @@ The landing page and the free tools also exist in Hungarian and Spanish, each at [`scripts/sitemap.mjs`](../scripts/sitemap.mjs) then writes `dist/sitemap.xml` from every page in `dist/` that names itself as canonical and is not `noindex`. A page with `hreflang` links in its head is listed with the same alternates as `xhtml:link` entries. Each `` is the `dateModified` the page declares in its JSON-LD: the guide pages' `CONTENT_DATE` in [`scripts/generate_seo_content.py`](../scripts/generate_seo_content.py), the legal pages' "last updated" dates, the tool pages' `TOOL_PAGES_MODIFIED`, and the landing page's last source commit. A page without a date is listed without ``. -[`scripts/llms-full.mjs`](../scripts/llms-full.mjs) then writes `dist/llms-full.txt`: `llms.txt` followed by the visible text of `/`, `/about`, `/best-ai-for-debate` and `/press`, read from their built HTML. It is a build output, not a file in `public/`. +[`scripts/llms-full.mjs`](../scripts/llms-full.mjs) then writes `dist/llms-full.txt`: `llms.txt` followed by the visible text of `/`, `/about`, `/best-ai-for-debate`, `/press` and `/debate-case-example`, read from their built HTML. It is a build output, not a file in `public/`. [`scripts/check-site.mjs`](../scripts/check-site.mjs) runs next and fails the build when an internal link, a `#fragment`, a sitemap URL or an `llms.txt` URL does not resolve (it applies the `vercel.json` redirects and rewrites), when JSON-LD does not parse or carries HTML entities, when a FAQPage question is not visible on its page, when the home page's entity graph has an unresolved `@id`, a `WebSite` or `SoftwareApplication` not named for the product, or no `Organization.sameAs`, when a page's `publisher` or `about` names an `@id` the home page does not define, when an indexed page other than `/terms`, `/privacy`, and `/expocit/sources` lacks its question H2 (`#short-answer`) as the first H2 (a page whose H1 is already that question may instead put the answer in a `#short-answer` paragraph before the first H2), when a page's first heading is not its H1 or a heading skips a level (H1 to H3), when an image has no alt text, a button has no name or a form field has no label, when two indexed pages share a ``, or when a page's `hreflang` links do not resolve, leave out the page itself or `x-default`, disagree with `<html lang>`, or differ from the set on a page they name. diff --git a/public/ai-debate-case-generator/index.html b/public/ai-debate-case-generator/index.html index 8ff955db..ebb2852b 100644 --- a/public/ai-debate-case-generator/index.html +++ b/public/ai-debate-case-generator/index.html @@ -23,14 +23,14 @@ <meta property="og:image:height" content="630" /> <meta property="og:image:alt" content="DebateOwl wordmark with the owl, for AI debate prep and practice" /> <meta property="article:published_time" content="2026-07-05" /> - <meta property="article:modified_time" content="2026-11-02" /> + <meta property="article:modified_time" content="2026-11-03" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="AI Debate Generator: Cases, Rebuttals and Closings with Citations | DebateOwl" /> <meta name="twitter:description" content="DebateOwl's AI debate generator turns a motion into a case you can read out: an opening, arguments with evidence, If they say… replies and sources." /> <meta name="twitter:image" content="https://debateowl.com/hero-visual.jpg?v=2" /> <meta name="twitter:image:alt" content="DebateOwl wordmark with the owl, for AI debate prep and practice" /> <link rel="stylesheet" href="/seo-pages.css" /> - <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Article","headline":"AI debate generator for cases with citations","name":"AI Debate Generator: Cases, Rebuttals and Closings with Citations | DebateOwl","url":"https://debateowl.com/ai-debate-case-generator","description":"DebateOwl's AI debate generator turns a motion into a case you can read out: an opening, arguments with evidence, If they say… replies and sources.","inLanguage":"en","dateModified":"2026-11-02","datePublished":"2026-07-05","author":{"@type":"Organization","@id":"https://debateowl.com/#organization","name":"DebateOwl","url":"https://debateowl.com/","logo":{"@type":"ImageObject","url":"https://debateowl.com/icon-512.png","width":512,"height":512}},"publisher":{"@type":"Organization","@id":"https://debateowl.com/#organization","name":"DebateOwl","url":"https://debateowl.com/","logo":{"@type":"ImageObject","url":"https://debateowl.com/icon-512.png","width":512,"height":512}},"about":{"@id":"https://debateowl.com/#software"}},{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can an AI debate case generator write a case I can actually use?","acceptedAnswer":{"@type":"Answer","text":"Yes, as a draft. DebateOwl's case generator turns a motion into a ready-to-read case: an opening, arguments with explanation, evidence and why it matters, \"If they say… we answer…\" replies, a closing line and the sources it used. You then verify it and rewrite it in your own words. Treat its citations as research leads: open every source and confirm the exact claim. The judgement calls, such as which argument to cut and where to answer the opposition early, stay with you."}},{"@type":"Question","name":"Does the case generator write a complete case?","acceptedAnswer":{"@type":"Answer","text":"It writes a complete draft: an opening, arguments with explanation, evidence and why each matters, \"If they say… we answer…\" replies, a closing line and the sources it cites. Treat it as a structure to cut, verify and rewrite in your own words."}},{"@type":"Question","name":"Are the generated citations reliable?","acceptedAnswer":{"@type":"Answer","text":"They are research leads. Every draft is researched on the web and lists the sources it cites, and an argument that still needs evidence is marked Needs Source. Open every source, confirm the exact claim and record the full citation before using it."}},{"@type":"Question","name":"Which debate formats does the generator support?","acceptedAnswer":{"@type":"Answer","text":"Set the Current Debate's format to British Parliamentary, Policy, Classroom or Custom, and Generate reads it along with the debate's Instructions. Generate's own speaker roles (introductor, R1, R2 and conclusor) follow the School 4-6-6-3 format. For WSDC, Public Forum and Lincoln-Douglas, use Custom and describe the structure in the Instructions."}},{"@type":"Question","name":"Can I change one part of a case without starting over?","acceptedAnswer":{"@type":"Answer","text":"Yes. Regenerate a single section and the rest of the case stays on screen unchanged."}},{"@type":"Question","name":"Can I export a generated case?","acceptedAnswer":{"@type":"Answer","text":"Yes. Cases export to PDF and DOCX, and cases created in a Current Debate are saved to it automatically."}},{"@type":"Question","name":"Is there a free AI debate case generator?","acceptedAnswer":{"@type":"Answer","text":"DebateOwl's case generator is included in the 3-day free trial, with no credit card, and then in Pro at $5/month + tax; there is no permanent free plan. Without an account you can use the free debate timer, motion generator, flow sheet and speech time calculator, but not the case generator."}},{"@type":"Question","name":"Can AI write a Public Forum case?","acceptedAnswer":{"@type":"Answer","text":"It can draft one. Set the Current Debate's format to Custom and describe the Public Forum structure in its Instructions, since Generate's own speaker roles follow School 4-6-6-3. A PF constructive is four minutes, which usually fits two arguments with evidence, so cut the draft to that and verify every source."}},{"@type":"Question","name":"Is using an AI case generator cheating?","acceptedAnswer":{"@type":"Answer","text":"Using it to draft and research before a round is preparation, but check your league's and your school's rules first: most leagues forbid electronic help during a round. Verify every source, rewrite the case in your own words and make sure you can defend each argument, because a case you cannot explain is easy to beat."}}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"DebateOwl","item":"https://debateowl.com/"},{"@type":"ListItem","position":2,"name":"AI debate generator for cases with citations","item":"https://debateowl.com/ai-debate-case-generator"}]},{"@type":"DefinedTerm","name":"AI debate case generator","description":"A tool that turns a motion into a draft debate case for one side and speaker role, with an opening, arguments backed by evidence, answers to what the other side will say and a source list, for a debater to verify and adapt.","url":"https://debateowl.com/ai-debate-case-generator#definition"}]}</script> + <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Article","headline":"AI debate generator for cases with citations","name":"AI Debate Generator: Cases, Rebuttals and Closings with Citations | DebateOwl","url":"https://debateowl.com/ai-debate-case-generator","description":"DebateOwl's AI debate generator turns a motion into a case you can read out: an opening, arguments with evidence, If they say… replies and sources.","inLanguage":"en","dateModified":"2026-11-03","datePublished":"2026-07-05","author":{"@type":"Organization","@id":"https://debateowl.com/#organization","name":"DebateOwl","url":"https://debateowl.com/","logo":{"@type":"ImageObject","url":"https://debateowl.com/icon-512.png","width":512,"height":512}},"publisher":{"@type":"Organization","@id":"https://debateowl.com/#organization","name":"DebateOwl","url":"https://debateowl.com/","logo":{"@type":"ImageObject","url":"https://debateowl.com/icon-512.png","width":512,"height":512}},"about":{"@id":"https://debateowl.com/#software"}},{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Can an AI debate case generator write a case I can actually use?","acceptedAnswer":{"@type":"Answer","text":"Yes, as a draft. DebateOwl's case generator turns a motion into a ready-to-read case: an opening, arguments with explanation, evidence and why it matters, \"If they say… we answer…\" replies, a closing line and the sources it used. You then verify it and rewrite it in your own words. Treat its citations as research leads: open every source and confirm the exact claim. The judgement calls, such as which argument to cut and where to answer the opposition early, stay with you."}},{"@type":"Question","name":"Does the case generator write a complete case?","acceptedAnswer":{"@type":"Answer","text":"It writes a complete draft: an opening, arguments with explanation, evidence and why each matters, \"If they say… we answer…\" replies, a closing line and the sources it cites. Treat it as a structure to cut, verify and rewrite in your own words."}},{"@type":"Question","name":"Are the generated citations reliable?","acceptedAnswer":{"@type":"Answer","text":"They are research leads. Every draft is researched on the web and lists the sources it cites, and an argument that still needs evidence is marked Needs Source. Open every source, confirm the exact claim and record the full citation before using it."}},{"@type":"Question","name":"Which debate formats does the generator support?","acceptedAnswer":{"@type":"Answer","text":"Set the Current Debate's format to British Parliamentary, Policy, Classroom or Custom, and Generate reads it along with the debate's Instructions. Generate's own speaker roles (introductor, R1, R2 and conclusor) follow the School 4-6-6-3 format. For WSDC, Public Forum and Lincoln-Douglas, use Custom and describe the structure in the Instructions."}},{"@type":"Question","name":"Can I change one part of a case without starting over?","acceptedAnswer":{"@type":"Answer","text":"Yes. Regenerate a single section and the rest of the case stays on screen unchanged."}},{"@type":"Question","name":"Can I export a generated case?","acceptedAnswer":{"@type":"Answer","text":"Yes. Cases export to PDF and DOCX, and cases created in a Current Debate are saved to it automatically."}},{"@type":"Question","name":"Is there a free AI debate case generator?","acceptedAnswer":{"@type":"Answer","text":"DebateOwl's case generator is included in the 3-day free trial, with no credit card, and then in Pro at $5/month + tax; there is no permanent free plan. Without an account you can use the free debate timer, motion generator, flow sheet and speech time calculator, but not the case generator."}},{"@type":"Question","name":"Can AI write a Public Forum case?","acceptedAnswer":{"@type":"Answer","text":"It can draft one. Set the Current Debate's format to Custom and describe the Public Forum structure in its Instructions, since Generate's own speaker roles follow School 4-6-6-3. A PF constructive is four minutes, which usually fits two arguments with evidence, so cut the draft to that and verify every source."}},{"@type":"Question","name":"Is using an AI case generator cheating?","acceptedAnswer":{"@type":"Answer","text":"Using it to draft and research before a round is preparation, but check your league's and your school's rules first: most leagues forbid electronic help during a round. Verify every source, rewrite the case in your own words and make sure you can defend each argument, because a case you cannot explain is easy to beat."}}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"DebateOwl","item":"https://debateowl.com/"},{"@type":"ListItem","position":2,"name":"AI debate generator for cases with citations","item":"https://debateowl.com/ai-debate-case-generator"}]},{"@type":"DefinedTerm","name":"AI debate case generator","description":"A tool that turns a motion into a draft debate case for one side and speaker role, with an opening, arguments backed by evidence, answers to what the other side will say and a source list, for a debater to verify and adapt.","url":"https://debateowl.com/ai-debate-case-generator#definition"}]}</script> </head> <body> <header class="wrap"> @@ -39,11 +39,11 @@ <main class="wrap"> <nav class="breadcrumb" aria-label="Breadcrumb"><a href="/">DebateOwl</a> / <span aria-current="page">AI debate generator for cases with citations</span></nav> <article> - <header class="hero"><span class="eyebrow">Tool guide</span><h1>AI debate generator for cases with citations</h1><p class="lead">DebateOwl's AI debate generator turns your motion into a case you can read out, with replies to the other side and sources to check.</p><p class="dates">Published <time datetime="2026-07-05">July 5, 2026</time> · Updated <time datetime="2026-11-02">November 2, 2026</time></p><p class="dates">By the <a href="/">DebateOwl team</a></p><div class="cta"><a class="btn primary" href="/app">Start practicing</a><a class="btn secondary" href="/">See DebateOwl</a></div></header> + <header class="hero"><span class="eyebrow">Tool guide</span><h1>AI debate generator for cases with citations</h1><p class="lead">DebateOwl's AI debate generator turns your motion into a case you can read out, with replies to the other side and sources to check.</p><p class="dates">Published <time datetime="2026-07-05">July 5, 2026</time> · Updated <time datetime="2026-11-03">November 3, 2026</time></p><p class="dates">By the <a href="/">DebateOwl team</a></p><div class="cta"><a class="btn primary" href="/app">Start practicing</a><a class="btn secondary" href="/">See DebateOwl</a></div></header> <section class="answer" aria-labelledby="short-answer"><h2 id="short-answer">Can an AI debate case generator write a case I can actually use?</h2><p>Yes, as a draft. DebateOwl's case generator turns a motion into a ready-to-read case: an opening, arguments with explanation, evidence and why it matters, "If they say… we answer…" replies, a closing line and the sources it used. You then verify it and rewrite it in your own words. Treat its citations as research leads: open every source and confirm the exact claim. The judgement calls, such as which argument to cut and where to answer the opposition early, stay with you.</p></section> <section class="article section" aria-label="Definition"><dl id="definition"><dt><strong>What is an AI debate case generator?</strong></dt><dd>A tool that turns a motion into a draft debate case for one side and speaker role, with an opening, arguments backed by evidence, answers to what the other side will say and a source list, for a debater to verify and adapt.</dd></dl></section> <section class="grid" aria-label="Highlights"><article class="card"><h3>A case you can read out</h3><p class="muted">Each draft has an opening, arguments with an explanation, evidence and why it matters, "If they say… we answer…" replies, a closing line and the sources it cites.</p></article><article class="card"><h3>Evidence leads</h3><p class="muted">Every draft is researched on the web, names the source and year in each piece of evidence and lists its sources at the end. Check each one against the original before it goes on a card.</p></article><article class="card"><h3>Roles and length</h3><p class="muted">Pick your side and speaker role, then set the case length, the audience level and the tone of the draft.</p></article></section> - <div class="article section"><h2>What the case generator produces</h2><p>Generate takes the motion from your Current Debate and returns a case you can read out, not a block of prose. Every draft has the same parts, in the order you would say them:</p><ul><li>Opening: a hook that makes the judge listen, then the line "Today we will show N arguments that prove…".</li><li>Arguments: each with a short title, the point in one sentence, an explanation of why it is true, evidence that names its source and year, and why it matters.</li><li>If they say…: the claims the other side is likely to make, each with our answer and, when there is one, the source behind it.</li><li>Closing line: one sentence that ties back to the opening.</li><li>Sources: every source the case cites, with the organisation, the year, the claim it supports and the link.</li></ul><p>Your speaker role shapes the speech. The introductor gets the opening and short headline arguments, plus one line on what a motion term means when it is genuinely unclear. R1 gets the full arguments. R2 brings no new arguments: it spends about two minutes backing up the team's arguments, then answers the other side with five or six "If they say…" blocks. The conclusor brings no new arguments: it gets two or three reasons why your side won and the closing line.</p><p>An AI debate generator is only as good as the motion you give it, so write the motion exactly as it will be announced. If you need a motion to practise on, the free <a href="/tools/debate-motion-generator">debate motion generator</a> draws one without an account; copy it into a Current Debate and Generate writes the case for your side.</p><p>Because the answers to the other side are part of the draft, you start preparing rebuttals at the same time as your own case. When one section is weak, regenerate just that section; the rest of the case stays where it is. Finished cases export to PDF or DOCX.</p><h2>Generated draft vs. finished case: what you still do</h2><div class="table"><table><caption>What the case generator gives you, and what you check before the round</caption><thead><tr><th scope="col">Section</th><th scope="col">The generator gives</th><th scope="col">You check</th></tr></thead><tbody><tr><td data-label="Section">Opening</td><td data-label="The generator gives">A hook and the line "Today we will show N arguments that prove…"</td><td data-label="You check">That the hook is true, the line answers the motion exactly as worded and you can say it without notes</td></tr><tr><td data-label="Section">Arguments</td><td data-label="The generator gives">A title, the point, an explanation, evidence and why it matters</td><td data-label="You check">Which ones meet what the other side will say; cut the rest to fit your speech time</td></tr><tr><td data-label="Section">If they say…</td><td data-label="The generator gives">The other side's likely claims, each with our answer</td><td data-label="You check">That each answer meets the claim as they would make it and is short enough to say in a rebuttal</td></tr><tr><td data-label="Section">Closing line</td><td data-label="The generator gives">One sentence that ties back to the opening</td><td data-label="You check">That it sums up the case in words you would actually say</td></tr><tr><td data-label="Section">Sources</td><td data-label="The generator gives">Every source the case cites, with arguments that still need evidence marked Needs Source</td><td data-label="You check">Open every original, confirm the exact claim and record the full citation</td></tr></tbody></table></div><h2>From motion to verified case in seven steps</h2><ol><li>Start a Current Debate with the exact motion wording. Small wording changes, such as should against would, change the <a href="/debate-motion-analysis">burden</a>.</li><li>Add the sources you already trust to the Library. Active sources are used when the case is generated, so the draft builds on your research instead of ignoring it.</li><li>Choose your side and speaker role: introductor, R1, R2 or conclusor. Under More options, set the length, the audience level and the tone. Length sets two, three or four arguments for the introductor and R1, and for R2 how many "If they say…" answers you get. If you need a particular angle, for example a principled argument or an economic one, put it in the Current Debate's Instructions.</li><li>Generate the case. Generate researches the motion on the web every time, lists the sources it found under the draft, and saves the relevant ones to the debate's Library.</li><li>Read the "If they say…" answers first and decide which of your arguments actually meets each claim. Cut arguments that do not clash with anything.</li><li>Regenerate any section that is vague, then verify every evidence lead against its original source.</li><li>Rewrite the final case in your own words and time a full reading of it before you call it ready.</li></ol><h2>Worked example: a generated case, and what the debater changed</h2><div class="card"><h3>Motion: This house would introduce a four-day school week</h3><p><strong>Side and role:</strong> Proposition, R1.</p><p><strong>Opening:</strong> A school that cannot pay more can still offer its teachers time. Today we will show two arguments that prove a four-day week helps students learn.</p><p><strong>Argument 1, keeping teachers:</strong> Point: a four-day week keeps experienced teachers. Explanation: schools competing for staff cannot always raise salaries, but they can offer time. Why it matters: experienced teachers are among the strongest in-school drivers of student learning.</p><p><strong>If they say:</strong> Working parents will pay for childcare on the fifth day, and students who are already behind lose teaching time.</p><p><strong>We answer:</strong> Schools can run an optional fifth-day programme for families who need it, and longer remaining days protect total teaching hours.</p><p><strong>Closing line:</strong> That is why a four-day week is the cheapest way to keep the teachers students learn most from.</p><p><strong>Evidence lead to verify:</strong> Research on districts that moved to four-day weeks, looking at attendance, teacher turnover and test results. Read the methodology: results differ between rural and urban districts.</p><p><strong>What the debater changed:</strong> Cut a weaker cost-saving argument the opposition would easily answer, and moved the teaching-hours answer into the first speech so it was on the table before the opposition raised it.</p></div><p>The draft gave the debater a full structure in minutes. The judgement calls, which argument to cut and where to answer the opposition early, were still theirs, and that is where the round was won.</p><h2>Checking citations before they reach a card</h2><p>Generated evidence is a starting point. Before any source goes into a speech:</p><ul><li>Open the original. If you cannot find it, do not use it.</li><li>Find the exact sentence that supports your claim, and check that the surrounding paragraph does not qualify it.</li><li>Check the date, the author and who published it. A think-tank brief and a peer-reviewed study carry different weight.</li><li>Make sure the evidence supports your point, not just your topic. A study showing four-day weeks save money does not prove they improve learning.</li><li>Record the full citation so you can produce it if an opponent or judge asks.</li></ul><p>Factoids is useful here: give it a single statement from your case and it researches that statement and suggests searches you can use to confirm it.</p><h2>Adapting a generated case to your format</h2><h3>World Schools (WSDC)</h3><p>A WSDC case is split between the first and second speakers, with a team line both can repeat. Use the opening's "we will show" line as the team line, give the first speaker the opening and the first argument, and keep the strongest argument for the second speaker so the case builds rather than front-loads. Leave the Current Debate's format on Custom and describe this split in its Instructions.</p><h3>British Parliamentary (BP)</h3><p>Set the Current Debate's format to <a href="/british-parliamentary-debate">British Parliamentary</a> and name your team position in its Instructions; Generate's own role options follow the School 4-6-6-3 speakers. Opening government needs a clear definition and mechanism, so describe them in the Instructions if the draft does not give them. Closing teams should treat the generated case as material the opening half will probably use, and look in the "If they say…" answers for an extension nobody else in the room is likely to run.</p><h3>Public Forum (PF)</h3><p>A PF constructive is four minutes, which usually means two arguments with evidence, not four. Since PF teams often find out their side shortly before the round, generate both sides of the resolution in the same debate and prepare the answers for each.</p><h3>Lincoln-Douglas (LD)</h3><p>Generate does not write a <a href="/lincoln-douglas-debate">value and criterion</a> for you, so put yours in the Current Debate's Instructions before you generate. Then check that each argument's why it matters links back to the criterion; if one does not, regenerate the arguments. Prepare a short defence of the criterion itself, because the negative will often attack it first.</p><h2>Mistakes to avoid with generated cases</h2><ul><li>Reading the draft in round. Judges hear the difference between a case you wrote and one you are reading for the first time.</li><li>Keeping every argument. Three well-defended points beat five thin ones.</li><li>Skipping the "If they say…" answers. They are the fastest route to your rebuttals.</li><li>Citing an evidence lead you never opened.</li></ul></div> + <div class="article section"><h2>What the case generator produces</h2><p>Generate takes the motion from your Current Debate and returns a case you can read out, not a block of prose. Every draft has the same parts, in the order you would say them. <a href="/debate-case-example">See a real example</a>: three unedited cases, each with its second speech.</p><ul><li>Opening: a hook that makes the judge listen, then the line "Today we will show N arguments that prove…".</li><li>Arguments: each with a short title, the point in one sentence, an explanation of why it is true, evidence that names its source and year, and why it matters.</li><li>If they say…: the claims the other side is likely to make, each with our answer and, when there is one, the source behind it.</li><li>Closing line: one sentence that ties back to the opening.</li><li>Sources: every source the case cites, with the organisation, the year, the claim it supports and the link.</li></ul><p>Your speaker role shapes the speech. The introductor gets the opening and short headline arguments, plus one line on what a motion term means when it is genuinely unclear. R1 gets the full arguments. R2 brings no new arguments: it spends about two minutes backing up the team's arguments, then answers the other side with five or six "If they say…" blocks. The conclusor brings no new arguments: it gets two or three reasons why your side won and the closing line.</p><p>An AI debate generator is only as good as the motion you give it, so write the motion exactly as it will be announced. If you need a motion to practise on, the free <a href="/tools/debate-motion-generator">debate motion generator</a> draws one without an account; copy it into a Current Debate and Generate writes the case for your side.</p><p>Because the answers to the other side are part of the draft, you start preparing rebuttals at the same time as your own case. When one section is weak, regenerate just that section; the rest of the case stays where it is. Finished cases export to PDF or DOCX.</p><h2>Generated draft vs. finished case: what you still do</h2><div class="table"><table><caption>What the case generator gives you, and what you check before the round</caption><thead><tr><th scope="col">Section</th><th scope="col">The generator gives</th><th scope="col">You check</th></tr></thead><tbody><tr><td data-label="Section">Opening</td><td data-label="The generator gives">A hook and the line "Today we will show N arguments that prove…"</td><td data-label="You check">That the hook is true, the line answers the motion exactly as worded and you can say it without notes</td></tr><tr><td data-label="Section">Arguments</td><td data-label="The generator gives">A title, the point, an explanation, evidence and why it matters</td><td data-label="You check">Which ones meet what the other side will say; cut the rest to fit your speech time</td></tr><tr><td data-label="Section">If they say…</td><td data-label="The generator gives">The other side's likely claims, each with our answer</td><td data-label="You check">That each answer meets the claim as they would make it and is short enough to say in a rebuttal</td></tr><tr><td data-label="Section">Closing line</td><td data-label="The generator gives">One sentence that ties back to the opening</td><td data-label="You check">That it sums up the case in words you would actually say</td></tr><tr><td data-label="Section">Sources</td><td data-label="The generator gives">Every source the case cites, with arguments that still need evidence marked Needs Source</td><td data-label="You check">Open every original, confirm the exact claim and record the full citation</td></tr></tbody></table></div><h2>From motion to verified case in seven steps</h2><ol><li>Start a Current Debate with the exact motion wording. Small wording changes, such as should against would, change the <a href="/debate-motion-analysis">burden</a>.</li><li>Add the sources you already trust to the Library. Active sources are used when the case is generated, so the draft builds on your research instead of ignoring it.</li><li>Choose your side and speaker role: introductor, R1, R2 or conclusor. Under More options, set the length, the audience level and the tone. Length sets two, three or four arguments for the introductor and R1, and for R2 how many "If they say…" answers you get. If you need a particular angle, for example a principled argument or an economic one, put it in the Current Debate's Instructions.</li><li>Generate the case. Generate researches the motion on the web every time, lists the sources it found under the draft, and saves the relevant ones to the debate's Library.</li><li>Read the "If they say…" answers first and decide which of your arguments actually meets each claim. Cut arguments that do not clash with anything.</li><li>Regenerate any section that is vague, then verify every evidence lead against its original source.</li><li>Rewrite the final case in your own words and time a full reading of it before you call it ready.</li></ol><h2>Worked example: a generated case, and what the debater changed</h2><div class="card"><h3>Motion: This house would introduce a four-day school week</h3><p><strong>Side and role:</strong> Proposition, R1.</p><p><strong>Opening:</strong> A school that cannot pay more can still offer its teachers time. Today we will show two arguments that prove a four-day week helps students learn.</p><p><strong>Argument 1, keeping teachers:</strong> Point: a four-day week keeps experienced teachers. Explanation: schools competing for staff cannot always raise salaries, but they can offer time. Why it matters: experienced teachers are among the strongest in-school drivers of student learning.</p><p><strong>If they say:</strong> Working parents will pay for childcare on the fifth day, and students who are already behind lose teaching time.</p><p><strong>We answer:</strong> Schools can run an optional fifth-day programme for families who need it, and longer remaining days protect total teaching hours.</p><p><strong>Closing line:</strong> That is why a four-day week is the cheapest way to keep the teachers students learn most from.</p><p><strong>Evidence lead to verify:</strong> Research on districts that moved to four-day weeks, looking at attendance, teacher turnover and test results. Read the methodology: results differ between rural and urban districts.</p><p><strong>What the debater changed:</strong> Cut a weaker cost-saving argument the opposition would easily answer, and moved the teaching-hours answer into the first speech so it was on the table before the opposition raised it.</p></div><p>The draft gave the debater a full structure in minutes. The judgement calls, which argument to cut and where to answer the opposition early, were still theirs, and that is where the round was won.</p><h2>Checking citations before they reach a card</h2><p>Generated evidence is a starting point. Before any source goes into a speech:</p><ul><li>Open the original. If you cannot find it, do not use it.</li><li>Find the exact sentence that supports your claim, and check that the surrounding paragraph does not qualify it.</li><li>Check the date, the author and who published it. A think-tank brief and a peer-reviewed study carry different weight.</li><li>Make sure the evidence supports your point, not just your topic. A study showing four-day weeks save money does not prove they improve learning.</li><li>Record the full citation so you can produce it if an opponent or judge asks.</li></ul><p>Factoids is useful here: give it a single statement from your case and it researches that statement and suggests searches you can use to confirm it.</p><h2>Adapting a generated case to your format</h2><h3>World Schools (WSDC)</h3><p>A WSDC case is split between the first and second speakers, with a team line both can repeat. Use the opening's "we will show" line as the team line, give the first speaker the opening and the first argument, and keep the strongest argument for the second speaker so the case builds rather than front-loads. Leave the Current Debate's format on Custom and describe this split in its Instructions.</p><h3>British Parliamentary (BP)</h3><p>Set the Current Debate's format to <a href="/british-parliamentary-debate">British Parliamentary</a> and name your team position in its Instructions; Generate's own role options follow the School 4-6-6-3 speakers. Opening government needs a clear definition and mechanism, so describe them in the Instructions if the draft does not give them. Closing teams should treat the generated case as material the opening half will probably use, and look in the "If they say…" answers for an extension nobody else in the room is likely to run.</p><h3>Public Forum (PF)</h3><p>A PF constructive is four minutes, which usually means two arguments with evidence, not four. Since PF teams often find out their side shortly before the round, generate both sides of the resolution in the same debate and prepare the answers for each.</p><h3>Lincoln-Douglas (LD)</h3><p>Generate does not write a <a href="/lincoln-douglas-debate">value and criterion</a> for you, so put yours in the Current Debate's Instructions before you generate. Then check that each argument's why it matters links back to the criterion; if one does not, regenerate the arguments. Prepare a short defence of the criterion itself, because the negative will often attack it first.</p><h2>Mistakes to avoid with generated cases</h2><ul><li>Reading the draft in round. Judges hear the difference between a case you wrote and one you are reading for the first time.</li><li>Keeping every argument. Three well-defended points beat five thin ones.</li><li>Skipping the "If they say…" answers. They are the fastest route to your rebuttals.</li><li>Citing an evidence lead you never opened.</li></ul></div> <section class="section faq article" aria-labelledby="faq"><h2 id="faq">Frequently asked questions</h2><details><summary>Does the case generator write a complete case?</summary><p>It writes a complete draft: an opening, arguments with explanation, evidence and why each matters, "If they say… we answer…" replies, a closing line and the sources it cites. Treat it as a structure to cut, verify and rewrite in your own words.</p></details><details><summary>Are the generated citations reliable?</summary><p>They are research leads. Every draft is researched on the web and lists the sources it cites, and an argument that still needs evidence is marked Needs Source. Open every source, confirm the exact claim and record the full citation before using it.</p></details><details><summary>Which debate formats does the generator support?</summary><p>Set the Current Debate's format to British Parliamentary, Policy, Classroom or Custom, and Generate reads it along with the debate's Instructions. Generate's own speaker roles (introductor, R1, R2 and conclusor) follow the School 4-6-6-3 format. For WSDC, Public Forum and Lincoln-Douglas, use Custom and describe the structure in the Instructions.</p></details><details><summary>Can I change one part of a case without starting over?</summary><p>Yes. Regenerate a single section and the rest of the case stays on screen unchanged.</p></details><details><summary>Can I export a generated case?</summary><p>Yes. Cases export to PDF and DOCX, and cases created in a Current Debate are saved to it automatically.</p></details><details><summary>Is there a free AI debate case generator?</summary><p>DebateOwl's case generator is included in the 3-day free trial, with no credit card, and then in Pro at $5/month + tax; there is no permanent free plan. Without an account you can use the free debate timer, motion generator, flow sheet and speech time calculator, but not the case generator.</p></details><details><summary>Can AI write a Public Forum case?</summary><p>It can draft one. Set the Current Debate's format to Custom and describe the Public Forum structure in its Instructions, since Generate's own speaker roles follow School 4-6-6-3. A PF constructive is four minutes, which usually fits two arguments with evidence, so cut the draft to that and verify every source.</p></details><details><summary>Is using an AI case generator cheating?</summary><p>Using it to draft and research before a round is preparation, but check your league's and your school's rules first: most leagues forbid electronic help during a round. Verify every source, rewrite the case in your own words and make sure you can defend each argument, because a case you cannot explain is easy to beat.</p></details></section> </article> <aside class="section article" aria-labelledby="about"><h2 id="about">About DebateOwl</h2><p><a href="/">DebateOwl</a> is an AI debate prep and practice app. See <a href="/">how it works</a> or <a href="/debateowl-pricing">pricing</a>.</p></aside> diff --git a/public/debate-case-example/index.html b/public/debate-case-example/index.html new file mode 100644 index 00000000..4a9ab1b0 --- /dev/null +++ b/public/debate-case-example/index.html @@ -0,0 +1,53 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>AI Debate Case Example: Real DebateOwl Output | DebateOwl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+

What does an AI-written debate case look like?

Below are three real DebateOwl cases generated on 3 November 2026 with Claude Sonnet 5.5: British Parliamentary and Policy in English, Classroom in Hungarian. Each first speech has an opening, three arguments with evidence and why they matter, “If they say… we answer…” replies and a closing line. The second speech (R2) backs them up and answers theirs.

Generated 3 November 2026 with Claude Sonnet 5.5; not edited except formatting, two replaced source links and one marked correction, all listed below. Evidence leads link to their sources; check every source before you use it in a round.

By the DebateOwl team · Published

+

How these cases were made

  • Each case was made with DebateOwl's Generate tool, the way a student uses it: start a debate with the motion and a format setting, generate the first speech (R1), then generate the second speech (R2) in the same debate, so the R2 can see and back up the R1.
  • Model: Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5), the default model for Pro accounts. Length Standard, audience Intermediate and tone Formal, which are the form's defaults; reasoning effort low.
  • Web research ran live for every speech. A case can only link a page that its own research returned; DebateOwl removes any other link before the case is shown.
  • The runs used a local copy of DebateOwl rather than debateowl.com, so no student account or data was involved. One step differs from the live app: the short step that writes the web search queries also ran on Claude Sonnet 5.5 here, where the app uses Claude Haiku 5.5.
  • One attempt failed: the first Hungarian R2 stopped with an error, so the Hungarian sample was generated again from the start. No other output was rerun or picked over another.

For cases, DebateOwl currently supports the British Parliamentary, Policy and Classroom format settings. Whatever the setting, it writes each speech for a four-speaker team in the 4-6-6-3 structure: Introductor (4 minutes), R1 (6 minutes), R2 (6 minutes) and Conclusor (3 minutes). The samples show R1 and R2.

Every case is copied from the raw output, apart from the corrections listed below. The raw output is published with the request, the model that served each call and the database rows in DebateOwl's GitHub repository.

Corrections after generation

Every source was opened in a browser on 3 November 2026. Two did not load, so each was replaced with a copy that does and that supports the same claim. One fact in the generated text is wrong; the wording stays as the model wrote it, with the correction marked inline in square brackets.

  • Sample 1 (British Parliamentary), first speech: the Levin (2025) study of whether 16-year-olds are mature enough to vote linked to the journal's page at tandfonline.com, which stays behind a Cloudflare check. It now links the author's open preprint of the same paper on APSA Preprints. Its source line also named the wrong journal (the study appeared in the Journal of Elections, Public Opinion and Parties), so the line now names APSA Preprints.
  • Sample 2 (Policy), first and second speech: the Senate Commerce Committee's February 2026 report on California high-speed rail linked to commerce.senate.gov, which answers Access Denied. It now links the Internet Archive's copy of the same report. The case's wording did not change.
  • Sample 1 (British Parliamentary), first speech, first “If they say…” answer: the model wrote that 16-year-olds have voted “since 1984 in Nicaragua and Brazil”. Nicaragua is right, but Brazil has allowed 16-year-olds to vote since 1988: the cited paper (Levin, 2025) and Brazil's 1988 constitution both give 1988. The wording stays as generated, with the correction marked inline.
+

Sample 1: British Parliamentary, in English

Motion
This House would lower the voting age to 16
Side
For the motion
Format setting
British Parliamentary (speeches R1 and R2 of the 4-6-6-3 structure)
Language
English
Generated
3 November 2026: R1 at 17:17 UTC, R2 at 17:17 UTC
Model
Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5)

First speech (R1)

Opening

At 16 you can work, pay tax and serve in the armed forces, yet you cannot vote on the laws that govern all three. Today we say that gap has no justification.

What we will show: Today we will show three arguments that prove lowering the voting age to 16 is fair, builds lasting voting habits, and strengthens democracy.

Arguments

  1. Argument 1: Rights follow responsibilities

    Point: Sixteen-year-olds already carry adult duties, so they should have a say in the rules that bind them.

    Explanation: At 16 in the UK, young people can work full time, pay income tax and national insurance, and join the armed forces. Each of these makes them subject to decisions made by government. If the state asks for adult contributions, it owes them a voice. Withholding the vote means they are taxed and governed with no say.

    Evidence: The House of Lords Library said in 2025 that Sir Keir Starmer argued during the 2024 campaign that if you can work, pay tax and serve in your armed forces, you should be able to vote. In Scotland and Wales, 16- and 17-year-olds already vote in devolved and local elections.

    Why it matters: Young workers and taxpayers are governed by laws they cannot influence. Giving them a vote ends that unfairness.

  2. Argument 2: Voting habits start earlier

    Point: Voting at 16 builds a lifelong habit of turning out, because first votes are easier at home and in school.

    Explanation: At 18, many people leave home or move to university. They move often, struggle to register, and do not know where to vote. At 16, young people live with family and are in education, so they get support through their first vote. People who vote early are more likely to keep voting, so a better first experience carries into adult life.

    Evidence: The Electoral Reform Society said in 2026 that in Austria, Scotland and Germany, those enfranchised at 16 or 17 were more likely to vote into their twenties than those who first voted at 18. It also noted registration for 18- and 19-year-olds is just 60%, against 96% for those aged 65 and over.

    Why it matters: Habits formed in a supported setting make democracy healthier for decades, not just at the next election.

  3. Argument 3: Closing the youth turnout gap

    Point: Lowering the voting age tackles a widening gap in turnout between young and older voters.

    Explanation: Young people are being left behind in politics. When they vote less, politicians have less reason to listen to them. Bringing 16- and 17-year-olds in early, while schools can teach them about politics, gives them a way into the system before the habit of staying out sets in.

    Evidence: The Electoral Reform Society said in 2026 that in the 2024 UK general election, 65.4% of 18- to 24-year-olds reported voting, against 88.6% of those aged 66 and over. It also said the gap has widened since the 1990s.

    Why it matters: A democracy where young people stay silent produces policy that ignores them. Votes at 16 makes government answer to the next generation.

If they say…

  1. They say: Sixteen-year-olds are not mature enough to vote.

    We answer: Maturity is not tested for any other voter, and there is no reason to start with 16-year-olds. Research from the University of California, Irvine, published in 2025, looked at the Voto Joven in Latin America, where 16-year-olds have voted since 1984 in Nicaragua and Brazil [correction: Brazil since 1988], and asked directly whether they are mature enough. The question is answered by evidence from real countries, not assumption.

    Source: Levin, APSA Preprints, 2025

  2. They say: Young people are not interested in politics, so they will not vote.

    We answer: That is exactly why we start earlier. The Electoral Reform Society said in 2026 that those enfranchised at 16 or 17 in Austria, Scotland and Germany turned out more into their twenties. Interest is built through voting, not before it.

    Source: Electoral Reform Society, 2026

  3. They say: Young people will just copy their parents' views or be easily influenced.

    We answer: Adults are influenced by family, media and friends too, and we do not remove their vote for it. The question is whether 16-year-olds are capable of forming their own view, and countries that already allow it show they do. Political education in school, as I Have A Voice told Parliament, helps long-term turnout when it is consistent and high quality.

    Source: I Have A Voice, written evidence to UK Parliament

  4. They say: Lowering the voting age will mainly help one political party.

    We answer: The evidence does not support that. The Joseph Rowntree Reform Trust briefing by Dr Christine Huebner and Dr Jan Eichhorn, published in January 2025, includes a section titled a limited impact on electoral outcomes. Rights should not depend on guessing which party benefits.

    Source: Huebner and Eichhorn, JRRT UK Democracy Fund, 2025

  5. They say: If you can vote at 16, you should be able to drink, smoke and drive too.

    We answer: Voting is different from those activities. Drinking and smoking harm the person doing them. Voting is a say in the rules that already apply to you. And 16-year-olds already work, pay tax and can serve in the armed forces, so the link to voting is far closer than to alcohol.

    Source: House of Lords Library, 2025

Closing line

That is why it is clear that 16-year-olds already carry adult duties, and giving them the vote is fair and good for democracy.

Sources

  1. House of Lords Library, 2025: Starmer argued that working, paying tax and serving in the armed forces should come with the vote; 16- and 17-year-olds already vote in Scotland and Wales
  2. Electoral Reform Society, 2026: Early voters in Austria, Scotland and Germany voted more into their twenties; registration and youth turnout gaps
  3. Huebner and Eichhorn, JRRT UK Democracy Fund, 2025: Votes at 16 has a limited impact on electoral outcomes
  4. Levin, APSA Preprints, 2025: Study of political maturity of 16-year-olds in Latin America (link replaced)
  5. I Have A Voice, UK Parliament written evidence, 2025: Voting at 16 increases long-term turnout when paired with citizenship education

Second speech (R2)

No new arguments: about two minutes backing up the R1's arguments, then 12 “If they say… we answer…” blocks the speaker picks from.

Show the full R2 (12 answers)

Opening

If sixteen-year-olds were really too young to have a say, why do we already ask them to work, pay tax and plan their futures, and then tell them to wait two more years before they get a vote?

What we will show: I'm the R2 of my team, and I'm here to show that lowering the voting age to 16 builds lasting voting habits, closes the gap between young and old voters, and that nothing the other side has said changes that.

Backing up our case

  1. Our first argument: voting habits start earlier

    The Electoral Reform Society said in 2026 that in Austria, Scotland and Germany, people who were enfranchised at 16 or 17 were more likely to turn out into their twenties than those who first voted at 18. The reason is practical. At 16, young people are at home and in school, so they get help with their first vote. At 18, many have moved away or gone to university, and registration for 18- and 19-year-olds is just 60%, compared with 96% for those aged 65 and over. The LSE Electoral Psychology Observatory told Parliament in 2026 that lowering the age can sharply improve participation over a lifetime. If the first vote is hard, many never take a second step. Votes at 16 make that first experience easy.

  2. Our second argument: closing the youth turnout gap

    Turnout in the 2024 general election was 59.9%, close to the record low of 59.4% in 2001, the Electoral Reform Society said in 2026. Within that, 65.4% of 18- to 24-year-olds voted, compared with 88.6% of those aged 66 and over. The society also found that turnout is lower in constituencies with more young people. That means politicians have less reason to listen to the young, because the young do not turn up. Bringing in 16- and 17-year-olds, while schools can teach them about politics, gives them a way in before the habit of staying out sets. If the system worked for the young, this gap would not exist, and it keeps getting wider.

If they say…

  1. They say: Sixteen-year-olds are not mature or informed enough to vote.

    We answer: That claim treats 16-year-olds as a problem, but countries that already do this say the opposite. Austria lowered its voting age to 16 in 2007 because, in the government's own words, 16-year-olds already have criminal responsibility and are making key decisions about education and work (EACEA YouthWiki, 2025). We do not test the maturity of any adult voter, so why start with teenagers? And knowledge is not fixed. The Institute for Government said in 2025 that votes at 16 must come with better civic education, which means the answer to a knowledge gap is teaching, not exclusion. I Have A Voice told Parliament that votes at 16 raise long-term turnout when citizenship education is consistent and good. Voting is also something you learn by doing. This is our first argument: a first vote at 16, at home and in school, is the best place to build the habit.

    Source: EACEA YouthWiki, 2025

  2. They say: Lowering the voting age is a party political move to help Labour win elections.

    We answer: That is a claim about motives, and it does not tell us whether the reform is right. The evidence also does not back it. The Joseph Rowntree Reform Trust briefing by Dr Christine Huebner and Dr Jan Eichhorn, from January 2025, has a section titled a limited impact on electoral outcomes. And support is not limited to one party. The House of Lords Library noted in 2025 that the Liberal Democrats, the Greens, the SNP and Plaid Cymru all backed votes at 16 in their manifestos. If this were a Labour trick, why do four other parties want it too? Rights should not depend on guessing who benefits. They depend on whether 16-year-olds are affected by the laws. They are, and that is why our second argument matters: a democracy that hears the young needs them in it.

    Source: Joseph Rowntree Reform Trust, 2025

  3. They say: Young people do not want the vote, and many teenagers themselves are against it.

    We answer: Opposition says teenagers are not interested, but that is exactly the problem we are fixing. The Electoral Reform Society said in 2026 that turnout among 18- to 24-year-olds in 2024 was 65.4%, against 88.6% for those aged 66 and over. Young people are not being heard, and that gap has been growing since the 1990s. Interest does not appear before the vote, it grows with it. The same briefing says that people enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to vote into their twenties than those who first voted at 18. If teenagers did not care, why would they turn out more later? Also, a survey of opinion is not a reason to deny a right. This is our first argument: the habit is built by voting, not by waiting until someone is already keen.

    Source: Electoral Reform Society, 2026

  4. They say: Teenagers will just copy their parents or be swayed by teachers and social media.

    We answer: Being influenced is not a reason to lose the vote. Every adult is shaped by family, friends and media, and nobody takes their ballot away for it. Look at what the Electoral Reform Society said in 2026: people enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to turn out into their twenties than people who first voted at 18. Pupils who were only repeating their parents would not build a habit like that. The Joseph Rowntree Reform Trust briefing by Dr Huebner and Dr Eichhorn (2025) also has a section on a limited impact on electoral outcomes. If 16-year-olds were simply copies of their parents, why would the results look so ordinary? Home is also where a first vote is best supported. This is exactly our first argument: voting at 16, with family and school around you, builds a lasting habit.

    Source: Electoral Reform Society, 2026

  5. They say: Schools do not teach enough political education, so 16-year-olds are not ready.

    We answer: That is an argument for better teaching, not for keeping the vote at 18. I Have A Voice told Parliament that voting from 16 increases long-term turnout when young people get consistent, high-quality citizenship education. The Institute for Government said in July 2025 that the voting age change should come with improved education. Both say the same thing: lower the age and build the teaching around it. Nobody tests adults on political knowledge before they vote. Why should 16-year-olds face a test that no other voter faces? At 16, young people are still in school, so that is the best moment to teach them how voting works and then let them use it. The Electoral Reform Society (2026) notes they are better supported at home and in education. This is our first argument: an early first vote, backed by school, creates the habit.

    Source: I Have A Voice, written evidence to Parliament, and Institute for Government, 2025

  6. They say: Results in Scotland and Wales have been mixed, so the reform has not worked.

    We answer: Mixed headlines do not cancel the evidence on what matters most: habits and turnout over time. The Electoral Reform Society said in 2026 that people enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to turn out into their twenties than those who first voted at 18. Austria lowered its voting age to 16 in 2007, and the European Commission's YouthWiki (updated 2025) reports that the reform was meant to encourage youth participation. I Have A Voice told Parliament that the gains in the devolved nations show up when citizenship education is consistent and high quality. So the lesson is to do it properly, not to scrap it. If the reform had failed, why would these voters keep turning out into their twenties? This is our second argument: closing the youth turnout gap. In 2024, 65.4% of 18- to 24-year-olds voted against 88.6% of those aged 66 and over (British Electoral Study, cited by the Electoral Reform Society, 2026).

    Source: Electoral Reform Society, 2026

  7. They say: If you can vote at 16, you should also be able to drink, smoke and drive.

    We answer: That comparison fails, because voting is not like those activities. Drinking and smoking harm the person doing them. A vote harms nobody. It is a say in rules that already apply to you. The House of Lords Library recorded in 2025 that Keir Starmer put it this way: if you can work, pay tax and serve in the armed forces, you ought to be able to vote. Austria used the same reasoning in 2007, pointing to 16-year-olds' criminal responsibility and extended legal capacity (YouthWiki, 2025). So the link to voting is about being bound by the law, not about risk. If the other side wants a consistent age for everything, why does a 16-year-old already carry the legal duties of an adult but have no say in the laws behind them? This is exactly our first argument: a vote at 16 is easier to cast at home and at school, and it starts a habit that lasts.

    Source: House of Commons Library, 2025

  8. They say: Sixteen-year-olds are still children, and the law protects them from adult responsibilities.

    We answer: The law does not treat 16-year-olds as children in the ways that matter here. The House of Lords Library noted in 2025 that the case for votes at 16 rests on adult duties like working, paying tax and serving in the armed forces. Austria's youth portal explains that its 2007 reform reflected the fact that 16-year-olds already have criminal responsibility and extended legal capacity (YouthWiki, 2025). The law holds them accountable like adults, so it cannot also say they are too young to have a voice. Protection is a reason to give them education and support, and votes at 16 do that. The Electoral Reform Society said in 2026 that younger voters are better supported through a first vote while they are at home and in education. If the aim is protection, why send them into their first vote at 18, alone, after leaving home? That is our first argument.

    Source: House of Lords Library, 2025

  9. They say: Early voters do not keep the habit, so any benefit for later turnout is overstated.

    We answer: The evidence points the other way. The Electoral Reform Society said in 2026 that in Austria, Scotland and Germany, people enfranchised at 16 or 17 were more likely to turn out into their twenties than those who first voted at 18. It also said enfranchised 16- and 17-year-olds tend to turn out in greater numbers than those first voting at 18 or over. The Electoral Psychology Observatory at LSE told Parliament in 2026 that lowering the voting age can sharply improve electoral participation over a lifetime. The reason is practical. Registration for 18- and 19-year-olds is just 60%, against 96% for those aged 65 and over (Electoral Reform Society, 2026), because many have left home and moved. If the habit does not stick, why do these countries show higher turnout in the twenties? This is our first argument, and it also feeds our second: a habit formed early narrows the youth turnout gap.

    Source: Electoral Reform Society, 2026

  10. They say: First-time voting at 18 is fine, because turnout among 18-year-olds is not the real problem.

    We answer: That ignores what happens at 18. Registration among 18- and 19-year-olds is just 60%, compared to 96% for those aged 65 and over (Electoral Reform Society, 2026). Many 18-year-olds have just left home or started university, so they move often and do not know how or where to vote. At 16, they are still at home and in school, and they get help with their first vote. The same briefing says those enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to turn out into their twenties than those who first voted at 18. So 18 is not fine. It is the age when the system loses people. If 18 works, why is the gap between 18- to 24-year-olds and over-66s so wide, at 65.4% against 88.6% in 2024? This is exactly our first argument: a first vote at home builds a habit that lasts.

    Source: Electoral Reform Society, 2026

  11. They say: Adding 16- and 17-year-olds will not close the gap and could even lower overall turnout.

    We answer: The evidence points the other way. Turnout in 2024 was 59.9%, and the gap between young and old voters has been growing since the 1990s (Electoral Reform Society, 2026). Doing nothing leaves that gap in place. The same briefing found that 16- and 17-year-olds who can vote tend to turn out in greater numbers than people voting for the first time at 18 or over. So the new voters pull the average up, not down. The LSE Electoral Psychology Observatory told the Commons Committee in 2026 that lowering the voting age can sharply improve participation over a lifetime. And the Joseph Rowntree Reform Trust briefing in 2025 has a section on challenging inequalities in political participation. If the reform were harmful, why would researchers who studied real cases support it? This is our second argument: bring young people in early, before staying out becomes a habit.

    Source: Electoral Reform Society, 2026

  12. They say: Politicians will not change policy for young voters, so a youth vote changes nothing.

    We answer: Politicians go where the votes are. The Electoral Reform Society found in 2026 that turnout is lower in constituencies with more young people. When a group votes less, parties have less reason to listen to it. Adding more than a million 16- and 17-year-olds to the electorate, as The Guardian reported in 2025, changes that calculation. The government's own bill has been described in Parliament as the biggest expansion of democratic participation in a generation (UK Parliament Committees, 2026). A group that is counted gets answered. If youth votes changed nothing, why do parties fight so hard over this reform? Both sides treat these votes as worth having. That is our second argument: when young people vote, government has to answer to them. And when they vote early, they keep voting, so that pressure lasts.

    Source: Electoral Reform Society, 2026

Closing line

That is why it is clear that lowering the voting age to 16 is fair, builds habits that last, and makes our democracy answer to the young. Thank you.

Sources

  1. EACEA YouthWiki, 2025: Austria lowered the voting age to 16 in 2007 because 16-year-olds already carry legal responsibility and make key decisions
  2. Institute for Government, 2025: Votes at 16 must come with improved civic education
  3. I Have A Voice, 2025: Voting from 16 raises long-term turnout when citizenship education is consistent and high quality
  4. Joseph Rowntree Reform Trust, 2025: Votes at 16 have a limited impact on electoral outcomes
  5. House of Lords Library, 2025: Several parties besides Labour supported votes at 16 in their manifestos
  6. Electoral Reform Society, 2026: Youth turnout gap, registration rates, and higher turnout among those enfranchised at 16 or 17
  7. Electoral Psychology Observatory, LSE, 2026: Lowering the voting age can sharply improve participation over a lifetime
  8. The Guardian, 2025: More than a million 16- and 17-year-olds would be included in democracy
  9. UK Parliament Committees, Modernising Elections, 2026: Government describes the bill as the biggest expansion of democratic participation in a generation

Raw output: bp-en.json

Sample 2: Policy, in English

Motion
Resolved: The United States federal government should substantially increase its investment in high-speed rail
Side
Against the motion
Format setting
Policy (speeches R1 and R2 of the 4-6-6-3 structure)
Language
English
Generated
3 November 2026: R1 at 17:18 UTC, R2 at 17:19 UTC
Model
Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5)

First speech (R1)

Opening

California has spent years building a bullet train and has no passenger service to show for it. Before Washington pours in billions more, we should ask what the last billions bought.

What we will show: Today we will show 3 arguments that prove the federal government should not substantially increase its investment in high-speed rail: it wastes money, it rests on weak demand, and it takes funding from rail that works.

Arguments

  1. Argument 1: Megaprojects Burn Federal Money

    Point: High-speed rail projects in the United States repeatedly fail to deliver on time and on budget, so more federal money would be wasted.

    Explanation: Federal grants are paid out over many years against promised schedules and budgets. When a project misses deadlines and its costs rise, taxpayers keep paying while the finished service never arrives. California is the largest test case. If the biggest federal bet has not delivered, adding more funding to the same model repeats the failure at a larger scale.

    Evidence: The Federal Railroad Administration's 2025 compliance review of California's project found 9 key findings, including missed deadlines, budget shortfalls and overstated ridership. In July 2025 the FRA ended roughly $4 billion in federal grants for the project (FRA, 2025; Bond Buyer, 2025).

    Why it matters: Every dollar sunk into a stalled megaproject is a dollar not spent on roads, bridges or safety. Taxpayers carry that loss.

  2. Argument 2: Demand Cannot Carry the Debt

    Point: American high-speed rail does not earn enough from passengers to pay its own way, so taxpayers are left to cover the gap.

    Explanation: A rail line has to pay for construction and then for daily operations. If ridership is lower than promised, revenue falls short on both. The lender is then paid from public money or the project defaults. That puts the risk on the public. Private investors have not been willing to absorb it alone.

    Evidence: Grist reported in September 2026 that Brightline filed for Chapter 11 bankruptcy while carrying $4.4 billion in debt, and that it is seeking more public financing for Brightline West. A Senate Commerce Committee report in February 2026 said California's own authority admits its first segment will not be profitable when it opens.

    Why it matters: If the best-known operators cannot cover their costs, the public will be asked to pay again and again.

  3. Argument 3: Better Uses for Rail Dollars

    Point: Federal rail money does more good on safety and repair of existing rail than on new high-speed lines.

    Explanation: Federal rail funding is limited and already stretched across Amtrak and its backlog of repairs. Spending heavily on new high-speed lines pulls money away from projects that serve passengers now. Fixing existing track and crossings gives results sooner and at lower risk than a new line that may take decades.

    Evidence: The Congressional Research Service said in March 2026 that Amtrak's expenses have exceeded its revenues every year, so it depends on Congress. The Department of Transportation said in September 2025 that grade crossings see more than 2,000 incidents and 200 deaths each year, and it redirected about $2.4 billion from California's project to a rail safety program.

    Why it matters: Real people die at crossings today. Money should go to what saves lives and keeps trains running now.

If they say…

  1. They say: Other countries like China, Japan and France built successful high-speed rail, so America can too.

    We answer: Other countries do not prove the United States should spend more. Our own record is the relevant test, and it is poor. California, our biggest project, had its roughly $4 billion federal grants ended in 2025 after the FRA found missed deadlines, budget shortfalls and overstated ridership (FRA, 2025). If the model works abroad, why has it not worked here? Our first argument shows why more money repeats the problem.

    Source: FRA, 2025

  2. They say: Brightline proves Americans want to ride high-speed trains.

    We answer: Wanting to ride is not the same as paying enough to cover costs. Brightline filed for Chapter 11 bankruptcy in 2026 with $4.4 billion in debt, and it is still seeking public financing for Brightline West (Grist, 2026). If demand were enough, why did it need bankruptcy protection? This is our second argument: crowds do not pay off construction debt.

    Source: Grist, 2026

  3. They say: High-speed rail is an investment that will pay back in economic growth and jobs.

    We answer: Promised returns are only as good as the project that delivers them. California's ridership was overstated, according to the FRA's 2025 review, so its projected benefits were overstated too. The California authority also admits its first segment will not be profitable when it opens (Senate Commerce Committee, 2026). Benefits that never arrive cannot repay taxpayers. That is our first and second arguments together.

    Source: FRA, 2025

  4. They say: Without federal investment, rail will stay underfunded and projects will keep failing.

    We answer: The problem is how money is managed, not just how much. The Infrastructure Investment and Jobs Act already provided $66 billion in advance rail appropriations (Eno Center for Transportation, 2026). Yet California still missed deadlines and could not show a credible plan to finish its first segment (Bond Buyer, 2025). If more money were the answer, why did billions not fix it? Bigger funding does not fix weak delivery.

    Source: Eno Center for Transportation, 2026

  5. They say: High-speed rail cuts emissions and congestion.

    We answer: Those benefits exist only when trains are built, running and full. California has no train operating after a quarter of a century (Senate Commerce Committee, 2026). Emissions saved by a line that does not run are zero. Meanwhile, safety work on existing rail has clear results now: grade crossings see more than 2,000 incidents and 200 deaths a year (US DOT, 2025). That is our third argument.

    Source: US Department of Transportation, 2025

  6. They say: The Trump administration is just hostile to rail, so these cuts are political.

    We answer: Our case does not rest on who is in office. It rests on what the FRA review found: missed deadlines, budget shortfalls and overstated ridership (FRA, 2025). The administration also put more than $5 billion into a national rail partnership program for safety on intercity passenger rail (US DOT, 2025). If the aim were to kill rail, why fund it? We want rail money spent where it works. That is our third argument.

    Source: US Department of Transportation, 2025

Closing line

That is why it is clear that the federal government should fix the rail it has, not pour billions more into high-speed projects that have not delivered.

Sources

  1. Federal Railroad Administration, US Department of Transportation, 2025: Compliance review found missed deadlines, budget shortfalls and overstated ridership; roughly $4 billion in grants
  2. Bond Buyer, 2025: $4 billion in California grants terminated; no credible funding plan for the first segment
  3. Grist, 2026: Brightline Chapter 11, $4.4 billion in debt, public financing sought for Brightline West
  4. US Senate Committee on Commerce, Science, and Transportation, 2026: California's first segment will not be profitable when it opens; no train operating (link replaced)
  5. Congressional Research Service, 2026: Amtrak's expenses exceed its revenues every year and it depends on Congress
  6. US Department of Transportation, 2025: Grade crossings: more than 2,000 incidents and 200 deaths a year; about $2.4 billion redirected to rail safety program
  7. Eno Center for Transportation, 2026: IIJA provided $66 billion in advance rail appropriations

Second speech (R2)

No new arguments: about two minutes backing up the R1's arguments, then 12 “If they say… we answer…” blocks the speaker picks from.

Show the full R2 (12 answers)

Opening

If high-speed rail were a safe place for federal money, the biggest project in the country would have a train running after twenty-five years. It does not.

What we will show: I'm the R2 of my team, and I'm here to show that the United States should not substantially increase its federal investment in high-speed rail, because the record shows waste and because the same money does more good on rail that already exists.

Backing up our case

  1. Our first argument: megaprojects burn federal money

    The California project is the clearest proof. In June 2025, the Federal Railroad Administration released a review of over 300 pages with 9 key findings, including missed deadlines, budget shortfalls and overstated ridership (US Department of Transportation, 2025). The two grants at stake were worth roughly $4 billion. In July 2025, the agency ended them, saying the project had no credible funding plan to finish its first segment (Bond Buyer, 2025). A Senate Commerce Committee report in 2026 adds that no train is running after a quarter of a century and $2.6 billion in federal funds. Taxpayers pay while the service never arrives. If this is how the biggest federal bet performs, more money would only repeat the loss.

  2. Our second argument: better uses for rail dollars

    Federal rail money is limited, and it has urgent jobs to do now. In September 2025, the Department of Transportation announced more than $5 billion for the National Railroad Partnership Program, aimed at safety on intercity passenger rail. That includes grade crossings, which see more than 2,000 incidents and 200 deaths every year (US Department of Transportation, 2025). Amtrak's expenses have also exceeded its revenues every year, so it depends on Congress to operate and to improve its infrastructure (Congressional Research Service, 2026). Fixing crossings and track gives results quickly. A new line takes decades. If we care about passengers and lives today, the money belongs on rail that already runs.

If they say…

  1. They say: High-speed rail is a long-term investment that pays back in jobs and economic growth.

    We answer: A payback only exists if the project is finished and the forecasts are true, and the American record fails both tests. The FRA review of California found overstated ridership (US Department of Transportation, 2025). Overstated ridership means overstated revenue, jobs and growth. The Senate Commerce Committee reported in 2026 that the California authority admits its first segment will not be profitable when it opens. A line that loses money after opening cannot repay taxpayers through growth. The House Oversight Committee opened an investigation in August 2025 into whether the authority knowingly misrepresented its ridership projections. If the returns were real, why did the forecasts need to be inflated? Jobs from a project that never delivers service are a cost, not a return. This is our first argument: money goes in, and the promised benefits never come out.

    Source: US Department of Transportation, 2025

  2. They say: The United States has fallen behind China, Japan and Europe, and federal investment is how it catches up.

    We answer: Being behind does not mean more federal spending will fix it. Our own record is the test. The FRA ended roughly $4 billion in California grants in July 2025 after finding the project could not meet its binding obligations (Bond Buyer, 2025). On the Northeast Corridor, a Senate Commerce Committee report in 2025 described NextGen Acela trainsets bought without a credible plan to upgrade the track. They run more slowly than the original Acela trains, after a four-year delay that cost taxpayers another $287 million (Senate Commerce Committee, 2026). So catching up by spending has already produced slower trains and higher bills. If copying others worked, why has it failed here twice? Our first argument explains the reason: American projects miss deadlines and budgets. Our second argument gives the answer: fix and secure what already carries passengers.

    Source: Senate Commerce Committee, 2026

  3. They say: Rail is underfunded because federal support is unpredictable, and more stable money would fix delivery problems.

    We answer: Stable money has already been tested, and delivery problems remained. The Infrastructure Investment and Jobs Act gave five years of advance appropriations, $66 billion in total, which Eno itself says brought medium-term certainty (Eno Center for Transportation, 2026). Even so, California missed deadlines, ran short of budget and had no credible plan to finish its first segment (US Department of Transportation, 2025). The Congressional Research Service also notes that Amtrak's expenses have exceeded its revenues every year, so more steady funding does not create a self-paying system (Congressional Research Service, 2026). If certainty were the cure, why did billions of certain dollars not fix California? The weakness is in how projects are managed, not only in how money is scheduled. That is our first argument. Better uses for the dollars we already have, such as crossing safety, is our second.

    Source: Eno Center for Transportation, 2026

  4. They say: Every dollar invested in public transportation returns about five dollars in long-term economic benefits.

    We answer: That figure comes from the transit lobby, and it describes public transportation in general, not high-speed rail. It says nothing about a megaproject that has not delivered a single trip. The group making the claim is the American Public Transportation Association, which is asking Congress for at least $21 billion for passenger rail (APTA, 2025). A return only exists when the service is built and running. California has no train operating after a quarter of a century and $2.6 billion in federal funds (Senate Commerce Committee, 2026). In 2025 the Federal Railroad Administration ended roughly $4 billion in grants because of missed deadlines, budget shortfalls and overstated ridership (US DOT, 2025). So where is the five dollars? You cannot earn a return on a line that does not run. This is our first argument: projects that miss their dates and budgets burn the money before any benefit arrives.

    Source: APTA, 2025

  5. They say: Electrified high-speed rail cuts emissions and eases congestion on highways and in the air.

    We answer: A cleaner train only cuts emissions when it exists, and in the United States the big one does not. California has no train operating after 25 years and $2.6 billion in federal funds (Senate Commerce Committee, 2026). The Bechtel white paper they rely on says electrified high-speed rail can cut emissions by up to 95%, but the same paper warns that the US must avoid ballooning costs, chronic delays and waning public support (Bechtel, 2025). That is a warning about our record, not a promise. Emissions saved by a line that is stalled are zero. Meanwhile, grade crossings on existing rail see more than 2,000 incidents and 200 deaths a year (US DOT, 2025). If the goal is real results, why pour money into a line that has not started? This is our second argument: limited rail dollars do more good on safety and repair of rail that already runs.

    Source: Bechtel, 2025

  6. They say: Brightline and the Acela show that Americans want faster trains and will ride them.

    We answer: Wanting a faster train does not mean the project works, and the Acela proves our side. The new NextGen Acela trainsets run more slowly than the original Acela trains, after a four-year delay that cost taxpayers an additional $287 million (Senate Commerce Committee, 2026). Those trains were bought without a credible plan to upgrade the aging track. So the money went to the train and not to the tracks that decide the speed. Even a pro-rail source, the Bechtel white paper, says the US must avoid ballooning costs and chronic delays (Bechtel, 2025). If demand alone were enough, why did the Acela cost more and run slower? Passengers can fill a seat on a project that still wastes federal money. This is our first argument: missed budgets and deadlines. It also supports our second: fix the existing Northeast Corridor track first, before funding new lines.

    Source: Senate Commerce Committee, 2026

  7. They say: Penn Station and the Northeast Corridor show that federal rail investment can deliver real results.

    We answer: Penn Station proves our point, not theirs. It is an existing station on an existing line. The Federal Railroad Administration study calls for an overhaul of the concourse, the track layout and how the station operates, so more trains can run through it (High Speed Rail Alliance, 2026). That is repair and modernization, not a new high-speed line. Meanwhile, the Senate Commerce Committee found that the NextGen Acela sets for the Northeast Corridor were bought without a credible plan to upgrade the track, they run more slowly than the old Acelas, and a four-year delay cost taxpayers an extra $287 million (Senate Commerce Committee, 2026). If the corridor is the success story, why did that happen? Money works where it fixes what already carries 600,000 people a weekday. It burns where it chases speed first. That is our first and second arguments.

    Source: High Speed Rail Alliance, 2026

  8. They say: Engineers' groups like ASCE back a national high-speed rail network.

    We answer: Read the ASCE statement in full. It says investment should be prioritized by passenger demand, travel time savings and economic factors, and be balanced between renewal and incremental improvements to existing passenger rail and the development of advanced high-speed systems (ASCE, 2025). That is a call for balance and for tests of demand, not for a blank check. Our case passes those tests. California has no train running after a quarter of a century and $2.6 billion in federal funds (Senate Commerce Committee, 2026). The Federal Railroad Administration found missed deadlines, budget shortfalls and overstated ridership there (US Department of Transportation, 2025). If demand is the standard, why would we pour more money into a project that overstated its demand? ASCE's own priority on renewal supports our second argument: fix existing rail first.

    Source: ASCE, 2025

  9. They say: The Infrastructure Investment and Jobs Act showed that steady federal money lets Amtrak and states build capacity.

    We answer: Steady money is not the same as more money, and the Act already gave rail a lot. It provided $66 billion in advance appropriations over five years (Eno Center for Transportation, 2026). Yet the California project, which received federal grants over those years, was found by the Federal Railroad Administration to have missed deadlines and run short on budget, and about $4 billion of its grants were terminated (Bond Buyer, 2025). If steady money fixed delivery, why did that happen? The Eno report itself says the benefit was predictability for planning, which is about how money is managed, not about adding billions for new high-speed lines. Congress can keep funding steady without a big increase. That is our first argument: waste comes from weak delivery. And our second argument: put the steady money into existing rail.

    Source: Eno Center for Transportation, 2026

  10. They say: California's failures come from poor management and politics, not from the idea of high-speed rail.

    We answer: That answer proves our point. The motion asks for more federal money, and federal money goes to the managers we actually have. The Federal Railroad Administration reviewed the California project in 2025 and found nine key findings, including missed deadlines, budget shortfalls and overstated ridership (US Department of Transportation, 2025). The Bond Buyer reported in 2025 that the FRA saw no credible funding plan to finish even the first segment. Bad management is the real risk of any large new line, so you cannot set it aside. If the idea is sound but the delivery keeps failing, why should taxpayers pay more before delivery is fixed? A judge should vote on what a bigger budget would really buy. It would buy more of the same record. This is our first argument: megaprojects miss deadlines and budgets, so more federal money would be wasted.

    Source: US Department of Transportation, 2025

  11. They say: Cancelling grants like California's is political hostility to rail, not a response to real problems.

    We answer: The grounds for the cancellation are on paper, and they are about performance. The FRA's July 2025 letter ended the agreements after a review that found missed deadlines, budget shortfalls and overstated ridership (US Department of Transportation, 2025). The Bond Buyer reported that the FRA said California could not meet the binding obligations it took on to receive the money (Bond Buyer, 2025). Our case also does not depend on who holds office. The same department announced over $5 billion for a National Railroad Partnership Program for safety on intercity passenger rail, partly funded by the money taken back from California (US Department of Transportation, 2025). If the goal were to kill rail, why keep the money in rail? The money moved from a stalled project to work that is under way. That links our first argument, wasted money, to our second, better uses for rail dollars.

    Source: US Department of Transportation, 2025

  12. They say: We can fund high-speed rail and also repair existing rail, so there is no real tradeoff.

    We answer: Federal rail money is limited, and the other side has not shown where extra money would come from. The Eno Center said in January 2026 that intercity rail has no dedicated federal revenue source and depends on annual discretionary appropriations. The Congressional Research Service said in 2026 that Amtrak's expenses have exceeded its revenues every year, so it depends on Congress. A budget that is always short makes every new line compete with repairs for the same dollars. Grade crossings alone see more than 2,000 incidents and 200 deaths a year (US Department of Transportation, 2025). If funding is so easy, why is the repair need still there? A new line also takes years before it carries anyone. This is our second argument: limited rail money does more good on safety and repair of existing rail now.

    Source: Eno Center for Transportation, 2026

Closing line

That is why it is clear that the federal government should not substantially increase its investment in high-speed rail: the record shows waste, and the money does more good on rail that works today. Thank you.

Sources

  1. US Department of Transportation, 2025: FRA review of California high-speed rail found missed deadlines, budget shortfalls and overstated ridership; $5 billion safety program with grade crossing figures
  2. US Department of Transportation, 2025: More than $5 billion for rail safety; grade crossings see over 2,000 incidents and 200 deaths a year
  3. Bond Buyer, 2025: FRA ended $4 billion in California grants; no credible funding plan for first segment
  4. Senate Commerce Committee, 2026: No train running in California after 25 years and $2.6 billion; first segment not profitable; NextGen Acela delay cost $287 million (link replaced)
  5. US House Committee on Oversight and Government Reform, 2025: Investigation into whether California misrepresented ridership projections
  6. Eno Center for Transportation, 2026: IIJA gave $66 billion in advance appropriations over five years
  7. Congressional Research Service, 2026: Amtrak's expenses have exceeded its revenues each year and depend on Congress
  8. APTA, 2025: Transit lobby asks for at least $21 billion for passenger rail and makes the $5 return claim
  9. Bechtel, 2025: Electrified HSR can cut emissions up to 95%, but the US must avoid ballooning costs and chronic delays
  10. High Speed Rail Alliance, 2026: Penn Station overhaul is a renovation of an existing station
  11. ASCE, 2025: Investment should follow demand and balance renewal of existing rail with new high-speed systems

Raw output: policy-en.json

Sample 3: Classroom, in Hungarian

Motion
Ez a Ház betiltaná a házi feladatot az általános iskolákban
Side
For the motion
Format setting
Classroom (speeches R1 and R2 of the 4-6-6-3 structure)
Language
Hungarian
Generated
3 November 2026: R1 at 17:21 UTC, R2 at 17:22 UTC
Model
Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5)

First speech (R1)

Opening

Képzeljenek el egy hatéves gyereket, aki nyolc órát tölt az iskolában, aztán hazamegy, és még leckét ír. Mikor játszik, mikor pihen, mikor van ideje a családjára?

What we will show: Ma három érvvel bizonyítjuk, hogy a házi feladatot be kell tiltani az általános iskolákban: a gyerekeknek pihenés kell, a lecke nem a legjobb gyakorlás, és a tilalom igazságosabb.

Arguments

  1. Argument 1: A gyereknek pihenés jár

    Point: Az iskola után a gyerek ideje a pihenésé, a játéké és a családé, nem az újabb feladatoké.

    Explanation: A gyerek már a tanórákon dolgozik, sokan reggel nyolctól délután négyig az iskolában vannak. Ha hazaérve még leckét is kell írniuk, nincs idejük mozogni, játszani vagy a szüleikkel lenni. A fáradt gyerek pedig másnap kevésbé figyel, vagyis a lecke saját magát ássa alá.

    Evidence: Az Oktatási és Gyermekügyi Minisztérium 2026-os javaslatcsomagja szerint a házi feladat korlátozásának célja a gyerekek délutáni és családi idejének védelme. Lengyelországban az oktatási miniszter 2024-ben azzal tiltotta be az általános iskolai leckét, hogy a gyerekeknek pihenniük kell.

    Why it matters: Itt kisgyerekekről van szó. Az ő délutánjuk nem az iskolai nap folytatása, hanem a saját idejük.

  2. Argument 2: A lecke nem jó gyakorlás

    Point: Az iskolai tanulást az iskolában, tanári segítséggel kell megoldani, mert otthon a házi feladat sokszor nem fejleszt.

    Explanation: Otthon nincs ott a tanár, aki észrevenné a hibát. A gyerek begyakorolhat egy rossz megoldást, vagy a szülő csinálja meg helyette. Ha a gyakorlás az iskolai időbe kerül, a tanár azonnal javít, és mindenki ugyanazt a segítséget kapja. A rövid, jól vezetett iskolai gyakorlás többet ér, mint a fáradt esti lecke.

    Evidence: A minisztérium javaslatcsomagja szerint az önállóan teljesíthető, valóban fejlesztő gyakorlást kell előtérbe helyezni. Ez azt jelzi, hogy maga az oktatási tárca sem tartja minden házi feladatot hasznosnak. Az ajánlás első osztályban és egész napos iskolában lehetőség szerint megszüntetné a kötelező írásbeli leckét.

    Why it matters: Ha a lecke nem fejleszt, csak fáraszt és feszültséget okoz, akkor nincs jó ok megtartani.

  3. Argument 3: A lecke egyenlőtlenséget szül

    Point: A házi feladat azokat a gyerekeket sújtja, akiknek otthon nincs segítség, nyugodt hely vagy idő.

    Explanation: Aki mellett este leül egy szülő, gyorsan elkészül és jobb jegyet kap. Aki mellett nincs senki, vagy a szülő későn ér haza, hátrányba kerül. Ez nem a gyerek tudásán múlik, hanem a családi helyzetén. Ha minden gyakorlás az iskolában történik, mindenkinek ugyanazok a feltételei vannak.

    Evidence: Egy hazai cikk szerint Magyarországon nincs egységes szabály, és az iskolák pedagógiai programja dönti el, mennyi leckét adhatnak (Eduline, 2024). Vagyis ugyanannyi idős gyerek az egyik iskolában alig kap leckét, a másikban sokat. Ez önmagában is igazságtalan.

    Needs source: magyar kutatás a szülői segítség és a házi feladat teljesítése közötti összefüggésről, hátrányos helyzetű tanulók

    Why it matters: Az iskola feladata, hogy mindenkinek egyenlő esélyt adjon, nem az, hogy a családi háttér döntsön.

If they say…

  1. They say: A házi feladat megtanít önállóan tanulni és felelősséget vállalni.

    We answer: Az önállóságot nem kell leckével tanítani, mert iskolai projektekkel, önálló munkával is lehet gyakorolni, tanári segítséggel. A minisztérium javaslatcsomagja is az önállóan teljesíthető, valóban fejlesztő gyakorlást helyezi előtérbe, nem a sok leckét (Oktatási és Gyermekügyi Minisztérium, 2026). Ha a hatéves gyerek leckéje a szülő munkája lesz, mit tanult a felelősségről?

    Source: Oktatási és Gyermekügyi Minisztérium, 2026

  2. They say: A magyar szülők többsége ragaszkodik a házi feladathoz.

    We answer: A szülői megszokás nem bizonyíték arra, hogy a lecke jó a gyereknek. Az Eduline 2024-es cikke szerint sok szülő azzal érvel, hogy neki is volt, mindig így volt. Ez hagyomány, nem érv. A Blikk szavazásából az is kiderült, hogy a válaszolók jóval több mint fele örült volna a lecke megszűnésének (Blikk, 2024). Kinek van igaza, ha maguk a szülők sem értenek egyet?

    Source: Eduline, 2024

  3. They say: A lengyel példa nem működik, a pedagógusok szerint a teljes tilalom rossz megoldás.

    We answer: A tilalmat éppen az oktatási miniszter vezette be, azzal, hogy a gyerekeknek pihenniük kell (nlc.hu, 2024). A magyar pedagógusok is inkább a lecke céljának tisztázását kérik, ami azt mutatja, hogy a mostani gyakorlat nem tiszta (Blikk, 2024). Az általános iskolában nem a lecke a megoldás erre. Ez tartozik a pihenésről szóló első érvünkhöz.

    Source: nlc.hu, 2024

  4. They say: Elég a korlátozás, nem kell tiltani.

    We answer: A korlátozás ajánlás, nem szabály. A minisztérium csomagja is csak javaslat az iskoláknak, amelyeket megvizsgálhatnak (444.hu, 2026). Az iskolák maguk döntik el, mennyit adnak, így az egyenlőtlenség marad. Miért ne lehetne mindenkinek ugyanaz a szabály? Ez a harmadik érvünk.

    Source: 444.hu, 2026

  5. They say: Lecke nélkül a gyerekek lemaradnak, nem lesz idő gyakorolni.

    We answer: Az iskolai napot lehet úgy szervezni, hogy a gyakorlás is beleférjen. A minisztérium a délutáni időt is átgondolná, hogy az ne a délelőtti tanórák folytatása legyen (Oktatási és Gyermekügyi Minisztérium, 2026). Ha egy gyerek fél nyolctól négyig bent van, miért ne fér bele ebbe a gyakorlás? Ez a második érvünk.

    Source: Oktatási és Gyermekügyi Minisztérium, 2026

Closing line

Ezért világos, hogy az általános iskolás gyereknek az iskola után pihenés jár, nem házi feladat, és ezért a Háznak be kell tiltania.

Sources

  1. Oktatási és Gyermekügyi Minisztérium (Legyen ÉLMÉNY a tanulás!), 2026: Az alsó tagozatos házi feladat észszerű korlátozása a délutáni és családi idő védelmére, és az önállóan teljesíthető gyakorlás előtérbe helyezése
  2. HVG, 2026: Első osztályban és egész napos iskolában lehetőség szerint nincs kötelező írásbeli lecke
  3. 444.hu, 2026: A minisztérium csomagja ajánlás, nem kötelező szabály
  4. nlc.hu, 2024: A lengyel oktatási miniszter betiltotta az általános iskolai házi feladatot, mert a gyerekeknek pihenniük kell
  5. Eduline, 2024: Magyarországon nincs egységes szabály a házi feladat mennyiségére, iskolánként eltér
  6. Blikk, 2024: A cikk szavazásában a válaszolók jóval több mint fele örülne a lecke megszűnésének, a pedagógusok a lecke célját tisztáznák

Second speech (R2)

No new arguments: about two minutes backing up the R1's arguments, then 12 “If they say… we answer…” blocks the speaker picks from.

Show the full R2 (12 answers)

Opening

Az iskolák azt mondják, hogy a gyerekekért dolgoznak. De ha ez igaz, miért van az, hogy a hatéves gyerek délutánja is az iskolai nap folytatása?

What we will show: Én vagyok a csapatunk R2-je, és azt fogom megmutatni, hogy a házi feladatot az általános iskolákban be kell tiltani, mert elveszi a gyerekektől a pihenést, és a családi háttér szerint osztja szét az esélyeket.

Backing up our case

  1. Első érvünk: a gyereknek pihenés jár

    Az első érvünk arról szólt, hogy az iskola utáni idő a pihenésé, a játéké és a családé. Ezt ma már az oktatási minisztérium is kimondja: 2026 augusztusában azt javasolta, hogy az iskolai kötelezettségek ne vegyenek el indokolatlanul sok időt a gyerekek délutánjából és a családdal töltött időből (Elhetomagyarorszag.hu, 2026). Első osztályban és az egész napos iskolákban lehetőség szerint nem lenne kötelező otthoni írásbeli feladat (HVG, 2026). A tárca hosszabb mozgásos szüneteket és nyugodtabb ebédidőt is javasol (Családinet, 2026). Ez azt jelenti, hogy a fáradt kisgyerek nem kap újabb munkát az iskolai nap után. Ha a mostani terhelés rendben lenne, a minisztérium nem akarná csökkenteni.

  2. Második érvünk: a lecke egyenlőtlenséget szül

    A második érvünk az egyenlőtlenségről szólt: a lecke azokat sújtja, akiknek otthon nincs segítség, nyugodt hely vagy idő. Magyarországon nincs egységes szabályozás, ezért intézményenként teljesen eltérhet, milyen előírások vonatkoznak a házi feladatra (Eduline, 2024). Az adott iskola pedagógiai programja dönti el, mikor és mennyit adhatnak fel a tanárok (Eduline, 2024). Vagyis két gyerek, két iskolában, teljesen más terhelést kap, és ez nem a tudásukon múlik. A minisztérium csomagja is csak ajánlás, nem szabály (Elhetomagyarorszag.hu, 2026). Ha minden gyakorlás az iskolában történik, mindenkinek ugyanazok a feltételei. Ezért kell egységes szabály, nem ajánlás.

If they say…

  1. They say: A házi feladat megtanít önállóan tanulni és felelősséget vállalni.

    We answer: Ez nem igaz arra a korosztályra, amelyről beszélünk. Egy hatéves gyerek leckéje gyakran a szülő munkája lesz, és ott nem a gyerek vállal felelősséget. Maga az Oktatási és Gyermekügyi Minisztérium is úgy látja, hogy az alsó tagozatban az első osztályban és az egész napos iskolákban lehetőség szerint ne legyen kötelező otthoni írásbeli feladat (HVG, 2026). A minisztérium ugyanebben a csomagban azt kéri, hogy a gyakorlás önállóan teljesíthető és valóban fejlesztő legyen (Oktatási és Gyermekügyi Minisztérium, 2026). Vagyis maga az oktatási tárca nem a leckétől várja az önállóságot. Önállóságot lehet tanítani iskolai projektekkel és önálló munkával, tanári segítséggel. Ha a lecke tényleg felelősségre nevel, miért akarja az oktatási minisztérium kivenni az első osztályból? Ez az első érvünk: a délután a gyereké, nem az iskola meghosszabbítása.

    Source: HVG, 2026

  2. They say: Lecke nélkül a gyerekek lemaradnak, mert az iskolában nincs elég idő gyakorolni.

    We answer: Éppen fordítva: az iskolai gyakorlás tanári segítséggel többet ér, mint az esti lecke egyedül. Otthon nincs ott a tanár, aki észreveszi a hibát, és a gyerek akár rossz megoldást is begyakorolhat. A minisztérium csomagja a tanórák rugalmasabb szervezését javasolja, például 35 perces órákat és hosszabb tanulási blokkokat (HVG, 2026). A délutáni foglalkozások pedig kevésbé hasonlítanának a délelőtti órák folytatására (HVG, 2026). Az iskolai nap átszervezhető úgy, hogy a gyakorlás beleférjen. Ha a gyerek egész nap bent van, miért ne férne bele a gyakorlás ebbe az időbe? Ráadásul a lecke nélkül sem marad el a tanulás: csak az iskola veszi át a felelősséget érte. Ez kapcsolódik az első érvünkhöz, a pihenéshez, és a másodikhoz is: az iskolában mindenki ugyanazt a segítséget kapja.

    Source: HVG, 2026

  3. They say: A magyar szülők többsége ragaszkodik a házi feladathoz, ezért a tilalom nem lenne elfogadott.

    We answer: A megszokás nem érv arra, hogy valami jó a gyereknek. Az Eduline 2024-es cikke éppen azt idézi, hogy sok szülő azzal érvel: nekem is volt, ez mindig így volt (Eduline, 2024). Ez hagyomány, nem indok. Ugyanez a cikk azt is rögzíti, hogy Magyarországon nincs egységes szabályozás a házi feladatról, így iskolánként teljesen eltérhet, mennyi leckét kapnak a gyerekek (Eduline, 2024). Ez a második érvünk lényege: ha minden iskola maga dönt, a gyerekek eltérő feltételek között tanulnak. Közben maga a minisztérium is a lecke korlátozását javasolja az alsó tagozatban, hogy megvédje a gyerekek délutánját és a családi időt (Családinet, 2026). Ha a szabályozás szükséges, miért ne lehetne mindenkinek ugyanaz a szabály? Az elfogadottságnál fontosabb, hogy a gyerekeknek igazságos és egységes feltételeket adjunk.

    Source: Eduline, 2024

  4. They say: A teljes tilalom túl szigorú, elég a mennyiség korlátozása, ahogy a minisztérium ajánlja.

    We answer: Éppen a minisztérium csomagja mutatja, hogy a korlátozás nem elég. Ez ajánlás, nem szabály: az iskolák csak megvizsgálhatják, mit vezetnek be (Elhetomagyarorszag.hu, 2026). Első osztályban is csak azt javasolják, hogy lehetőség szerint ne legyen kötelező írásbeli lecke, hétvégére pedig csak kivételesen adnának (HVG, 2026). A „lehetőség szerint” és a „kivételesen” nem kötelezettség. Az iskolák évfolyamonként maguk döntenék el, mennyi az elfogadható (HVG, 2026). Ez azt jelenti, hogy két szomszéd iskolában két különböző gyerek más-más terhet cipel haza. Ha a mennyiség korlátozása elég lenne, miért kell a minisztériumnak külön csomagot küldenie az iskoláknak? Egységes szabály nélkül marad az egyenlőtlenség. Ez a második érvünk. A gyerek pihenéshez való joga pedig, az első érvünk, nem lehet véletlen kérdése.

    Source: HVG, 2026

  5. They say: Az iskolák és a tanárok jobban tudják, mennyi lecke kell, ezért ne az állam döntsön helyettük.

    We answer: Ma sincs egységes szabály, ezért intézményenként teljesen eltérhet, mekkora a lecketerhelés (Eduline, 2024). Egy iskola pedagógiai programja dönt, a gyerek viszont nem választhat iskolát a leckemennyiség alapján. Az eredmény az, hogy a család helyzete és a lakóhely számít, nem a gyerek igénye. Ez pontosan a második érvünk: a lecke ott sújt a legjobban, ahol otthon nincs segítség és nyugodt hely. Az állam sem tenne mást, mint ami a közoktatásban megszokott: közös keretet ad, a tanár pedig az iskolai órán szabadon tanít és gyakoroltat. A minisztérium maga is úgy látja, hogy a lecke ne vegyen el indokolatlanul sok időt a délutánból és a családi időből (Elhetomagyarorszag.hu, 2026). Ha ez a cél, miért bízzuk véletlenre? A gyerekek pihenése, az első érvünk, minden iskolában ugyanannyit ér.

    Source: Eduline, 2024

  6. They say: A lengyel tilalom nem bizonyítja, hogy ez Magyarországon is működne, és a pedagógusok kételkednek benne.

    We answer: Nem azt állítjuk, hogy Lengyelország bizonyíték, hanem azt, hogy a tilalom megvalósítható: 2024 januárjában a lengyel oktatási miniszter be is tiltotta a házi feladatot az általános iskolákban (Eduline, 2024). Magyarországon pedig nem kell külföldre néznünk. A saját minisztériumunk is arra indult el, hogy kevesebb legyen a lecke, és első osztályban, egész napos iskolában lehetőség szerint ne legyen kötelező otthoni írásbeli feladat (HVG, 2026). A tilalom ennek a következetes végigvitele. A pedagógusok kételyét pedig nem a gyerekek pihenése, hanem a megszokás táplálja. Ugyanez a cikk azt mutatja, hogy sok szülő is csak azt mondja: „nekem is volt, ez mindig így volt” (Eduline, 2024). Ez hagyomány, nem érv. Ha a lecke nem hiányzik a gyereknek, mi indokolja, hogy megtartsuk? Ez az első és a második érvünk együtt: pihenés mindenkinek, egyenlő feltételek mindenkinek.

    Source: Eduline, 2024

  7. They say: A házi feladat a szülőket is bevonja, és segít látni, mit tanul a gyerek.

    We answer: A szülői bevonódás nem azt jelenti, hogy a gyereknek esténként kötelezően leckét kell írnia. A minisztérium csomagja is azt kéri, hogy az iskolai kötelezettségek ne vegyenek el indokolatlanul sok időt a gyerekek délutánjából és a családdal töltött időből (Elhetomagyarorszag.hu, 2026). Ugyanez a csomag első osztályban és egész napos iskolában lehetőség szerint megszüntetné a kötelező otthoni írásbeli feladatot (HVG, 2026). Vagyis maga a szakpolitika sem a leckében látja a családi kapcsolat eszközét. A szülő a mesehallgatásból, a beszélgetésből, a közös olvasásból is látja, mit tanul a gyerek. Hol van a bevonódás, ha a szülő a hatéves gyerek mellett este hétkor a hibákat javítgatja? Ezt a szülőt a lecke nem bevonja, hanem kiszolgáltatja a időhiánynak. Ez pontosan az első érvünk: a délután a pihenésé és a családé. A második érvünk is ide tartozik: ahol nincs otthon segítő szülő, ott a lecke nem híd, hanem hátrány.

    Source: HVG, 2026

  8. They say: A gyakorlás ismétlést igényel, és az iskolai idő erre nem elég, főleg 35 perces órák mellett.

    We answer: A gyakorláshoz nem otthoni lecke kell, hanem jól megtervezett iskolai idő. A minisztérium javaslata nem csak rövidebb órákról szól, hanem hosszabb, összevont tanulási blokkokról is, amelyekben többféle tevékenység fér el (CsaládiNet, 2026). A délutáni foglalkozások pedig a javaslat szerint ne a délelőtti órák folytatásai legyenek, hanem szabad játék, mozgás, mese kapjon helyet (HVG, 2026). Ebből látszik, hogy az iskolai napot át lehet szervezni úgy, hogy a gyakorlás beleférjen, a gyerek pedig ne vigye haza a munkát. Ráadásul a 35 perces óra csak lehetőség, amelyet az iskolák megvizsgálhatnak, nem kötelező (Elhetomagyarorszag.hu, 2026). Ha az iskola rövidebb órát választ, az iskola dolga a gyakorlás idejét is megoldani. Ha a gyerek reggel nyolctól délutánig bent van, miért kellene este is ismételnie? A tanár az iskolában azonnal javít, otthon senki. Ez a második érvünk: egységes szabály, mindenkinek ugyanaz a támogatás.

    Source: CsaládiNet, 2026

  9. They say: A tilalom a felső tagozatra és a továbbtanulásra felkészítést is lehetetlenné tenné.

    We answer: A mai javaslat az általános iskola kisebb gyerekeiről szól, és a mi álláspontunk is az, hogy a tanulásnak az iskolai időben kell megtörténnie, tanári segítséggel. A felkészítés nem tűnik el azzal, hogy a lecke eltűnik: az iskola tanórán, korrepetáláson, délutáni foglalkozáson is fel tudja készíteni a tanulókat. A minisztérium csomagja is azt mutatja, hogy a hangsúly az önállóan teljesíthető, valóban fejlesztő feladatokon van, nem a mennyiségen (Oktatási és Gyermekügyi Minisztérium, 2026). Aki a továbbtanulásra készül, annak a magas színvonalú iskolai gyakorlás kell, nem az, hogy a szülő háttere döntsön. Ha a felvételire csak az készülhet fel jól, akinek otthon van segítség, akkor a lecke a családi háttér szerint válogat. Ez a második érvünk. Az első érvünk pedig az, hogy a fáradt gyerek másnap kevésbé figyel, tehát a felkészülést is rontja a túlterhelés.

    Source: Oktatási és Gyermekügyi Minisztérium, 2026

  10. They say: A pihenésre elég idő jut, mert a legtöbb gyereknek nem soknyi lecke van, a probléma csak a túlzás.

    We answer: Ha a probléma csak a túlzás, akkor miért nincs rá szabály? Magyarországon nincs egységes szabályozás, minden iskola a saját pedagógiai programjában dönti el, mennyi házi feladat jár (Eduline, 2024). Vagyis egyik iskolában kevés a lecke, a másikban sok, és a gyereknek nincs mibe kapaszkodnia. A minisztérium 2026-os csomagja szerint is az iskoláknak kell meghatározniuk, mennyi házi feladatot tartanak elfogadhatónak, és a hétvégére, szünetekre csak kivételesen adnának kötelező feladatot (HVG, 2026). Ez azt mutatja, hogy a terhelés valódi gond, különben nem kellene ilyen javaslat. Egy kisgyerek délutánja nem azon múlik, hogy melyik tanárhoz került. Ha a túlzás ellen szabály kell, akkor a legbiztosabb szabály a tilalom. Ez pontosan az első érvünk: az iskola utáni idő a pihenésé, a játéké és a családé.

    Source: Eduline, 2024

  11. They say: Az egyenlőtlenséget a tanodák és az iskolai felzárkóztatás kezeli, nem kell hozzá tilalom.

    We answer: A felzárkóztatás a következményt kezeli, a lecke pedig az okot adja. Amíg minden gyerek kap házi feladatot, addig lesz olyan, akinek otthon nincs segítség, és csak utólag próbáljuk helyrehozni a hátrányt. Miért adnánk fel előbb a leckét, hogy aztán külön program kelljen a bajra? A minisztérium maga is azt javasolja, hogy első osztályban és az egész napos iskolákban lehetőség szerint ne legyen kötelező otthoni írásbeli feladat (HVG, 2026). Ez azt jelzi, hogy a döntéshozók is a lecke csökkentésében látják a megoldást, nem a pótlásban. A csomag emellett csak ajánlás, az iskolák maguk döntenek, így az egyenlőtlenség az iskolák között is megmarad (Elhető Magyarország, 2026). Egy egységes szabály mindenkinek ugyanazt adja. Ez a második érvünk: aki otthon nem kap segítséget, azt nem kell leckével hátrányba hozni.

    Source: HVG, 2026

  12. They say: Egy tilalom végrehajthatatlan, mert a tanárok és a szülők úgyis adnának otthoni feladatot.

    We answer: Az, hogy valamit nehéz betartatni, nem jelenti azt, hogy rossz szabály. Ha így lenne, akkor semmilyen szabályt nem hoznánk. A magyar iskolák már most is írásban rögzítik a házi feladat szabályait: ha egy iskola a minisztériumi javaslatból választ, azt az órarendben, a munkatervben és szükség esetén a pedagógiai programban is rögzíteni kell (Elhető Magyarország, 2026). Vagyis az iskolák képesek ellenőrizhető, leírt szabályokat követni. A szülőket pedig éppen a világos szabály védi: ma a szülő nem tudja, mire számíthat, mert minden intézmény mást ír elő (Eduline, 2024). Ha a tanár nem adhat leckét, a szülőnek sincs mihez igazodnia. Ha a tilalom tényleg végrehajthatatlan, miért ajánlja már most a minisztérium az iskoláknak a lecke korlátozását? Ez a második érvünket erősíti: egységes szabály nélkül a családi háttér dönt.

    Source: Elhető Magyarország, 2026

Closing line

Ezért világos, hogy a házi feladatot be kell tiltani az általános iskolákban: a gyereknek pihenés jár, és minden gyereknek egyenlő esélyt kell adnunk. Köszönöm.

Sources

  1. HVG, 2026: Első osztályban és egész napos iskolában nem lenne kötelező az írásbeli házi, 35 perces órák, átszervezett délután
  2. Eduline, 2024: A szülők ragaszkodása megszokás, Magyarországon nincs egységes szabály a házi feladatra
  3. Családinet, 2026: A minisztérium a házi feladat korlátozását és hosszabb szüneteket javasol
  4. Elhetomagyarorszag.hu, 2026: A házi feladat korlátozása a délután és a családi idő védelmére, egyelőre csak ajánlás
  5. Oktatási és Gyermekügyi Minisztérium, 2026: Az önállóan teljesíthető, valóban fejlesztő gyakorlás előtérbe helyezése

Raw output: classroom-hu.json

+

Write a case for your own motion

DebateOwl writes the same kind of case for any motion you are preparing, for your side and speaker role, with live web research.

The DebateOwl app has no free plan (3-day free trial, then $5/month); the separate timer, motion generator, flow sheet and speech-time calculator are free with no account.

+

Frequently asked questions

Can AI write a debate case?

Yes, as a draft. An AI case generator such as DebateOwl takes a motion, a side and a speaker role and writes the speech: an opening, arguments with evidence and why they matter, answers to what the other side is likely to say, a closing line and a source list. The samples on this page are real output, unedited apart from two replaced source links and one marked correction. A debater still has to open every source, check that it says what the case claims, and put the case into their own words before a round.

What should an AI debate case include?

The parts a debater prepares by hand: an opening with a hook and a line saying what you will prove; two to four arguments, each with a point, an explanation, evidence that names its source and year, and why it matters; “If they say… we answer…” replies to the other side's likely claims; a closing line; and a list of sources with links you can open. A second speech should back up the team's arguments and answer the other side instead of adding new arguments.

+
+ +
+
+ + + diff --git a/public/how-to-write-a-debate-case/index.html b/public/how-to-write-a-debate-case/index.html index aa296136..6faa31c3 100644 --- a/public/how-to-write-a-debate-case/index.html +++ b/public/how-to-write-a-debate-case/index.html @@ -23,14 +23,14 @@ - + - +
@@ -39,11 +39,11 @@
-
How-to guide

How to Write a Debate Case

Move from motion analysis to an opening, arguments with evidence, answers to the other side, and a closing line.

Published · Updated

By the DebateOwl team

+
How-to guide

How to Write a Debate Case

Move from motion analysis to an opening, arguments with evidence, answers to the other side, and a closing line.

Published · Updated

By the DebateOwl team

How do you write a debate case?

A DebateOwl case has an opening, two to four arguments (three by default) each with an explanation, evidence and why it matters, "If they say… we answer…" replies, a closing line and the sources it used. Start by defining the motion fairly and writing what your side must prove. Check every source, rewrite the draft in your own words and time a reading aloud. Adjust for your format: Public Forum usually fits two arguments; Lincoln-Douglas uses a goal and a test for meeting it; BP closing teams need a new angle.

Motion analysis first

Define the terms, write down what your side has to prove and find where the two sides disagree before writing a single argument.

Arguments that hold up

Build each argument as a point, an explanation, evidence and why it matters, so a judge can follow it and an opponent cannot break it with one question.

A case you can defend

Write "If they say… we answer…" replies to the obvious responses, cut what does not clash, and test the draft by attacking it yourself.

-

What a debate case is

A debate case is the argument your side will defend for the whole round, organised so a judge can follow it on first hearing. It is not an essay. An essay can explore; a case has to survive an opponent whose job is to find the weakest sentence in it. That is why good cases are built from small, testable parts: an opening that tells the judge what you will prove, two to four arguments that each prove something specific, answers to what the other side will say, and a closing line the judge remembers.

Every case DebateOwl writes follows that shape, so you can hold a generated draft next to your own and compare them part by part. The process below works for every format. The format changes the length, the number of arguments and who gives which part, which the format section covers further down.

Eight steps from motion to finished case

  1. Read the motion word by word. Note the actor (who does it), the action (what changes) and any word that sets the strength of the claim, such as should, would, ban, regulate or prioritise. A motion about regulating something is a different debate from one about banning it.
  2. Define the key terms in plain language. Pick definitions that are fair and that a judge would accept without argument. A squirrelled definition wins the definition debate and loses the round.
  3. Write down in one sentence what your side has to prove for the judge to vote for you. If you are proposing a policy, you usually need to show a problem, a mechanism and a net benefit. If you are opposing, you choose whether to defend the status quo, a counter-proposal or simply that the proposal does more harm than good.
  4. Brainstorm widely, then cut hard. List every argument for your side, group the ones that share a reason, and keep the two to four groups that are strongest and most different from each other.
  5. Build each argument in four parts: the point (what is true, in one sentence), the explanation (why it is true, step by step), the evidence (a source that backs it, named with its year) and why it matters (what it means for real people, and why that matters more than what the other side will say).
  6. Write the opening: a hook that makes the judge listen, then one line that says what you will show, such as "Today we will show two arguments that prove…". In Lincoln-Douglas, your value and criterion go here too.
  7. For each argument, write down what the other side is most likely to say and a short answer: "If they say…, we answer…". Put the answer to the most obvious response inside the argument itself, so the opponent's best attack does not sound new.
  8. Finish with a closing line that ties back to the opening and a list of your sources. Then read the case aloud against a timer and cut until it fits with fifteen seconds to spare.

Worked example: a full case outline

Motion: This house would make public transport free

Side: Proposition.

Definitions: Public transport means buses, trams and local trains run or funded by government. Free means no fare at the point of use, paid for from general taxation.

What we have to prove: That removing fares produces benefits greater than the cost of replacing fare revenue.

Opening: For a family on a low income, the bus fare to work can be the difference between taking a job and turning it down. Today we will show two arguments that prove free public transport is worth what it costs.

Argument 1, access: Point: fares stop low-income people from reaching jobs and services. Explanation: transport is a fixed cost that takes a larger share of a small income. Why it matters: removing it widens the area in which people can work and study. Answer built in: discounted passes exist, but they require applications and proof of eligibility that many eligible people never complete.

Argument 2, congestion and emissions: Point: free fares move some journeys from cars to public transport. Explanation: price is one of the things people consider when choosing how to travel. Why it matters: fewer car journeys reduce congestion and emissions for everyone in the city.

Order: Argument 1 is the more certain benefit and reaches the people most affected, so it goes first; argument 2 is larger in scale but less certain, so it is an additional reason, not the case's foundation.

If they say: The money is better spent on more frequent services.

We answer: Frequency helps people who already ride; free fares reach people currently priced out, and the two are not mutually exclusive.

Closing line: That is why free fares are the fairest way to pay for the buses a whole city depends on.

Notice what the outline does not contain: a long introduction, rhetorical questions or a list of statistics without explanations. Every line either defines the debate, proves something, answers the other side or tells the judge what to remember.

For the second speech in particular, the worked example of how to prepare for a debate with AI writes the two-minute reinforcement and the "If they say… we answer…" replies in full.

How case structure changes by format

Public Forum (PF)

A four-minute constructive usually fits two arguments, each with evidence, and sometimes a short explanation of how the judge should decide. Because you often do not know your side until shortly before the round, write a case for each side and keep them consistent in style. Put answers to the other side into the second constructive if you speak second.

Lincoln-Douglas (LD)

The case starts with a value, the goal the judge should protect, and a criterion, the test for meeting that goal. Each argument then shows how your side passes the test. State that link at the end of every argument, because a good negative will attack any gap.

British Parliamentary (BP)

Opening Government sets the definition and, for policy motions, a model: what exactly happens, who does it and how it is enforced. Opening Opposition responds to that model. Closing teams do not write a full case of their own; they prepare an extension, a new line of analysis the opening half did not cover.

World Schools (WSDC)

The case is split between the first and second speakers under a single team line. The first speaker gives definitions, the burden and usually the first argument; the second speaker gives the remaining arguments. Write the split before you write the arguments, so neither speaker repeats the other.

Checklist before you call the case finished

  • Can you state the whole case in two sentences?
  • Does every argument have an explanation you could give without your notes?
  • Is every piece of evidence one you have read in the original, with a full citation?
  • Does each argument say why it matters, and why that matters more than what the other side will argue?
  • Have you written an "If they say…" answer to the strongest response to each argument?
  • Does it fit in the time with room to slow down?

If any answer is no, fix that before you practise delivery. Polishing the speech of a case with a missing explanation only makes the gap harder to see.

Where DebateOwl helps

Once you have a draft, attack it before an opponent does. Paste an argument into Attack to see which link breaks first, use Brainstorm when you need more angles at step four, and use Factoids to research a single statement you want to rely on. If you would rather start from a draft, the case generator writes a ready-to-read case in the same shape: an opening, two to four arguments (three by default) with explanation, evidence and why it matters, "If they say… we answer…" replies, a closing line and sources. Cut and rewrite it with the steps above. For a second speech (R2), the draft brings no new arguments: about two minutes backing up the team's arguments, then about four minutes of "If they say X, we answer Y" blocks.

+

What a debate case is

A debate case is the argument your side will defend for the whole round, organised so a judge can follow it on first hearing. It is not an essay. An essay can explore; a case has to survive an opponent whose job is to find the weakest sentence in it. That is why good cases are built from small, testable parts: an opening that tells the judge what you will prove, two to four arguments that each prove something specific, answers to what the other side will say, and a closing line the judge remembers.

Every case DebateOwl writes follows that shape, so you can hold a generated draft next to your own and compare them part by part. See a real example of three unedited DebateOwl cases. The process below works for every format. The format changes the length, the number of arguments and who gives which part, which the format section covers further down.

Eight steps from motion to finished case

  1. Read the motion word by word. Note the actor (who does it), the action (what changes) and any word that sets the strength of the claim, such as should, would, ban, regulate or prioritise. A motion about regulating something is a different debate from one about banning it.
  2. Define the key terms in plain language. Pick definitions that are fair and that a judge would accept without argument. A squirrelled definition wins the definition debate and loses the round.
  3. Write down in one sentence what your side has to prove for the judge to vote for you. If you are proposing a policy, you usually need to show a problem, a mechanism and a net benefit. If you are opposing, you choose whether to defend the status quo, a counter-proposal or simply that the proposal does more harm than good.
  4. Brainstorm widely, then cut hard. List every argument for your side, group the ones that share a reason, and keep the two to four groups that are strongest and most different from each other.
  5. Build each argument in four parts: the point (what is true, in one sentence), the explanation (why it is true, step by step), the evidence (a source that backs it, named with its year) and why it matters (what it means for real people, and why that matters more than what the other side will say).
  6. Write the opening: a hook that makes the judge listen, then one line that says what you will show, such as "Today we will show two arguments that prove…". In Lincoln-Douglas, your value and criterion go here too.
  7. For each argument, write down what the other side is most likely to say and a short answer: "If they say…, we answer…". Put the answer to the most obvious response inside the argument itself, so the opponent's best attack does not sound new.
  8. Finish with a closing line that ties back to the opening and a list of your sources. Then read the case aloud against a timer and cut until it fits with fifteen seconds to spare.

Worked example: a full case outline

Motion: This house would make public transport free

Side: Proposition.

Definitions: Public transport means buses, trams and local trains run or funded by government. Free means no fare at the point of use, paid for from general taxation.

What we have to prove: That removing fares produces benefits greater than the cost of replacing fare revenue.

Opening: For a family on a low income, the bus fare to work can be the difference between taking a job and turning it down. Today we will show two arguments that prove free public transport is worth what it costs.

Argument 1, access: Point: fares stop low-income people from reaching jobs and services. Explanation: transport is a fixed cost that takes a larger share of a small income. Why it matters: removing it widens the area in which people can work and study. Answer built in: discounted passes exist, but they require applications and proof of eligibility that many eligible people never complete.

Argument 2, congestion and emissions: Point: free fares move some journeys from cars to public transport. Explanation: price is one of the things people consider when choosing how to travel. Why it matters: fewer car journeys reduce congestion and emissions for everyone in the city.

Order: Argument 1 is the more certain benefit and reaches the people most affected, so it goes first; argument 2 is larger in scale but less certain, so it is an additional reason, not the case's foundation.

If they say: The money is better spent on more frequent services.

We answer: Frequency helps people who already ride; free fares reach people currently priced out, and the two are not mutually exclusive.

Closing line: That is why free fares are the fairest way to pay for the buses a whole city depends on.

Notice what the outline does not contain: a long introduction, rhetorical questions or a list of statistics without explanations. Every line either defines the debate, proves something, answers the other side or tells the judge what to remember.

For the second speech in particular, the worked example of how to prepare for a debate with AI writes the two-minute reinforcement and the "If they say… we answer…" replies in full.

How case structure changes by format

Public Forum (PF)

A four-minute constructive usually fits two arguments, each with evidence, and sometimes a short explanation of how the judge should decide. Because you often do not know your side until shortly before the round, write a case for each side and keep them consistent in style. Put answers to the other side into the second constructive if you speak second.

Lincoln-Douglas (LD)

The case starts with a value, the goal the judge should protect, and a criterion, the test for meeting that goal. Each argument then shows how your side passes the test. State that link at the end of every argument, because a good negative will attack any gap.

British Parliamentary (BP)

Opening Government sets the definition and, for policy motions, a model: what exactly happens, who does it and how it is enforced. Opening Opposition responds to that model. Closing teams do not write a full case of their own; they prepare an extension, a new line of analysis the opening half did not cover.

World Schools (WSDC)

The case is split between the first and second speakers under a single team line. The first speaker gives definitions, the burden and usually the first argument; the second speaker gives the remaining arguments. Write the split before you write the arguments, so neither speaker repeats the other.

Checklist before you call the case finished

  • Can you state the whole case in two sentences?
  • Does every argument have an explanation you could give without your notes?
  • Is every piece of evidence one you have read in the original, with a full citation?
  • Does each argument say why it matters, and why that matters more than what the other side will argue?
  • Have you written an "If they say…" answer to the strongest response to each argument?
  • Does it fit in the time with room to slow down?

If any answer is no, fix that before you practise delivery. Polishing the speech of a case with a missing explanation only makes the gap harder to see.

Where DebateOwl helps

Once you have a draft, attack it before an opponent does. Paste an argument into Attack to see which link breaks first, use Brainstorm when you need more angles at step four, and use Factoids to research a single statement you want to rely on. If you would rather start from a draft, the case generator writes a ready-to-read case in the same shape: an opening, two to four arguments (three by default) with explanation, evidence and why it matters, "If they say… we answer…" replies, a closing line and sources. Cut and rewrite it with the steps above. For a second speech (R2), the draft brings no new arguments: about two minutes backing up the team's arguments, then about four minutes of "If they say X, we answer Y" blocks.

Frequently asked questions

How many contentions should a debate case have?

Usually two to four arguments. Public Forum constructives often fit two; formats with longer speeches can take three or four. Fewer well-defended arguments beat many thin ones.

What goes into each argument?

Say what is true, explain why it is true, give evidence you have checked and show why it matters. Add a short answer to the response you expect from the other side.

How long does it take to write a debate case?

A first draft can take an hour once you have researched the topic. Expect to revise it several times after practice rounds expose its weak points.

Should I write my case word for word?

In formats with prepared constructives, such as Public Forum and Lincoln-Douglas, most debaters do. In impromptu formats like BP and WSDC, prepare an outline and key lines instead.

How do I make a case harder to attack?

Explain why every point is true, use evidence you have checked, answer the most obvious response inside each argument, and attack the draft yourself before the round.

diff --git a/public/llms.txt b/public/llms.txt index bf955a75..7a21c918 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -27,7 +27,8 @@ DebateOwl runs at https://debateowl.com/. It is a separate product from debatela - [About](https://debateowl.com/about): what DebateOwl is, who runs it and its former name - [Contact](https://debateowl.com/contact): email hello@debateowl.com for support and feedback, privacy@debateowl.com for privacy and data requests - [Press kit and facts](https://debateowl.com/press): a one-sentence definition, former name, maker, languages, pricing, logo downloads and what DebateOwl is not -- [Full text](https://debateowl.com/llms-full.txt): this file plus the plain text of the home page, About, Which AI is best for debate? and the press kit +- [Debate case example](https://debateowl.com/debate-case-example): real DebateOwl case examples (British Parliamentary and Policy in English, Classroom in Hungarian) with "If they say… we answer…" replies and the R2 +- [Full text](https://debateowl.com/llms-full.txt): this file plus the plain text of the home page, About, Which AI is best for debate?, the press kit and the debate case examples - [Sitemap](https://debateowl.com/sitemap.xml): every public page ## Free tools diff --git a/public/seo-pages.css b/public/seo-pages.css index 777f6e8d..826f9b5f 100644 --- a/public/seo-pages.css +++ b/public/seo-pages.css @@ -10,3 +10,4 @@ .checklist{list-style:none;padding:0;margin:14px 0;display:grid;gap:8px}.checklist label{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:14px;padding:10px 14px;background:rgba(255,255,255,.05);cursor:pointer}.checklist input{accent-color:#14B37D;width:1.1rem;height:1.1rem;margin-top:5px;flex:none} .hero .price{max-width:800px;color:var(--muted);margin:14px 0 0} .callout{max-width:840px;border:1px solid var(--line);border-radius:16px;padding:14px 18px;background:rgba(255,255,255,.05);margin:18px 0 0} +.case .facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:16px 0}.case .facts dt{color:var(--muted)}.case .facts dd{margin:0}.case h4{font-size:1.05rem;margin:1.6rem 0 .4rem}.case-list{padding-left:1.4rem}.case-list li{margin:0 0 14px}.case-list p,.speech p{margin:.3rem 0}.sources{padding-left:1.4rem;overflow-wrap:anywhere}.correction{color:var(--brand2);font-weight:750;text-decoration:none}@media(max-width:760px){.case .facts{grid-template-columns:1fr}.case .facts dd{margin-bottom:8px}} diff --git a/scripts/case-examples/README.md b/scripts/case-examples/README.md new file mode 100644 index 00000000..f9a0aede --- /dev/null +++ b/scripts/case-examples/README.md @@ -0,0 +1,48 @@ +# Debate case examples: raw output + +These files are the unedited output behind [/debate-case-example](https://debateowl.com/debate-case-example). [`scripts/seo_case_example.py`](../seo_case_example.py) renders the page from them; [`scripts/generate_seo_content.py`](../generate_seo_content.py) writes it to `public/debate-case-example/index.html`. Change the page copy there, never the case text here. The only changes the page makes to the case text are the entries in [`corrections.json`](corrections.json), which it lists under "Corrections after generation": replaced source links, and inline `[correction: ...]` markers that keep the generated wording and flag a wrong fact. + +| File | Motion | Format setting | Side | Language | +| --- | --- | --- | --- | --- | +| `bp-en.json` | This House would lower the voting age to 16 | British Parliamentary | pro | English | +| `policy-en.json` | Resolved: The United States federal government should substantially increase its investment in high-speed rail | Policy | con | English | +| `classroom-hu.json` | Ez a Ház betiltaná a házi feladatot az általános iskolákban | Classroom | pro | Hungarian | + +Each file holds, for the first speech (`r1`) and the second (`r2`): + +- `request`: the body the browser sent to the `ai` Edge Function; +- `response`: the function's final result, unchanged (`output` is the case); +- `providerCalls`: every model call the request made, with the model the client asked for and the model OpenRouter says served it. Prompts are left out because they contain the full text of the research pages; `userPromptHead` keeps the request lines the function wrote (motion, side, format, role, length). + +`aiRequests` and `caseRows` are the database rows the run wrote. + +## How they were generated + +On 3 November 2026, from commit `a9f69b38`, with the [`verify-debatelab`](../../.claude/skills/verify-debatelab/SKILL.md) stack in live mode and every chat call pinned to `anthropic/claude-sonnet-5.5` (the Pro default): + +```bash +H=.claude/skills/verify-debatelab/bin/verify.sh +VERIFY_LIVE_MODEL=anthropic/claude-sonnet-5.5 $H up --live --max-calls 120 +CASE_EXAMPLES=all $H drive recipes/case-examples --project desktop-chromium +python3 scripts/case-examples/export.py .verify/artifacts//desktop-chromium/case-example- "" scripts/case-examples +$H down +``` + +[`recipes/case-examples.spec.ts`](../../.claude/skills/verify-debatelab/recipes/case-examples.spec.ts) signs in a demo user, starts a debate with the motion and format, then generates R1 and R2 in that debate. The run made 44 upstream calls. Two differences from production: the research-query step, which runs on Claude Haiku 5.5 in production, was also pinned to Sonnet 5.5, and the Jev source-ranking calls went to Jev's own model as they do in production. + +The first Hungarian run failed on its R2 (`Generate response is missing metadata and cannot satisfy the requested output shape.`), so the Hungarian sample was rerun from the start. No other sample was rerun. + +## Source links, checked 3 November 2026 + +Of the 31 links in the raw output, 22 answered 200 to a script. The other 9 answered 403 behind a Cloudflare or Akamai bot check to every automated client tried (Python, headless Chromium, Camofox): `lordslibrary.parliament.uk`, `committees.parliament.uk` (2), `publications.parliament.uk`, `tandfonline.com`, `transportation.gov` (2), `commerce.senate.gov` and `apta.com`. The Edge Function removes any link the request's own research did not return, so each of these was an Exa result at generation time. + +Opened in a real browser, 7 of those 9 load. Two do not, and [`corrections.json`](corrections.json) replaces them on the page: + +- `tandfonline.com/doi/full/10.1080/17457289.2025.2560983` (Levin, "Are 16-year-olds mature enough to vote? Evidence from the Voto Joven in Latin America", Journal of Elections, Public Opinion and Parties, 6 October 2025) stays behind a Cloudflare check. It is replaced by the author's preprint of the same paper on APSA Preprints, whose page lists the journal version. The counter's source line, which named the wrong journal, now names APSA Preprints. +- `commerce.senate.gov/.../2026.02.05 CHSRA Follow-Up Report (Part 2 of Acela Report).pdf` answers Access Denied. It is replaced by the Internet Archive's copy of the same PDF (snapshot of 11 August 2026). The committee's press release is on the same blocked host. + +## Fact corrections + +- Sample 1, first speech, first "If they say…" answer: the model wrote that 16-year-olds have voted "since 1984 in Nicaragua and Brazil". Brazil's year is 1988 (the cited Levin paper and Brazil's 1988 constitution), so the page keeps the sentence and adds `[correction: Brazil since 1988]` right after it. + +Each change in `corrections.json` names the raw value it replaces, or for a marker the exact words it follows, which must appear once; `scripts/seo_case_example.py` fails if a raw file no longer has that value, so a regenerated sample cannot keep a stale correction. diff --git a/scripts/case-examples/bp-en.json b/scripts/case-examples/bp-en.json new file mode 100644 index 00000000..b8149b0d --- /dev/null +++ b/scripts/case-examples/bp-en.json @@ -0,0 +1,1135 @@ +{ + "sample": "bp-en", + "debateFormatSetting": "British Parliamentary", + "howGenerated": "DebateOwl's Generate tool driven in a browser on a local DebateOwl stack (React client, Supabase Auth and Postgres, the ai Edge Function) with live OpenRouter and Exa: start a debate with the motion and format, generate R1, then R2 in the same debate. Every chat call was pinned to anthropic/claude-sonnet-5.5 on the Anthropic provider.", + "run": { + "test": "case example bp-en", + "project": "desktop-chromium", + "commit": "a9f69b38ccd3ab43d15d6e82ab1963cc74b1b723", + "mode": "live", + "liveModel": "anthropic/claude-sonnet-5.5", + "baseURL": "http://127.0.0.1:18081", + "startedAt": "2026-11-03T17:16:38.556Z" + }, + "r1": { + "request": { + "feature": "generate", + "input": { + "motion": "This House would lower the voting age to 16", + "side": "pro", + "format": "custom", + "role": "r1", + "length": "standard", + "audience": "intermediate", + "tone": "formal", + "language": "en" + }, + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "reasoningEffort": "low", + "sourceIds": [], + "debateContext": { + "debateId": "e36a93be-ad75-41ec-9c9c-85022d444c2b", + "side": "pro", + "sourceIds": [], + "outputs": [] + }, + "stream": true, + "resultKey": "req_1793726204941_4jm3ep" + }, + "response": { + "output": { + "opening": { + "hook": "At 16 you can work, pay tax and serve in the armed forces, yet you cannot vote on the laws that govern all three. Today we say that gap has no justification." + }, + "caseStructure": { + "thesis": "Today we will show three arguments that prove lowering the voting age to 16 is fair, builds lasting voting habits, and strengthens democracy." + }, + "contentions": [ + { + "id": "1", + "title": "Rights follow responsibilities", + "claim": "Sixteen-year-olds already carry adult duties, so they should have a say in the rules that bind them.", + "reasoning": "At 16 in the UK, young people can work full time, pay income tax and national insurance, and join the armed forces. Each of these makes them subject to decisions made by government. If the state asks for adult contributions, it owes them a voice. Withholding the vote means they are taxed and governed with no say.", + "evidence": "The House of Lords Library said in 2025 that Sir Keir Starmer argued during the 2024 campaign that if you can work, pay tax and serve in your armed forces, you should be able to vote. In Scotland and Wales, 16- and 17-year-olds already vote in devolved and local elections.", + "needsSource": false, + "sourceQuery": "", + "impact": "Young workers and taxpayers are governed by laws they cannot influence. Giving them a vote ends that unfairness." + }, + { + "id": "2", + "title": "Voting habits start earlier", + "claim": "Voting at 16 builds a lifelong habit of turning out, because first votes are easier at home and in school.", + "reasoning": "At 18, many people leave home or move to university. They move often, struggle to register, and do not know where to vote. At 16, young people live with family and are in education, so they get support through their first vote. People who vote early are more likely to keep voting, so a better first experience carries into adult life.", + "evidence": "The Electoral Reform Society said in 2026 that in Austria, Scotland and Germany, those enfranchised at 16 or 17 were more likely to vote into their twenties than those who first voted at 18. It also noted registration for 18- and 19-year-olds is just 60%, against 96% for those aged 65 and over.", + "needsSource": false, + "sourceQuery": "", + "impact": "Habits formed in a supported setting make democracy healthier for decades, not just at the next election." + }, + { + "id": "3", + "title": "Closing the youth turnout gap", + "claim": "Lowering the voting age tackles a widening gap in turnout between young and older voters.", + "reasoning": "Young people are being left behind in politics. When they vote less, politicians have less reason to listen to them. Bringing 16- and 17-year-olds in early, while schools can teach them about politics, gives them a way into the system before the habit of staying out sets in.", + "evidence": "The Electoral Reform Society said in 2026 that in the 2024 UK general election, 65.4% of 18- to 24-year-olds reported voting, against 88.6% of those aged 66 and over. It also said the gap has widened since the 1990s.", + "needsSource": false, + "sourceQuery": "", + "impact": "A democracy where young people stay silent produces policy that ignores them. Votes at 16 makes government answer to the next generation." + } + ], + "counters": [ + { + "targetArgument": "Sixteen-year-olds are not mature enough to vote.", + "counterpoint": "Maturity is not tested for any other voter, and there is no reason to start with 16-year-olds. Research from the University of California, Irvine, published in 2025, looked at the Voto Joven in Latin America, where 16-year-olds have voted since 1984 in Nicaragua and Brazil, and asked directly whether they are mature enough. The question is answered by evidence from real countries, not assumption.", + "source": "Levin, Political Studies Review (Taylor & Francis), 2025" + }, + { + "targetArgument": "Young people are not interested in politics, so they will not vote.", + "counterpoint": "That is exactly why we start earlier. The Electoral Reform Society said in 2026 that those enfranchised at 16 or 17 in Austria, Scotland and Germany turned out more into their twenties. Interest is built through voting, not before it.", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "Young people will just copy their parents' views or be easily influenced.", + "counterpoint": "Adults are influenced by family, media and friends too, and we do not remove their vote for it. The question is whether 16-year-olds are capable of forming their own view, and countries that already allow it show they do. Political education in school, as I Have A Voice told Parliament, helps long-term turnout when it is consistent and high quality.", + "source": "I Have A Voice, written evidence to UK Parliament" + }, + { + "targetArgument": "Lowering the voting age will mainly help one political party.", + "counterpoint": "The evidence does not support that. The Joseph Rowntree Reform Trust briefing by Dr Christine Huebner and Dr Jan Eichhorn, published in January 2025, includes a section titled a limited impact on electoral outcomes. Rights should not depend on guessing which party benefits.", + "source": "Huebner and Eichhorn, JRRT UK Democracy Fund, 2025" + }, + { + "targetArgument": "If you can vote at 16, you should be able to drink, smoke and drive too.", + "counterpoint": "Voting is different from those activities. Drinking and smoking harm the person doing them. Voting is a say in the rules that already apply to you. And 16-year-olds already work, pay tax and can serve in the armed forces, so the link to voting is far closer than to alcohol.", + "source": "House of Lords Library, 2025" + } + ], + "closingLine": "That is why it is clear that 16-year-olds already carry adult duties, and giving them the vote is fair and good for democracy.", + "sources": [ + { + "org": "House of Lords Library", + "claim": "Starmer argued that working, paying tax and serving in the armed forces should come with the vote; 16- and 17-year-olds already vote in Scotland and Wales", + "year": "2025", + "url": "https://lordslibrary.parliament.uk/votes-at-16/" + }, + { + "org": "Electoral Reform Society", + "claim": "Early voters in Austria, Scotland and Germany voted more into their twenties; registration and youth turnout gaps", + "year": "2026", + "url": "https://electoral-reform.org.uk/latest-news-and-research/parliamentary-briefings/briefing-on-votes-at-16-2026/" + }, + { + "org": "Huebner and Eichhorn, JRRT UK Democracy Fund", + "claim": "Votes at 16 has a limited impact on electoral outcomes", + "year": "2025", + "url": "https://www.jrrt.org.uk/wp-content/uploads/2025/01/Votes-at-16-report-FINAL.pdf" + }, + { + "org": "Levin, Taylor & Francis", + "claim": "Study of political maturity of 16-year-olds in Latin America", + "year": "2025", + "url": "https://www.tandfonline.com/doi/full/10.1080/17457289.2025.2560983" + }, + { + "org": "I Have A Voice, UK Parliament written evidence", + "claim": "Voting at 16 increases long-term turnout when paired with citizenship education", + "year": "2025", + "url": "https://committees.parliament.uk/writtenevidence/166167/pdf/" + } + ], + "metadata": { + "side": "pro", + "format": "custom", + "generatedAt": "2026-11-03T00:00:00Z", + "model": "anthropic/claude-sonnet-5.5", + "provider": "openrouter", + "sourceUsage": [], + "durationMs": 22551 + } + }, + "discoveredSources": [ + { + "title": "Briefing on Votes at 16", + "url": "https://electoral-reform.org.uk/wp-content/uploads/2026/02/Briefing-on-Votes-at-16-2026.pdf", + "content": "## Briefing on Votes at 16\n\nFebruary 2026\n\nIn 2024, turnout in the General Election was 59.9%. This narrowly avoided the 2001 historic low of 59.4%. Not only are voters not turning out, but there is evidence of a widening turnout gap between younger and older voters. The British Electoral Study finds that (in reported turnout which tends to over-estimate) 65.4% of 18- to 24-year-olds voted in 2024, compared to 88.6% of those aged 66 and over. 1 From the 1990s onwards, the turnout gap has been expanding 2 and we see lower levels of turnout in constituencies which have larger proportions of young people. 3 Lowering the franchise is an opportunity to nurture more active citizens for the future. By giving 16- and 17-year-olds a vote we can engage the next generation in politics and improve the future health of our democracy.\n\nDemocratic habits Research has shown that the younger people are engaged in voting, the more likely they are to carry on voting later in their lives. In Austria, Scot", + "qualityScore": 95, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 statistics report study 2025 2026" + }, + { + "title": "Representation of the People Bill: progress of the bill - House of Commons Library", + "url": "https://commonslibrary.parliament.uk/research-briefings/cbp-10876/", + "content": "Representation of the People Bill: progress of the bill - House of Commons Library\n\nPublished Tuesday, 29 September, 2026\n\nThis briefing tracks the progress of the bill to introduce votes at 16, automatic voter registration, tighten the rules on political donations and allow bank cards to be used as voter ID.\n\n## Documents to download\n\n- Representation of the People Bill: progress of the bill (2MB PDF)\n\n Download full report Download ‘Representation of the People Bill: progress of the bill’ report (2MB , PDF) \n\nThe Representation of the People Bill 2024-26, 2026-27 was introduced in the House of Commons on 12 February 2026. The bill had its second reading on 2 March 2026.\n\nCommittee stage took place over nine sittings from 18 March to 16 April 2026. The first two sittings were evidence sessions, where the committee heard from external witnesses. The remaining seven sittings were held from 24 March to 16 April 2026. The 2024–26 session of Parliament ended on 29 April 2026 without the bi", + "qualityScore": 91, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + }, + { + "title": "Briefing on Votes at 16 (2026) – Electoral Reform Society – ERS", + "url": "https://electoral-reform.org.uk/latest-news-and-research/parliamentary-briefings/briefing-on-votes-at-16-2026/", + "content": "Briefing on Votes at 16 (2026) – Electoral Reform Society – ERS\n\n# Briefing on Votes at 16 (2026)\n\nPosted on the 12th February 2026\n\nThis briefing was written for the Representation of the People Bill.\n\nIn 2024, turnout in the General Election was 59.9%. This narrowly avoided the 2001 historic low of 59.4%. Not only are voters not turning out, but there is evidence of a widening turnout gap between younger and older voters. The British Electoral Study finds that (in reported turnout which tends to over-estimate) 65.4% of 18- to 24-year-olds voted in 2024, compared to 88.6% of those aged 66 and over. [1]\n\nFrom the 1990s onwards, the turnout gap has been expanding [2] and we see lower levels of turnout in constituencies which have larger proportions of young people. [3]\n\nLowering the franchise is an opportunity to nurture more active citizens for the future. By giving 16- and 17-year-olds a vote we can engage the next generation in politics and improve the future health of our democracy.", + "qualityScore": 91, + "sourceType": "results", + "qualityLabel": "strong", + "query": "Austria Scotland lowered voting age 16 turnout study first-time voters political knowledge efficacy" + }, + { + "title": "Modernising Elections - Committees - UK Parliament", + "url": "https://committees.parliament.uk/work/9680/modernising-elections/", + "content": "Modernising Elections - Committees - UK Parliament\n\n## Inquiry\n\nThe Government has introduced the Representation of the People Bill, which includes its manifesto commitment to lower the voting age to 16. They have described this Bill as “the biggest expansion of democratic participation in a generation”. The Bill had its second reading on 2 March 2026.\n\nThis inquiry will examine the health of electoral democracy in the UK today, in light of the decline in voter turnout in recent elections and diminishing voter trust in democratic institutions. We will scrutinise the potential effectiveness of the Government’s proposals for increasing democratic engagement, including its reforms to the voting age and the move towards automated systems of voter registration. We will also consider best practice for implementation of these changes.\n\nThe Government have commissioned an independent review, led by Philip Rycroft, into foreign financial interference in UK politics. Our inquiry will also consid", + "qualityScore": 91, + "sourceType": "official", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + }, + { + "title": "Voting age", + "url": "https://researchbriefings.files.parliament.uk/documents/SN01747/SN01747.pdf", + "content": "commonslibrary.parliament.uk\n\nResearch Briefing\n\n13 February 2026 By Neil Johnston Voting age\n\nSummary \n1 Current rules \n2 Proposals for change \n3 Votes at 16 in parts of the UK and other countries \n\nNumber 1747\n\nImage Credits To the polling station by Matt. Licensed under CC BY 2.0 / image cropped Disclaimer The Commons Library does not intend the information in our research publications and briefings to address the specific circumstances of any particular individual. We have published it to support the work of MPs. You should not rely upon it as legal or professional advice, or as a substitute for it. We do not accept any liability whatsoever for any errors, omissions or misstatements contained herein. You should consult a suitably qualified professional if you require specific advice or information. Read our briefing ‘Legal help: where to go and how to pay’ for further information about sources of legal advice and help. This information is provided subject to the conditions of the O", + "qualityScore": 95, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + } + ], + "sourceAssessments": [], + "meta": { + "requestedModel": "anthropic/claude-sonnet-5.5", + "resolvedModel": "anthropic/claude-sonnet-5.5", + "debateContext": { + "debateId": "e36a93be-ad75-41ec-9c9c-85022d444c2b", + "sourcesUsed": 0, + "sourcesOmittedForSize": 0, + "sourcesShortened": 0, + "sourcesUnavailable": 0, + "outputsUsed": [], + "outputsOmittedForSize": [], + "outputsUnavailable": 0, + "instructionsUsed": false + } + } + }, + "providerCalls": [ + { + "feature": "research-queries", + "requestedModel": "anthropic/claude-haiku-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 2335, + "stream": false + }, + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 330, + "stream": null + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 18332, + "stream": true, + "userPromptHead": "Motion: This House would lower the voting age to 16\nSide: pro\nFormat: custom\nRole: r1\nLength: standard\nLength Instruction: Return exactly 3 contentions. Give each a clear explanation, evidence, and why it matters.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the arguments and the closing line together stay within about 600 words, leaving time for the \"If they say...\" answers the speaker picks. With 3 arguments, each argument is about 170 spoken words: claim one sentence of at most 20 words, reasoning about 75 words, evidence about 50 words, whyItMatters about 25 words. opening.hook and caseStructure.thesis at most 35 words each, closingLine one sentence of at most 25 words. Aim for these numbers, not under them: a shorter field leaves the speaker's time unused, a longer one runs past it.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + } + ] + }, + "r2": { + "request": { + "feature": "generate", + "input": { + "motion": "This House would lower the voting age to 16", + "side": "pro", + "format": "custom", + "role": "r2", + "length": "standard", + "audience": "intermediate", + "tone": "formal", + "language": "en" + }, + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "reasoningEffort": "low", + "sourceIds": [ + "add531f3-2895-49a2-a97a-85030c0e8beb", + "22d5448e-2e44-4a1b-8960-d609b08daee4", + "1604caa5-3e1a-4630-8746-a56fa634b791", + "b0135ab9-ea6d-4ea7-a2f1-2786d40b6b02", + "742a0120-f31b-4b09-8b4b-b9cf8bf83f0b" + ], + "debateContext": { + "debateId": "e36a93be-ad75-41ec-9c9c-85022d444c2b", + "side": "pro", + "sourceIds": [ + "add531f3-2895-49a2-a97a-85030c0e8beb", + "22d5448e-2e44-4a1b-8960-d609b08daee4", + "1604caa5-3e1a-4630-8746-a56fa634b791", + "b0135ab9-ea6d-4ea7-a2f1-2786d40b6b02", + "742a0120-f31b-4b09-8b4b-b9cf8bf83f0b" + ], + "outputs": [ + { + "kind": "case", + "id": "29f502c2-8558-417d-9a2c-2cb4a7d94051" + } + ] + }, + "stream": true, + "resultKey": "req_1793726229392_s1jr2j" + }, + "response": { + "output": { + "opening": { + "hook": "If sixteen-year-olds were really too young to have a say, why do we already ask them to work, pay tax and plan their futures, and then tell them to wait two more years before they get a vote?" + }, + "caseStructure": { + "thesis": "I'm the R2 of my team, and I'm here to show that lowering the voting age to 16 builds lasting voting habits, closes the gap between young and old voters, and that nothing the other side has said changes that." + }, + "contentions": [], + "counters": [ + { + "targetArgument": "Sixteen-year-olds are not mature or informed enough to vote.", + "counterpoint": "That claim treats 16-year-olds as a problem, but countries that already do this say the opposite. Austria lowered its voting age to 16 in 2007 because, in the government's own words, 16-year-olds already have criminal responsibility and are making key decisions about education and work (EACEA YouthWiki, 2025). We do not test the maturity of any adult voter, so why start with teenagers? And knowledge is not fixed. The Institute for Government said in 2025 that votes at 16 must come with better civic education, which means the answer to a knowledge gap is teaching, not exclusion. I Have A Voice told Parliament that votes at 16 raise long-term turnout when citizenship education is consistent and good. Voting is also something you learn by doing. This is our first argument: a first vote at 16, at home and in school, is the best place to build the habit.", + "source": "EACEA YouthWiki, 2025" + }, + { + "targetArgument": "Lowering the voting age is a party political move to help Labour win elections.", + "counterpoint": "That is a claim about motives, and it does not tell us whether the reform is right. The evidence also does not back it. The Joseph Rowntree Reform Trust briefing by Dr Christine Huebner and Dr Jan Eichhorn, from January 2025, has a section titled a limited impact on electoral outcomes. And support is not limited to one party. The House of Lords Library noted in 2025 that the Liberal Democrats, the Greens, the SNP and Plaid Cymru all backed votes at 16 in their manifestos. If this were a Labour trick, why do four other parties want it too? Rights should not depend on guessing who benefits. They depend on whether 16-year-olds are affected by the laws. They are, and that is why our second argument matters: a democracy that hears the young needs them in it.", + "source": "Joseph Rowntree Reform Trust, 2025" + }, + { + "targetArgument": "Young people do not want the vote, and many teenagers themselves are against it.", + "counterpoint": "Opposition says teenagers are not interested, but that is exactly the problem we are fixing. The Electoral Reform Society said in 2026 that turnout among 18- to 24-year-olds in 2024 was 65.4%, against 88.6% for those aged 66 and over. Young people are not being heard, and that gap has been growing since the 1990s. Interest does not appear before the vote, it grows with it. The same briefing says that people enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to vote into their twenties than those who first voted at 18. If teenagers did not care, why would they turn out more later? Also, a survey of opinion is not a reason to deny a right. This is our first argument: the habit is built by voting, not by waiting until someone is already keen.", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "Teenagers will just copy their parents or be swayed by teachers and social media.", + "counterpoint": "Being influenced is not a reason to lose the vote. Every adult is shaped by family, friends and media, and nobody takes their ballot away for it. Look at what the Electoral Reform Society said in 2026: people enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to turn out into their twenties than people who first voted at 18. Pupils who were only repeating their parents would not build a habit like that. The Joseph Rowntree Reform Trust briefing by Dr Huebner and Dr Eichhorn (2025) also has a section on a limited impact on electoral outcomes. If 16-year-olds were simply copies of their parents, why would the results look so ordinary? Home is also where a first vote is best supported. This is exactly our first argument: voting at 16, with family and school around you, builds a lasting habit.", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "Schools do not teach enough political education, so 16-year-olds are not ready.", + "counterpoint": "That is an argument for better teaching, not for keeping the vote at 18. I Have A Voice told Parliament that voting from 16 increases long-term turnout when young people get consistent, high-quality citizenship education. The Institute for Government said in July 2025 that the voting age change should come with improved education. Both say the same thing: lower the age and build the teaching around it. Nobody tests adults on political knowledge before they vote. Why should 16-year-olds face a test that no other voter faces? At 16, young people are still in school, so that is the best moment to teach them how voting works and then let them use it. The Electoral Reform Society (2026) notes they are better supported at home and in education. This is our first argument: an early first vote, backed by school, creates the habit.", + "source": "I Have A Voice, written evidence to Parliament, and Institute for Government, 2025" + }, + { + "targetArgument": "Results in Scotland and Wales have been mixed, so the reform has not worked.", + "counterpoint": "Mixed headlines do not cancel the evidence on what matters most: habits and turnout over time. The Electoral Reform Society said in 2026 that people enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to turn out into their twenties than those who first voted at 18. Austria lowered its voting age to 16 in 2007, and the European Commission's YouthWiki (updated 2025) reports that the reform was meant to encourage youth participation. I Have A Voice told Parliament that the gains in the devolved nations show up when citizenship education is consistent and high quality. So the lesson is to do it properly, not to scrap it. If the reform had failed, why would these voters keep turning out into their twenties? This is our second argument: closing the youth turnout gap. In 2024, 65.4% of 18- to 24-year-olds voted against 88.6% of those aged 66 and over (British Electoral Study, cited by the Electoral Reform Society, 2026).", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "If you can vote at 16, you should also be able to drink, smoke and drive.", + "counterpoint": "That comparison fails, because voting is not like those activities. Drinking and smoking harm the person doing them. A vote harms nobody. It is a say in rules that already apply to you. The House of Lords Library recorded in 2025 that Keir Starmer put it this way: if you can work, pay tax and serve in the armed forces, you ought to be able to vote. Austria used the same reasoning in 2007, pointing to 16-year-olds' criminal responsibility and extended legal capacity (YouthWiki, 2025). So the link to voting is about being bound by the law, not about risk. If the other side wants a consistent age for everything, why does a 16-year-old already carry the legal duties of an adult but have no say in the laws behind them? This is exactly our first argument: a vote at 16 is easier to cast at home and at school, and it starts a habit that lasts.", + "source": "House of Commons Library, 2025" + }, + { + "targetArgument": "Sixteen-year-olds are still children, and the law protects them from adult responsibilities.", + "counterpoint": "The law does not treat 16-year-olds as children in the ways that matter here. The House of Lords Library noted in 2025 that the case for votes at 16 rests on adult duties like working, paying tax and serving in the armed forces. Austria's youth portal explains that its 2007 reform reflected the fact that 16-year-olds already have criminal responsibility and extended legal capacity (YouthWiki, 2025). The law holds them accountable like adults, so it cannot also say they are too young to have a voice. Protection is a reason to give them education and support, and votes at 16 do that. The Electoral Reform Society said in 2026 that younger voters are better supported through a first vote while they are at home and in education. If the aim is protection, why send them into their first vote at 18, alone, after leaving home? That is our first argument.", + "source": "House of Lords Library, 2025" + }, + { + "targetArgument": "Early voters do not keep the habit, so any benefit for later turnout is overstated.", + "counterpoint": "The evidence points the other way. The Electoral Reform Society said in 2026 that in Austria, Scotland and Germany, people enfranchised at 16 or 17 were more likely to turn out into their twenties than those who first voted at 18. It also said enfranchised 16- and 17-year-olds tend to turn out in greater numbers than those first voting at 18 or over. The Electoral Psychology Observatory at LSE told Parliament in 2026 that lowering the voting age can sharply improve electoral participation over a lifetime. The reason is practical. Registration for 18- and 19-year-olds is just 60%, against 96% for those aged 65 and over (Electoral Reform Society, 2026), because many have left home and moved. If the habit does not stick, why do these countries show higher turnout in the twenties? This is our first argument, and it also feeds our second: a habit formed early narrows the youth turnout gap.", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "First-time voting at 18 is fine, because turnout among 18-year-olds is not the real problem.", + "counterpoint": "That ignores what happens at 18. Registration among 18- and 19-year-olds is just 60%, compared to 96% for those aged 65 and over (Electoral Reform Society, 2026). Many 18-year-olds have just left home or started university, so they move often and do not know how or where to vote. At 16, they are still at home and in school, and they get help with their first vote. The same briefing says those enfranchised at 16 or 17 in Austria, Scotland and Germany were more likely to turn out into their twenties than those who first voted at 18. So 18 is not fine. It is the age when the system loses people. If 18 works, why is the gap between 18- to 24-year-olds and over-66s so wide, at 65.4% against 88.6% in 2024? This is exactly our first argument: a first vote at home builds a habit that lasts.", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "Adding 16- and 17-year-olds will not close the gap and could even lower overall turnout.", + "counterpoint": "The evidence points the other way. Turnout in 2024 was 59.9%, and the gap between young and old voters has been growing since the 1990s (Electoral Reform Society, 2026). Doing nothing leaves that gap in place. The same briefing found that 16- and 17-year-olds who can vote tend to turn out in greater numbers than people voting for the first time at 18 or over. So the new voters pull the average up, not down. The LSE Electoral Psychology Observatory told the Commons Committee in 2026 that lowering the voting age can sharply improve participation over a lifetime. And the Joseph Rowntree Reform Trust briefing in 2025 has a section on challenging inequalities in political participation. If the reform were harmful, why would researchers who studied real cases support it? This is our second argument: bring young people in early, before staying out becomes a habit.", + "source": "Electoral Reform Society, 2026" + }, + { + "targetArgument": "Politicians will not change policy for young voters, so a youth vote changes nothing.", + "counterpoint": "Politicians go where the votes are. The Electoral Reform Society found in 2026 that turnout is lower in constituencies with more young people. When a group votes less, parties have less reason to listen to it. Adding more than a million 16- and 17-year-olds to the electorate, as The Guardian reported in 2025, changes that calculation. The government's own bill has been described in Parliament as the biggest expansion of democratic participation in a generation (UK Parliament Committees, 2026). A group that is counted gets answered. If youth votes changed nothing, why do parties fight so hard over this reform? Both sides treat these votes as worth having. That is our second argument: when young people vote, government has to answer to them. And when they vote early, they keep voting, so that pressure lasts.", + "source": "Electoral Reform Society, 2026" + } + ], + "reinforce": [ + { + "argument": "Our first argument: voting habits start earlier", + "text": "The Electoral Reform Society said in 2026 that in Austria, Scotland and Germany, people who were enfranchised at 16 or 17 were more likely to turn out into their twenties than those who first voted at 18. The reason is practical. At 16, young people are at home and in school, so they get help with their first vote. At 18, many have moved away or gone to university, and registration for 18- and 19-year-olds is just 60%, compared with 96% for those aged 65 and over. The LSE Electoral Psychology Observatory told Parliament in 2026 that lowering the age can sharply improve participation over a lifetime. If the first vote is hard, many never take a second step. Votes at 16 make that first experience easy." + }, + { + "argument": "Our second argument: closing the youth turnout gap", + "text": "Turnout in the 2024 general election was 59.9%, close to the record low of 59.4% in 2001, the Electoral Reform Society said in 2026. Within that, 65.4% of 18- to 24-year-olds voted, compared with 88.6% of those aged 66 and over. The society also found that turnout is lower in constituencies with more young people. That means politicians have less reason to listen to the young, because the young do not turn up. Bringing in 16- and 17-year-olds, while schools can teach them about politics, gives them a way in before the habit of staying out sets. If the system worked for the young, this gap would not exist, and it keeps getting wider." + } + ], + "closingLine": "That is why it is clear that lowering the voting age to 16 is fair, builds habits that last, and makes our democracy answer to the young. Thank you.", + "sources": [ + { + "org": "EACEA YouthWiki", + "claim": "Austria lowered the voting age to 16 in 2007 because 16-year-olds already carry legal responsibility and make key decisions", + "year": "2025", + "url": "https://national-policies.eacea.ec.europa.eu/youthwiki/chapters/austria/52-youth-participation-in-representative-democracy" + }, + { + "org": "Institute for Government", + "claim": "Votes at 16 must come with improved civic education", + "year": "2025", + "url": "https://www.instituteforgovernment.org.uk/comment/lowering-voting-age-must-come-improved-education" + }, + { + "org": "I Have A Voice", + "claim": "Voting from 16 raises long-term turnout when citizenship education is consistent and high quality", + "year": "2025", + "url": "https://committees.parliament.uk/writtenevidence/166167/pdf/" + }, + { + "org": "Joseph Rowntree Reform Trust", + "claim": "Votes at 16 have a limited impact on electoral outcomes", + "year": "2025", + "url": "https://www.jrrt.org.uk/wp-content/uploads/2025/01/Votes-at-16-report-FINAL.pdf" + }, + { + "org": "House of Lords Library", + "claim": "Several parties besides Labour supported votes at 16 in their manifestos", + "year": "2025", + "url": "https://lordslibrary.parliament.uk/votes-at-16/" + }, + { + "org": "Electoral Reform Society", + "claim": "Youth turnout gap, registration rates, and higher turnout among those enfranchised at 16 or 17", + "year": "2026", + "url": "https://electoral-reform.org.uk/wp-content/uploads/2026/02/Briefing-on-Votes-at-16-2026.pdf" + }, + { + "org": "Electoral Psychology Observatory, LSE", + "claim": "Lowering the voting age can sharply improve participation over a lifetime", + "year": "2026", + "url": "https://publications.parliament.uk/pa/cm5901/cmpublic/RepresentationPeople/memo/RPB19.htm" + }, + { + "org": "The Guardian", + "claim": "More than a million 16- and 17-year-olds would be included in democracy", + "year": "2025", + "url": "https://www.theguardian.com/politics/2025/jul/17/lowering-voting-age-impact-uk-democracy-analysis" + }, + { + "org": "UK Parliament Committees, Modernising Elections", + "claim": "Government describes the bill as the biggest expansion of democratic participation in a generation", + "year": "2026", + "url": "https://committees.parliament.uk/work/9680/modernising-elections/" + } + ], + "metadata": { + "side": "pro", + "format": "custom", + "generatedAt": "2026-11-03T12:00:00Z", + "model": "anthropic/claude-sonnet-5.5", + "provider": "openrouter", + "sourceUsage": [], + "durationMs": 26111 + } + }, + "discoveredSources": [ + { + "title": "Voting age", + "url": "https://researchbriefings.files.parliament.uk/documents/SN01747/SN01747.pdf", + "content": "commonslibrary.parliament.uk\n\nResearch Briefing\n\n13 February 2026 By Neil Johnston Voting age\n\nSummary \n1 Current rules \n2 Proposals for change \n3 Votes at 16 in parts of the UK and other countries \n\nNumber 1747\n\nImage Credits To the polling station by Matt. Licensed under CC BY 2.0 / image cropped Disclaimer The Commons Library does not intend the information in our research publications and briefings to address the specific circumstances of any particular individual. We have published it to support the work of MPs. You should not rely upon it as legal or professional advice, or as a substitute for it. We do not accept any liability whatsoever for any errors, omissions or misstatements contained herein. You should consult a suitably qualified professional if you require specific advice or information. Read our briefing ‘Legal help: where to go and how to pay’ for further information about sources of legal advice and help. This information is provided subject to the conditions of the O", + "qualityScore": 95, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + }, + { + "title": "Representation of the People Bill: progress of the bill - House of Commons Library", + "url": "https://commonslibrary.parliament.uk/research-briefings/cbp-10876/", + "content": "Representation of the People Bill: progress of the bill - House of Commons Library\n\nPublished Tuesday, 29 September, 2026\n\nThis briefing tracks the progress of the bill to introduce votes at 16, automatic voter registration, tighten the rules on political donations and allow bank cards to be used as voter ID.\n\n## Documents to download\n\n- Representation of the People Bill: progress of the bill (2MB PDF)\n\n Download full report Download ‘Representation of the People Bill: progress of the bill’ report (2MB , PDF) \n\nThe Representation of the People Bill 2024-26, 2026-27 was introduced in the House of Commons on 12 February 2026. The bill had its second reading on 2 March 2026.\n\nCommittee stage took place over nine sittings from 18 March to 16 April 2026. The first two sittings were evidence sessions, where the committee heard from external witnesses. The remaining seven sittings were held from 24 March to 16 April 2026. The 2024–26 session of Parliament ended on 29 April 2026 without the bi", + "qualityScore": 91, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + }, + { + "title": "Briefing on Votes at 16", + "url": "https://electoral-reform.org.uk/wp-content/uploads/2026/02/Briefing-on-Votes-at-16-2026.pdf", + "content": "## Briefing on Votes at 16\n\nFebruary 2026\n\nIn 2024, turnout in the General Election was 59.9%. This narrowly avoided the 2001 historic low of 59.4%. Not only are voters not turning out, but there is evidence of a widening turnout gap between younger and older voters. The British Electoral Study finds that (in reported turnout which tends to over-estimate) 65.4% of 18- to 24-year-olds voted in 2024, compared to 88.6% of those aged 66 and over. 1 From the 1990s onwards, the turnout gap has been expanding 2 and we see lower levels of turnout in constituencies which have larger proportions of young people. 3 Lowering the franchise is an opportunity to nurture more active citizens for the future. By giving 16- and 17-year-olds a vote we can engage the next generation in politics and improve the future health of our democracy.\n\nDemocratic habits Research has shown that the younger people are engaged in voting, the more likely they are to carry on voting later in their lives. In Austria, Scot", + "qualityScore": 95, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 statistics report study 2025 2026" + }, + { + "title": "Votes at 16 - House of Lords Library", + "url": "https://lordslibrary.parliament.uk/votes-at-16/", + "content": "Votes at 16 - House of Lords Library\n\nPublished Wednesday, 23 July, 2025\n\nFollowing Labour’s manifesto commitment to lower the voting age to 16, this briefing considers the potential impact on turnout, electoral outcomes and democratic engagement.\n\n## Table of contents\n\n- 1. An electoral advantage? skip to link\n- 2. A question of fairness? skip to link\n- 3. Stronger participation? skip to link\n\nAp proximate r ead time: 10 minutes\n\nThe government plans to lower the voting age for all elections to 16 before the next general election. [1] At the moment, there is a patchwork of different voting ages across the UK. In Scotland and Wales, 16- and 17-year-olds can vote in devolved parliament and local government elections, but the voting age for UK parliamentary elections and other elections in England and Northern Ireland is 18. [2] \n\nThe government argues that votes at 16 will strengthen democracy and empower young people to participate. [3] There is also a view that certain adult responsib", + "qualityScore": 89, + "sourceType": "results", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + }, + { + "title": "Modernising Elections - Committees - UK Parliament", + "url": "https://committees.parliament.uk/work/9680/modernising-elections/", + "content": "Modernising Elections - Committees - UK Parliament\n\n## Inquiry\n\nThe Government has introduced the Representation of the People Bill, which includes its manifesto commitment to lower the voting age to 16. They have described this Bill as “the biggest expansion of democratic participation in a generation”. The Bill had its second reading on 2 March 2026.\n\nThis inquiry will examine the health of electoral democracy in the UK today, in light of the decline in voter turnout in recent elections and diminishing voter trust in democratic institutions. We will scrutinise the potential effectiveness of the Government’s proposals for increasing democratic engagement, including its reforms to the voting age and the move towards automated systems of voter registration. We will also consider best practice for implementation of these changes.\n\nThe Government have commissioned an independent review, led by Philip Rycroft, into foreign financial interference in UK politics. Our inquiry will also consid", + "qualityScore": 91, + "sourceType": "official", + "qualityLabel": "strong", + "query": "This House would lower the voting age to 16 official data evidence 2025 2026" + } + ], + "sourceAssessments": [], + "meta": { + "requestedModel": "anthropic/claude-sonnet-5.5", + "resolvedModel": "anthropic/claude-sonnet-5.5", + "debateContext": { + "debateId": "e36a93be-ad75-41ec-9c9c-85022d444c2b", + "sourcesUsed": 5, + "sourcesOmittedForSize": 0, + "sourcesShortened": 0, + "sourcesUnavailable": 0, + "outputsUsed": [ + { + "kind": "case", + "id": "29f502c2-8558-417d-9a2c-2cb4a7d94051" + } + ], + "outputsOmittedForSize": [], + "outputsUnavailable": 0, + "instructionsUsed": false + } + } + }, + "providerCalls": [ + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 242, + "stream": null + }, + { + "feature": "research-queries", + "requestedModel": "anthropic/claude-haiku-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 1862, + "stream": false + }, + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 262, + "stream": null + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 5422, + "stream": false, + "userPromptHead": "Motion: This House would lower the voting age to 16\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 17424, + "stream": true, + "userPromptHead": "Motion: This House would lower the voting age to 16\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 10069, + "stream": false, + "userPromptHead": "Motion: This House would lower the voting age to 16\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 10722, + "stream": false, + "userPromptHead": "Motion: This House would lower the voting age to 16\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 11188, + "stream": false, + "userPromptHead": "Motion: This House would lower the voting age to 16\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + } + ] + }, + "aiRequests": [ + { + "id": "51afb447-bd9c-44d7-91c5-c3c942bf6404", + "user_id": "4550fc06-706d-441e-ae1c-458d81fe9190", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 2912, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000122304, + "created_at": "2026-11-03T17:16:49.237943+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000122304, + "input_tokens": 2912, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000122304 + }, + { + "id": "98a1e4aa-2700-40f6-80f8-aedf0bda72c8", + "user_id": "4550fc06-706d-441e-ae1c-458d81fe9190", + "feature": "generate", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "input_tokens": 18690, + "output_tokens": 2646, + "latency_ms": 22551, + "status": "success", + "error_code": null, + "cost_usd": 0.10007200000000002, + "created_at": "2026-11-03T17:17:07.6555+00:00", + "cached_input_tokens": 0, + "cache_write_tokens": 6464, + "reasoning_output_tokens": 0, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "calls": [ + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.063244, + "upstream_inference_prompt_cost": 0.037834, + "upstream_inference_completions_cost": 0.02541 + }, + "total_tokens": 19842, + "prompt_tokens": 17301, + "completion_tokens": 2541, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 6464 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "9cf9f39d4f4855503a478fd3260a60a6", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "862120759dfafadd1c2b2a0f9a673c37", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.003828, + "upstream_inference_prompt_cost": 0.002778, + "upstream_inference_completions_cost": 0.00105 + }, + "total_tokens": 1494, + "prompt_tokens": 1389, + "completion_tokens": 105, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "20539446f578434c7fd1bb55d81198a5", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "43a73f65d23e6cd9f68968ce83a8354e", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "1586fff6980ee70549b2ff88600aa763", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "a384cceaee4dab1012c610be5aa7c74c", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "65e094b77fd3595a13b38e13992e6fea", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "78342ad3aa732801d1131606d7931559", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "382c99cf08c509e371709c83bc0c838b", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + } + ] + }, + "cap_cost_usd": 0.10007200000000002 + }, + { + "id": "22e10a51-e13a-43d0-87ff-b9efdded608b", + "user_id": "4550fc06-706d-441e-ae1c-458d81fe9190", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 2921, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000122682, + "created_at": "2026-11-03T17:17:09.77326+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000122682, + "input_tokens": 2921, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000122682 + }, + { + "id": "479b294f-f35b-4057-84b4-cfdd6c0a4d92", + "user_id": "4550fc06-706d-441e-ae1c-458d81fe9190", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 2815, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.00011823, + "created_at": "2026-11-03T17:17:13.00545+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.00011823, + "input_tokens": 2815, + "output_tokens": 279 + }, + "cap_cost_usd": 0.00011823 + }, + { + "id": "b009abb2-1c31-4bbb-89d2-5d725b956173", + "user_id": "4550fc06-706d-441e-ae1c-458d81fe9190", + "feature": "generate", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "input_tokens": 105735, + "output_tokens": 7666, + "latency_ms": 26111, + "status": "success", + "error_code": null, + "cost_usd": 0.251692, + "created_at": "2026-11-03T17:17:35.896632+00:00", + "cached_input_tokens": 39120, + "cache_write_tokens": 9780, + "reasoning_output_tokens": 0, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "calls": [ + { + "calls": [ + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.051244, + "upstream_inference_prompt_cost": 0.046484, + "upstream_inference_completions_cost": 0.00476 + }, + "total_tokens": 21273, + "prompt_tokens": 20797, + "completion_tokens": 476, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 9780 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.047534, + "upstream_inference_prompt_cost": 0.023164, + "upstream_inference_completions_cost": 0.02437 + }, + "total_tokens": 23310, + "prompt_tokens": 20873, + "completion_tokens": 2437, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 9780, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.03916, + "upstream_inference_prompt_cost": 0.02319, + "upstream_inference_completions_cost": 0.01597 + }, + "total_tokens": 22483, + "prompt_tokens": 20886, + "completion_tokens": 1597, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 9780, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.03805, + "upstream_inference_prompt_cost": 0.0232, + "upstream_inference_completions_cost": 0.01485 + }, + "total_tokens": 22376, + "prompt_tokens": 20891, + "completion_tokens": 1485, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 9780, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.038636, + "upstream_inference_prompt_cost": 0.023216, + "upstream_inference_completions_cost": 0.01542 + }, + "total_tokens": 22441, + "prompt_tokens": 20899, + "completion_tokens": 1542, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 9780, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + } + ] + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "468f841e08b237502b720acadfdf91f8", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "2ceedf2d43af2a54056771528303bf8b", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.004068, + "upstream_inference_prompt_cost": 0.002778, + "upstream_inference_completions_cost": 0.00129 + }, + "total_tokens": 1518, + "prompt_tokens": 1389, + "completion_tokens": 129, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "87c5afb51b223e4e1d07c30344c76685", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "8187e1c61ed3edcbd8c9468f62e3e349", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "171a6f531080d8a00826fc1f8a891124", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "46bd3167933212edb48e44c29cb97176", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "3fb17a1493b52ff2762761b456d56366", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "ff029387822e76d3466ffa76a4347ec0", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "9098528ed4fe1ae4a496cdc1927387c4", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + } + ] + }, + "cap_cost_usd": 0.251692 + } + ], + "caseRows": [ + { + "id": "29f502c2-8558-417d-9a2c-2cb4a7d94051", + "title": "This House would lower the voting age to 16", + "side": "pro", + "created_at": "2026-11-03T17:17:08.395332+00:00", + "debates": { + "motion": "This House would lower the voting age to 16", + "settings": { + "role": "general", + "format": "bp" + } + } + }, + { + "id": "11ff837a-caff-472e-bf54-96ee792b4f69", + "title": "This House would lower the voting age to 16", + "side": "pro", + "created_at": "2026-11-03T17:17:36.226953+00:00", + "debates": { + "motion": "This House would lower the voting age to 16", + "settings": { + "role": "general", + "format": "bp" + } + } + } + ] +} diff --git a/scripts/case-examples/classroom-hu.json b/scripts/case-examples/classroom-hu.json new file mode 100644 index 00000000..59af0e01 --- /dev/null +++ b/scripts/case-examples/classroom-hu.json @@ -0,0 +1,1139 @@ +{ + "sample": "classroom-hu", + "debateFormatSetting": "Classroom", + "howGenerated": "DebateOwl's Generate tool driven in a browser on a local DebateOwl stack (React client, Supabase Auth and Postgres, the ai Edge Function) with live OpenRouter and Exa: start a debate with the motion and format, generate R1, then R2 in the same debate. Every chat call was pinned to anthropic/claude-sonnet-5.5 on the Anthropic provider.", + "run": { + "test": "case example classroom-hu", + "project": "desktop-chromium", + "commit": "a9f69b38ccd3ab43d15d6e82ab1963cc74b1b723", + "mode": "live", + "liveModel": "anthropic/claude-sonnet-5.5", + "baseURL": "http://127.0.0.1:18081", + "startedAt": "2026-11-03T17:20:58.087Z" + }, + "r1": { + "request": { + "feature": "generate", + "input": { + "motion": "Ez a Ház betiltaná a házi feladatot az általános iskolákban", + "side": "pro", + "format": "custom", + "role": "r1", + "length": "standard", + "audience": "intermediate", + "tone": "formal", + "language": "hu" + }, + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "reasoningEffort": "low", + "sourceIds": [], + "debateContext": { + "debateId": "cf057d21-3472-4faf-bba4-9be4341032b6", + "side": "pro", + "sourceIds": [], + "outputs": [] + }, + "stream": true, + "resultKey": "req_1793726463972_zlzi1a" + }, + "response": { + "output": { + "opening": { + "hook": "Képzeljenek el egy hatéves gyereket, aki nyolc órát tölt az iskolában, aztán hazamegy, és még leckét ír. Mikor játszik, mikor pihen, mikor van ideje a családjára?" + }, + "caseStructure": { + "thesis": "Ma három érvvel bizonyítjuk, hogy a házi feladatot be kell tiltani az általános iskolákban: a gyerekeknek pihenés kell, a lecke nem a legjobb gyakorlás, és a tilalom igazságosabb." + }, + "contentions": [ + { + "id": "1", + "title": "A gyereknek pihenés jár", + "claim": "Az iskola után a gyerek ideje a pihenésé, a játéké és a családé, nem az újabb feladatoké.", + "reasoning": "A gyerek már a tanórákon dolgozik, sokan reggel nyolctól délután négyig az iskolában vannak. Ha hazaérve még leckét is kell írniuk, nincs idejük mozogni, játszani vagy a szüleikkel lenni. A fáradt gyerek pedig másnap kevésbé figyel, vagyis a lecke saját magát ássa alá.", + "evidence": "Az Oktatási és Gyermekügyi Minisztérium 2026-os javaslatcsomagja szerint a házi feladat korlátozásának célja a gyerekek délutáni és családi idejének védelme. Lengyelországban az oktatási miniszter 2024-ben azzal tiltotta be az általános iskolai leckét, hogy a gyerekeknek pihenniük kell.", + "needsSource": false, + "sourceQuery": "", + "impact": "Itt kisgyerekekről van szó. Az ő délutánjuk nem az iskolai nap folytatása, hanem a saját idejük." + }, + { + "id": "2", + "title": "A lecke nem jó gyakorlás", + "claim": "Az iskolai tanulást az iskolában, tanári segítséggel kell megoldani, mert otthon a házi feladat sokszor nem fejleszt.", + "reasoning": "Otthon nincs ott a tanár, aki észrevenné a hibát. A gyerek begyakorolhat egy rossz megoldást, vagy a szülő csinálja meg helyette. Ha a gyakorlás az iskolai időbe kerül, a tanár azonnal javít, és mindenki ugyanazt a segítséget kapja. A rövid, jól vezetett iskolai gyakorlás többet ér, mint a fáradt esti lecke.", + "evidence": "A minisztérium javaslatcsomagja szerint az önállóan teljesíthető, valóban fejlesztő gyakorlást kell előtérbe helyezni. Ez azt jelzi, hogy maga az oktatási tárca sem tartja minden házi feladatot hasznosnak. Az ajánlás első osztályban és egész napos iskolában lehetőség szerint megszüntetné a kötelező írásbeli leckét.", + "needsSource": false, + "sourceQuery": "", + "impact": "Ha a lecke nem fejleszt, csak fáraszt és feszültséget okoz, akkor nincs jó ok megtartani." + }, + { + "id": "3", + "title": "A lecke egyenlőtlenséget szül", + "claim": "A házi feladat azokat a gyerekeket sújtja, akiknek otthon nincs segítség, nyugodt hely vagy idő.", + "reasoning": "Aki mellett este leül egy szülő, gyorsan elkészül és jobb jegyet kap. Aki mellett nincs senki, vagy a szülő későn ér haza, hátrányba kerül. Ez nem a gyerek tudásán múlik, hanem a családi helyzetén. Ha minden gyakorlás az iskolában történik, mindenkinek ugyanazok a feltételei vannak.", + "evidence": "Egy hazai cikk szerint Magyarországon nincs egységes szabály, és az iskolák pedagógiai programja dönti el, mennyi leckét adhatnak (Eduline, 2024). Vagyis ugyanannyi idős gyerek az egyik iskolában alig kap leckét, a másikban sokat. Ez önmagában is igazságtalan.", + "needsSource": true, + "sourceQuery": "magyar kutatás a szülői segítség és a házi feladat teljesítése közötti összefüggésről, hátrányos helyzetű tanulók", + "impact": "Az iskola feladata, hogy mindenkinek egyenlő esélyt adjon, nem az, hogy a családi háttér döntsön." + } + ], + "counters": [ + { + "targetArgument": "A házi feladat megtanít önállóan tanulni és felelősséget vállalni.", + "counterpoint": "Az önállóságot nem kell leckével tanítani, mert iskolai projektekkel, önálló munkával is lehet gyakorolni, tanári segítséggel. A minisztérium javaslatcsomagja is az önállóan teljesíthető, valóban fejlesztő gyakorlást helyezi előtérbe, nem a sok leckét (Oktatási és Gyermekügyi Minisztérium, 2026). Ha a hatéves gyerek leckéje a szülő munkája lesz, mit tanult a felelősségről?", + "source": "Oktatási és Gyermekügyi Minisztérium, 2026" + }, + { + "targetArgument": "A magyar szülők többsége ragaszkodik a házi feladathoz.", + "counterpoint": "A szülői megszokás nem bizonyíték arra, hogy a lecke jó a gyereknek. Az Eduline 2024-es cikke szerint sok szülő azzal érvel, hogy neki is volt, mindig így volt. Ez hagyomány, nem érv. A Blikk szavazásából az is kiderült, hogy a válaszolók jóval több mint fele örült volna a lecke megszűnésének (Blikk, 2024). Kinek van igaza, ha maguk a szülők sem értenek egyet?", + "source": "Eduline, 2024" + }, + { + "targetArgument": "A lengyel példa nem működik, a pedagógusok szerint a teljes tilalom rossz megoldás.", + "counterpoint": "A tilalmat éppen az oktatási miniszter vezette be, azzal, hogy a gyerekeknek pihenniük kell (nlc.hu, 2024). A magyar pedagógusok is inkább a lecke céljának tisztázását kérik, ami azt mutatja, hogy a mostani gyakorlat nem tiszta (Blikk, 2024). Az általános iskolában nem a lecke a megoldás erre. Ez tartozik a pihenésről szóló első érvünkhöz.", + "source": "nlc.hu, 2024" + }, + { + "targetArgument": "Elég a korlátozás, nem kell tiltani.", + "counterpoint": "A korlátozás ajánlás, nem szabály. A minisztérium csomagja is csak javaslat az iskoláknak, amelyeket megvizsgálhatnak (444.hu, 2026). Az iskolák maguk döntik el, mennyit adnak, így az egyenlőtlenség marad. Miért ne lehetne mindenkinek ugyanaz a szabály? Ez a harmadik érvünk.", + "source": "444.hu, 2026" + }, + { + "targetArgument": "Lecke nélkül a gyerekek lemaradnak, nem lesz idő gyakorolni.", + "counterpoint": "Az iskolai napot lehet úgy szervezni, hogy a gyakorlás is beleférjen. A minisztérium a délutáni időt is átgondolná, hogy az ne a délelőtti tanórák folytatása legyen (Oktatási és Gyermekügyi Minisztérium, 2026). Ha egy gyerek fél nyolctól négyig bent van, miért ne fér bele ebbe a gyakorlás? Ez a második érvünk.", + "source": "Oktatási és Gyermekügyi Minisztérium, 2026" + } + ], + "closingLine": "Ezért világos, hogy az általános iskolás gyereknek az iskola után pihenés jár, nem házi feladat, és ezért a Háznak be kell tiltania.", + "sources": [ + { + "org": "Oktatási és Gyermekügyi Minisztérium (Legyen ÉLMÉNY a tanulás!)", + "claim": "Az alsó tagozatos házi feladat észszerű korlátozása a délutáni és családi idő védelmére, és az önállóan teljesíthető gyakorlás előtérbe helyezése", + "year": "2026", + "url": "https://www.munkacsysuli.hu/_upload/editor/Dokumentumok/Javaslatcsomag-2.pdf" + }, + { + "org": "HVG", + "claim": "Első osztályban és egész napos iskolában lehetőség szerint nincs kötelező írásbeli lecke", + "year": "2026", + "url": "https://hvg.hu/itthon/20260808_johetnek-a-35-perces-orak-es-a-kevesebb-hazi-az-also-tagozaton" + }, + { + "org": "444.hu", + "claim": "A minisztérium csomagja ajánlás, nem kötelező szabály", + "year": "2026", + "url": "https://444.hu/2026/08/08/35-perces-tanorak-kevesebb-hazi-feladat-oraszam-atcsoportositas-mindennapos-meseolvasas-elkeszult-a-miniszterium-also-tagozatos-javaslatcsomagja" + }, + { + "org": "nlc.hu", + "claim": "A lengyel oktatási miniszter betiltotta az általános iskolai házi feladatot, mert a gyerekeknek pihenniük kell", + "year": "2024", + "url": "https://nlc.hu/csalad/20240126/hazi-feladatok-betiltas-lengyelorszag/" + }, + { + "org": "Eduline", + "claim": "Magyarországon nincs egységes szabály a házi feladat mennyiségére, iskolánként eltér", + "year": "2024", + "url": "https://eduline.hu/kozoktatas/20240124_Mennyi-hazi-feladatot-adhatnak-fel-a-tanarok" + }, + { + "org": "Blikk", + "claim": "A cikk szavazásában a válaszolók jóval több mint fele örülne a lecke megszűnésének, a pedagógusok a lecke célját tisztáznák", + "year": "2024", + "url": "https://www.blikk.hu/aktualis/belfold/hazi-feladat-betiltas-magyarorszag-belugyminiszterium/ztb4r2p" + } + ], + "metadata": { + "side": "pro", + "format": "custom", + "generatedAt": "2026-11-03T00:00:00Z", + "model": "anthropic/claude-sonnet-5.5", + "provider": "openrouter", + "sourceUsage": [], + "durationMs": 33962 + } + }, + "discoveredSources": [ + { + "title": "Kevesebb házi feladat, hosszabb szünetek és 35 perces órák jöhetnek az alsó tagozatban – CsaládiNet", + "url": "https://www.csaladinet.hu/hirek/gyerekneveles/iskolas/36840/kevesebb_hazi_feladat_hosszabb_szunetek_es_35_perces_orak_johetnek_az_also_tagozatban", + "content": "Kevesebb házi feladat, hosszabb szünetek és 35 perces órák jöhetnek az alsó tagozatban – CsaládiNet\n\n# Kevesebb házi feladat, hosszabb szünetek és 35 perces órák jöhetnek az alsó tagozatban\n\n2026. 08. 10. Családinet\n\nRugalmasabb napkezdést, több mozgást, hosszabb szüneteket és kevesebb otthoni feladatot is javasolnak az általános iskoláknak. Az új lehetőségekből már a szeptemberben kezdődő tanévben is válogathatnak az intézmények.\n\nNem feltétlenül ugyanúgy indul majd a tanítás minden általános iskolában szeptembertől. Az Oktatási és Gyermekügyi Minisztérium 14 pontos szakmai javaslatcsomagot küldött az intézményeknek, amely az alsó tagozatos gyerekek terhelésének csökkentését és a gyerekekhez jobban igazodó tanulásszervezést célozza.\n\nA javaslatok között egészen konkrét változtatások is szerepelnek: például a 35 perces tanítási órák lehetőségének megvizsgálása, hosszabb szünetek, kevesebb házi feladat és több játékos, tapasztalati tanulás.\n\n### 35 perces órák és rugalmasabb reggelek\n\nA", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban official data evidence 2025 2026" + }, + { + "title": "Legyen ÉLMÉNY a tanulás!", + "url": "https://www.munkacsysuli.hu/_upload/editor/Dokumentumok/Javaslatcsomag-2.pdf", + "content": "## Legyen ÉLMÉNY a tanulás!\n\n##### Javaslatcsomag az alsó tagozat gyermekközpontú megújítására\n\nOktatási és Gyermekügyi Minisztérium 2026. július 31.\n\nJAVASLAT JAVASLAT JAVASLAT JAVASLAT JAVASLAT JAVASLAT JAVASLAT\n\nCÉL CÉL CÉL CÉL CÉL CÉL CÉL\n\nGyermekbarát iskolakezdés és napirend\n\nA tanítási nap \nnyugodt, biztonságos \nés a gyermekek \néletkori \nsajátosságaihoz \nigazodó kezdése. \nRugalmas \nóraszervezés: \nrövidebb órák és \nkomplex blokkok \n\nA figyelmi terhelés mérséklése és az elmélyült, tevékenységalapú tanulás feltételeinek megteremtése.\n\nHosszabb \nmozgásos \nszünetek, nyugodt \nebéd-és pihenőidő \n\nA tanulók fizikai és mentális regenerálódásának biztosítása a tanítási nap során.\n\nAz óraszámok és tanulási tartalmak rugalmas elosztása\n\nA merev napi tantárgyi rend helyett életkorhoz igazodó, változatos tanulási ritmus kialakítása.\n\nAz alsó tagozatos \nházi feladat \nészszerű \nkorlátozása. \n\nA gyermekek délutáni és családi idejének védelme, valamint az önállóan teljesíthető, valóban fejlesztő ", + "qualityScore": 76, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Oktatási és Gyermekügyi Minisztérium \"Legyen élmény a tanulás\" házi feladat javaslatcsomag alsó tagozat" + }, + { + "title": "Itthon: Jöhetnek a 35 perces órák és a kevesebb házi az alsó tagozaton", + "url": "https://hvg.hu/itthon/20260808_johetnek-a-35-perces-orak-es-a-kevesebb-hazi-az-also-tagozaton", + "content": "Itthon: Jöhetnek a 35 perces órák és a kevesebb házi az alsó tagozaton\n\n# Jöhetnek a 35 perces órák és a kevesebb házi az alsó tagozaton\n\nTöbb időt hagynának a pihenésre és a mozgásra is.\n\n- HVG \n\nRövidebb tanórákat, hosszabb szüneteket, kevesebb házi feladatot, valamint több játékot, mesét és mozgást javasol az Oktatási és Gyermekügyi Minisztérium az alsó tagozatos oktatás megújítására. Kókayné Lányi Marietta közoktatásért felelős államtitkár „Legyen élmény a tanulás!” címmel küldte el az iskoláknak a gyermekközpontúbb oktatást célzó javaslatcsomagot.\n\nAz egyik legfontosabb változás a tanórák hosszát érintheti. A minisztérium azt javasolja az iskoláknak, hogy vizsgálják meg a 35 perces tanítási órák bevezetésének lehetőségét. Emellett hosszabb, többféle tevékenységet összekapcsoló tanulási blokkokat is kialakíthatnának. A reggelek is lazábban indulhatnának: a tanítás előtt beszélgetőkör, közös olvasás, mesehallgatás vagy mozgás segíthetné a gyerekek ráhangolódását.\n\nJelentősen változh", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban Magyarország kutatás adatok felmérés 2025 2026" + }, + { + "title": "Gazdaság: Így változik az életünk szeptember 1-től", + "url": "https://hvg.hu/gazdasag/20260901_igy-valtozik-az-eletunk-szeptember-1-tol", + "content": "Gazdaság: Így változik az életünk szeptember 1-től\n\n# Így változik az életünk szeptember 1-től\n\nA legtöbben az iskolakezdésre készülnek, de ezen túl is több fontos változás jön keddtől. \n\n- HVG \n\nSzeptember elsejével nemcsak az ősz érkezik meg (igaz, még azért elég meleg lesz), hanem számtalan egyéb változás is meghatározza majd az életünket.\n\n## Jön a suli, jönnek a dugók\n\nA legtöbb magyar életében vélhetően az iskolakezdés (és persze óvoda-, bölcsődekezdés) hozza a legnagyobb változást. Ez ugyanis nemcsak a gyerekeseket érinti, hanem a növekvő forgalom miatt azokat is, akik nem egy oktatási intézményben kezdik mostantól a mindennapjaikat: nemcsak több autó lesz az utakon, hanem a buszokon is kevesebb helyünk lesz, hogy kényelmesen utazzunk – bár igaz, a BKK is sűrűbb menetrenddel és nagyobb kapacitással működik keddtől. A fővárosi közlekedők számára az is fontos információ, hogy szeptembertől változik a pesti alsó rakpart autómentes időszaka, \n\na diákok számára pedig az, hogy mostant", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban Magyarország kutatás adatok felmérés 2025 2026" + }, + { + "title": "KÖZNEVELÉS 2025", + "url": "https://www.parlament.hu/documents/d/guest/infotablo_2025_43_kozneveles_2025", + "content": "ORSZÁGGYŰLÉS HIVATALA KÖZGYŰJTEMÉNYI ÉS KÖZMŰVELŐDÉSI IGAZGATÓSÁG KÉPVISELŐI INFORMÁCIÓS SZOLGÁLAT\n\nóvoda\n\n710,5\n\n547,2\n\n429,1\n\n324,9\n\n### KÖZNEVELÉSBEN RÉSZTVEVŐ GYERMEKEK, TANULÓK SZÁMA (ezer fő)\n\nAz egyes középfokú intézménytípusok között lényeges különbségek nincsenek. A ’24/25-ös tanévben a technikumokban, szakgimnáziumokban és gimnáziumokban egy pedagógusra átlagosan 10,2, a szakképző iskolákban pedig 10,1 tanuló jutott.\n\n1\n\n2025. NOVEMBER 28.\n\n2025 43\n\nRendszeresen publikált Infotablónk célja egyes oktatási mutatók ismertetése. A kiadvány évente jelenik meg, a legfrissebb nyilvános adatokon alapul. Magyarországra fókuszál, de esetenként nemzetközi összehasonlító adatokat is közöl.\n\nKÖZNEVELÉS 2025 óvodás gyermek középiskolai tanuló* általános iskolai tanuló* * nappali oktatásban\n\n397,3\n\n1001,7\n\n#### EGY PEDAGÓGUSRA JUTÓ GYERMEK, ILLETVE TANULÓ (fő)\n\n2009/2010 2024/2025\n\n328,5\n\n581,9\n\n773,7 10,9 10,4\n\náltalános iskola közép iskola\n\n10,4 9,7\n\n12,0 10,0\n\n#### TANÁRI FIZETÉSEK (ALSÓ", + "qualityScore": 94, + "sourceType": "results", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban Magyarország kutatás adatok felmérés 2025 2026" + } + ], + "sourceAssessments": [], + "meta": { + "requestedModel": "anthropic/claude-sonnet-5.5", + "resolvedModel": "anthropic/claude-sonnet-5.5", + "debateContext": { + "debateId": "cf057d21-3472-4faf-bba4-9be4341032b6", + "sourcesUsed": 0, + "sourcesOmittedForSize": 0, + "sourcesShortened": 0, + "sourcesUnavailable": 0, + "outputsUsed": [], + "outputsOmittedForSize": [], + "outputsUnavailable": 0, + "instructionsUsed": false + } + } + }, + "providerCalls": [ + { + "feature": "research-queries", + "requestedModel": "anthropic/claude-haiku-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 2097, + "stream": false + }, + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 248, + "stream": null + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 28506, + "stream": true, + "userPromptHead": "Motion: Ez a Ház betiltaná a házi feladatot az általános iskolákban\nSide: pro\nFormat: custom\nRole: r1\nLength: standard\nLength Instruction: Return exactly 3 contentions. Give each a clear explanation, evidence, and why it matters.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the arguments and the closing line together stay within about 600 words, leaving time for the \"If they say...\" answers the speaker picks. With 3 arguments, each argument is about 170 spoken words: claim one sentence of at most 20 words, reasoning about 75 words, evidence about 50 words, whyItMatters about 25 words. opening.hook and caseStructure.thesis at most 35 words each, closingLine one sentence of at most 25 words. Aim for these numbers, not under them: a shorter field leaves the speaker's time unused, a longer one runs past it.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: Hungarian (hu) - Write ALL output in this language.", + "debateContextIncluded": true + } + ] + }, + "r2": { + "request": { + "feature": "generate", + "input": { + "motion": "Ez a Ház betiltaná a házi feladatot az általános iskolákban", + "side": "pro", + "format": "custom", + "role": "r2", + "length": "standard", + "audience": "intermediate", + "tone": "formal", + "language": "hu" + }, + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "reasoningEffort": "low", + "sourceIds": [ + "32a9dd03-814f-4f15-8bf1-a88c2c9aba7b", + "5137bb5f-874f-4a4f-afc4-1d626997cfe4", + "f575affc-41e0-4c62-8549-4380343aa26a", + "a64ecbd6-7239-4e1a-8318-5fe29516c248", + "17147139-272b-4f10-b5d4-f852678876a1" + ], + "debateContext": { + "debateId": "cf057d21-3472-4faf-bba4-9be4341032b6", + "side": "pro", + "sourceIds": [ + "32a9dd03-814f-4f15-8bf1-a88c2c9aba7b", + "5137bb5f-874f-4a4f-afc4-1d626997cfe4", + "f575affc-41e0-4c62-8549-4380343aa26a", + "a64ecbd6-7239-4e1a-8318-5fe29516c248", + "17147139-272b-4f10-b5d4-f852678876a1" + ], + "outputs": [ + { + "kind": "case", + "id": "f3fd8f7b-af33-48e9-9f61-813af5ce5d0f" + } + ] + }, + "stream": true, + "resultKey": "req_1793726499840_m1rcl4" + }, + "response": { + "output": { + "opening": { + "hook": "Az iskolák azt mondják, hogy a gyerekekért dolgoznak. De ha ez igaz, miért van az, hogy a hatéves gyerek délutánja is az iskolai nap folytatása?" + }, + "caseStructure": { + "thesis": "Én vagyok a csapatunk R2-je, és azt fogom megmutatni, hogy a házi feladatot az általános iskolákban be kell tiltani, mert elveszi a gyerekektől a pihenést, és a családi háttér szerint osztja szét az esélyeket." + }, + "contentions": [], + "counters": [ + { + "targetArgument": "A házi feladat megtanít önállóan tanulni és felelősséget vállalni.", + "counterpoint": "Ez nem igaz arra a korosztályra, amelyről beszélünk. Egy hatéves gyerek leckéje gyakran a szülő munkája lesz, és ott nem a gyerek vállal felelősséget. Maga az Oktatási és Gyermekügyi Minisztérium is úgy látja, hogy az alsó tagozatban az első osztályban és az egész napos iskolákban lehetőség szerint ne legyen kötelező otthoni írásbeli feladat (HVG, 2026). A minisztérium ugyanebben a csomagban azt kéri, hogy a gyakorlás önállóan teljesíthető és valóban fejlesztő legyen (Oktatási és Gyermekügyi Minisztérium, 2026). Vagyis maga az oktatási tárca nem a leckétől várja az önállóságot. Önállóságot lehet tanítani iskolai projektekkel és önálló munkával, tanári segítséggel. Ha a lecke tényleg felelősségre nevel, miért akarja az oktatási minisztérium kivenni az első osztályból? Ez az első érvünk: a délután a gyereké, nem az iskola meghosszabbítása.", + "source": "HVG, 2026" + }, + { + "targetArgument": "Lecke nélkül a gyerekek lemaradnak, mert az iskolában nincs elég idő gyakorolni.", + "counterpoint": "Éppen fordítva: az iskolai gyakorlás tanári segítséggel többet ér, mint az esti lecke egyedül. Otthon nincs ott a tanár, aki észreveszi a hibát, és a gyerek akár rossz megoldást is begyakorolhat. A minisztérium csomagja a tanórák rugalmasabb szervezését javasolja, például 35 perces órákat és hosszabb tanulási blokkokat (HVG, 2026). A délutáni foglalkozások pedig kevésbé hasonlítanának a délelőtti órák folytatására (HVG, 2026). Az iskolai nap átszervezhető úgy, hogy a gyakorlás beleférjen. Ha a gyerek egész nap bent van, miért ne férne bele a gyakorlás ebbe az időbe? Ráadásul a lecke nélkül sem marad el a tanulás: csak az iskola veszi át a felelősséget érte. Ez kapcsolódik az első érvünkhöz, a pihenéshez, és a másodikhoz is: az iskolában mindenki ugyanazt a segítséget kapja.", + "source": "HVG, 2026" + }, + { + "targetArgument": "A magyar szülők többsége ragaszkodik a házi feladathoz, ezért a tilalom nem lenne elfogadott.", + "counterpoint": "A megszokás nem érv arra, hogy valami jó a gyereknek. Az Eduline 2024-es cikke éppen azt idézi, hogy sok szülő azzal érvel: nekem is volt, ez mindig így volt (Eduline, 2024). Ez hagyomány, nem indok. Ugyanez a cikk azt is rögzíti, hogy Magyarországon nincs egységes szabályozás a házi feladatról, így iskolánként teljesen eltérhet, mennyi leckét kapnak a gyerekek (Eduline, 2024). Ez a második érvünk lényege: ha minden iskola maga dönt, a gyerekek eltérő feltételek között tanulnak. Közben maga a minisztérium is a lecke korlátozását javasolja az alsó tagozatban, hogy megvédje a gyerekek délutánját és a családi időt (Családinet, 2026). Ha a szabályozás szükséges, miért ne lehetne mindenkinek ugyanaz a szabály? Az elfogadottságnál fontosabb, hogy a gyerekeknek igazságos és egységes feltételeket adjunk.", + "source": "Eduline, 2024" + }, + { + "targetArgument": "A teljes tilalom túl szigorú, elég a mennyiség korlátozása, ahogy a minisztérium ajánlja.", + "counterpoint": "Éppen a minisztérium csomagja mutatja, hogy a korlátozás nem elég. Ez ajánlás, nem szabály: az iskolák csak megvizsgálhatják, mit vezetnek be (Elhetomagyarorszag.hu, 2026). Első osztályban is csak azt javasolják, hogy lehetőség szerint ne legyen kötelező írásbeli lecke, hétvégére pedig csak kivételesen adnának (HVG, 2026). A „lehetőség szerint” és a „kivételesen” nem kötelezettség. Az iskolák évfolyamonként maguk döntenék el, mennyi az elfogadható (HVG, 2026). Ez azt jelenti, hogy két szomszéd iskolában két különböző gyerek más-más terhet cipel haza. Ha a mennyiség korlátozása elég lenne, miért kell a minisztériumnak külön csomagot küldenie az iskoláknak? Egységes szabály nélkül marad az egyenlőtlenség. Ez a második érvünk. A gyerek pihenéshez való joga pedig, az első érvünk, nem lehet véletlen kérdése.", + "source": "HVG, 2026" + }, + { + "targetArgument": "Az iskolák és a tanárok jobban tudják, mennyi lecke kell, ezért ne az állam döntsön helyettük.", + "counterpoint": "Ma sincs egységes szabály, ezért intézményenként teljesen eltérhet, mekkora a lecketerhelés (Eduline, 2024). Egy iskola pedagógiai programja dönt, a gyerek viszont nem választhat iskolát a leckemennyiség alapján. Az eredmény az, hogy a család helyzete és a lakóhely számít, nem a gyerek igénye. Ez pontosan a második érvünk: a lecke ott sújt a legjobban, ahol otthon nincs segítség és nyugodt hely. Az állam sem tenne mást, mint ami a közoktatásban megszokott: közös keretet ad, a tanár pedig az iskolai órán szabadon tanít és gyakoroltat. A minisztérium maga is úgy látja, hogy a lecke ne vegyen el indokolatlanul sok időt a délutánból és a családi időből (Elhetomagyarorszag.hu, 2026). Ha ez a cél, miért bízzuk véletlenre? A gyerekek pihenése, az első érvünk, minden iskolában ugyanannyit ér.", + "source": "Eduline, 2024" + }, + { + "targetArgument": "A lengyel tilalom nem bizonyítja, hogy ez Magyarországon is működne, és a pedagógusok kételkednek benne.", + "counterpoint": "Nem azt állítjuk, hogy Lengyelország bizonyíték, hanem azt, hogy a tilalom megvalósítható: 2024 januárjában a lengyel oktatási miniszter be is tiltotta a házi feladatot az általános iskolákban (Eduline, 2024). Magyarországon pedig nem kell külföldre néznünk. A saját minisztériumunk is arra indult el, hogy kevesebb legyen a lecke, és első osztályban, egész napos iskolában lehetőség szerint ne legyen kötelező otthoni írásbeli feladat (HVG, 2026). A tilalom ennek a következetes végigvitele. A pedagógusok kételyét pedig nem a gyerekek pihenése, hanem a megszokás táplálja. Ugyanez a cikk azt mutatja, hogy sok szülő is csak azt mondja: „nekem is volt, ez mindig így volt” (Eduline, 2024). Ez hagyomány, nem érv. Ha a lecke nem hiányzik a gyereknek, mi indokolja, hogy megtartsuk? Ez az első és a második érvünk együtt: pihenés mindenkinek, egyenlő feltételek mindenkinek.", + "source": "Eduline, 2024" + }, + { + "targetArgument": "A házi feladat a szülőket is bevonja, és segít látni, mit tanul a gyerek.", + "counterpoint": "A szülői bevonódás nem azt jelenti, hogy a gyereknek esténként kötelezően leckét kell írnia. A minisztérium csomagja is azt kéri, hogy az iskolai kötelezettségek ne vegyenek el indokolatlanul sok időt a gyerekek délutánjából és a családdal töltött időből (Elhetomagyarorszag.hu, 2026). Ugyanez a csomag első osztályban és egész napos iskolában lehetőség szerint megszüntetné a kötelező otthoni írásbeli feladatot (HVG, 2026). Vagyis maga a szakpolitika sem a leckében látja a családi kapcsolat eszközét. A szülő a mesehallgatásból, a beszélgetésből, a közös olvasásból is látja, mit tanul a gyerek. Hol van a bevonódás, ha a szülő a hatéves gyerek mellett este hétkor a hibákat javítgatja? Ezt a szülőt a lecke nem bevonja, hanem kiszolgáltatja a időhiánynak. Ez pontosan az első érvünk: a délután a pihenésé és a családé. A második érvünk is ide tartozik: ahol nincs otthon segítő szülő, ott a lecke nem híd, hanem hátrány.", + "source": "HVG, 2026" + }, + { + "targetArgument": "A gyakorlás ismétlést igényel, és az iskolai idő erre nem elég, főleg 35 perces órák mellett.", + "counterpoint": "A gyakorláshoz nem otthoni lecke kell, hanem jól megtervezett iskolai idő. A minisztérium javaslata nem csak rövidebb órákról szól, hanem hosszabb, összevont tanulási blokkokról is, amelyekben többféle tevékenység fér el (CsaládiNet, 2026). A délutáni foglalkozások pedig a javaslat szerint ne a délelőtti órák folytatásai legyenek, hanem szabad játék, mozgás, mese kapjon helyet (HVG, 2026). Ebből látszik, hogy az iskolai napot át lehet szervezni úgy, hogy a gyakorlás beleférjen, a gyerek pedig ne vigye haza a munkát. Ráadásul a 35 perces óra csak lehetőség, amelyet az iskolák megvizsgálhatnak, nem kötelező (Elhetomagyarorszag.hu, 2026). Ha az iskola rövidebb órát választ, az iskola dolga a gyakorlás idejét is megoldani. Ha a gyerek reggel nyolctól délutánig bent van, miért kellene este is ismételnie? A tanár az iskolában azonnal javít, otthon senki. Ez a második érvünk: egységes szabály, mindenkinek ugyanaz a támogatás.", + "source": "CsaládiNet, 2026" + }, + { + "targetArgument": "A tilalom a felső tagozatra és a továbbtanulásra felkészítést is lehetetlenné tenné.", + "counterpoint": "A mai javaslat az általános iskola kisebb gyerekeiről szól, és a mi álláspontunk is az, hogy a tanulásnak az iskolai időben kell megtörténnie, tanári segítséggel. A felkészítés nem tűnik el azzal, hogy a lecke eltűnik: az iskola tanórán, korrepetáláson, délutáni foglalkozáson is fel tudja készíteni a tanulókat. A minisztérium csomagja is azt mutatja, hogy a hangsúly az önállóan teljesíthető, valóban fejlesztő feladatokon van, nem a mennyiségen (Oktatási és Gyermekügyi Minisztérium, 2026). Aki a továbbtanulásra készül, annak a magas színvonalú iskolai gyakorlás kell, nem az, hogy a szülő háttere döntsön. Ha a felvételire csak az készülhet fel jól, akinek otthon van segítség, akkor a lecke a családi háttér szerint válogat. Ez a második érvünk. Az első érvünk pedig az, hogy a fáradt gyerek másnap kevésbé figyel, tehát a felkészülést is rontja a túlterhelés.", + "source": "Oktatási és Gyermekügyi Minisztérium, 2026" + }, + { + "targetArgument": "A pihenésre elég idő jut, mert a legtöbb gyereknek nem soknyi lecke van, a probléma csak a túlzás.", + "counterpoint": "Ha a probléma csak a túlzás, akkor miért nincs rá szabály? Magyarországon nincs egységes szabályozás, minden iskola a saját pedagógiai programjában dönti el, mennyi házi feladat jár (Eduline, 2024). Vagyis egyik iskolában kevés a lecke, a másikban sok, és a gyereknek nincs mibe kapaszkodnia. A minisztérium 2026-os csomagja szerint is az iskoláknak kell meghatározniuk, mennyi házi feladatot tartanak elfogadhatónak, és a hétvégére, szünetekre csak kivételesen adnának kötelező feladatot (HVG, 2026). Ez azt mutatja, hogy a terhelés valódi gond, különben nem kellene ilyen javaslat. Egy kisgyerek délutánja nem azon múlik, hogy melyik tanárhoz került. Ha a túlzás ellen szabály kell, akkor a legbiztosabb szabály a tilalom. Ez pontosan az első érvünk: az iskola utáni idő a pihenésé, a játéké és a családé.", + "source": "Eduline, 2024" + }, + { + "targetArgument": "Az egyenlőtlenséget a tanodák és az iskolai felzárkóztatás kezeli, nem kell hozzá tilalom.", + "counterpoint": "A felzárkóztatás a következményt kezeli, a lecke pedig az okot adja. Amíg minden gyerek kap házi feladatot, addig lesz olyan, akinek otthon nincs segítség, és csak utólag próbáljuk helyrehozni a hátrányt. Miért adnánk fel előbb a leckét, hogy aztán külön program kelljen a bajra? A minisztérium maga is azt javasolja, hogy első osztályban és az egész napos iskolákban lehetőség szerint ne legyen kötelező otthoni írásbeli feladat (HVG, 2026). Ez azt jelzi, hogy a döntéshozók is a lecke csökkentésében látják a megoldást, nem a pótlásban. A csomag emellett csak ajánlás, az iskolák maguk döntenek, így az egyenlőtlenség az iskolák között is megmarad (Elhető Magyarország, 2026). Egy egységes szabály mindenkinek ugyanazt adja. Ez a második érvünk: aki otthon nem kap segítséget, azt nem kell leckével hátrányba hozni.", + "source": "HVG, 2026" + }, + { + "targetArgument": "Egy tilalom végrehajthatatlan, mert a tanárok és a szülők úgyis adnának otthoni feladatot.", + "counterpoint": "Az, hogy valamit nehéz betartatni, nem jelenti azt, hogy rossz szabály. Ha így lenne, akkor semmilyen szabályt nem hoznánk. A magyar iskolák már most is írásban rögzítik a házi feladat szabályait: ha egy iskola a minisztériumi javaslatból választ, azt az órarendben, a munkatervben és szükség esetén a pedagógiai programban is rögzíteni kell (Elhető Magyarország, 2026). Vagyis az iskolák képesek ellenőrizhető, leírt szabályokat követni. A szülőket pedig éppen a világos szabály védi: ma a szülő nem tudja, mire számíthat, mert minden intézmény mást ír elő (Eduline, 2024). Ha a tanár nem adhat leckét, a szülőnek sincs mihez igazodnia. Ha a tilalom tényleg végrehajthatatlan, miért ajánlja már most a minisztérium az iskoláknak a lecke korlátozását? Ez a második érvünket erősíti: egységes szabály nélkül a családi háttér dönt.", + "source": "Elhető Magyarország, 2026" + } + ], + "reinforce": [ + { + "argument": "Első érvünk: a gyereknek pihenés jár", + "text": "Az első érvünk arról szólt, hogy az iskola utáni idő a pihenésé, a játéké és a családé. Ezt ma már az oktatási minisztérium is kimondja: 2026 augusztusában azt javasolta, hogy az iskolai kötelezettségek ne vegyenek el indokolatlanul sok időt a gyerekek délutánjából és a családdal töltött időből (Elhetomagyarorszag.hu, 2026). Első osztályban és az egész napos iskolákban lehetőség szerint nem lenne kötelező otthoni írásbeli feladat (HVG, 2026). A tárca hosszabb mozgásos szüneteket és nyugodtabb ebédidőt is javasol (Családinet, 2026). Ez azt jelenti, hogy a fáradt kisgyerek nem kap újabb munkát az iskolai nap után. Ha a mostani terhelés rendben lenne, a minisztérium nem akarná csökkenteni." + }, + { + "argument": "Második érvünk: a lecke egyenlőtlenséget szül", + "text": "A második érvünk az egyenlőtlenségről szólt: a lecke azokat sújtja, akiknek otthon nincs segítség, nyugodt hely vagy idő. Magyarországon nincs egységes szabályozás, ezért intézményenként teljesen eltérhet, milyen előírások vonatkoznak a házi feladatra (Eduline, 2024). Az adott iskola pedagógiai programja dönti el, mikor és mennyit adhatnak fel a tanárok (Eduline, 2024). Vagyis két gyerek, két iskolában, teljesen más terhelést kap, és ez nem a tudásukon múlik. A minisztérium csomagja is csak ajánlás, nem szabály (Elhetomagyarorszag.hu, 2026). Ha minden gyakorlás az iskolában történik, mindenkinek ugyanazok a feltételei. Ezért kell egységes szabály, nem ajánlás." + } + ], + "closingLine": "Ezért világos, hogy a házi feladatot be kell tiltani az általános iskolákban: a gyereknek pihenés jár, és minden gyereknek egyenlő esélyt kell adnunk. Köszönöm.", + "sources": [ + { + "org": "HVG", + "claim": "Első osztályban és egész napos iskolában nem lenne kötelező az írásbeli házi, 35 perces órák, átszervezett délután", + "year": "2026", + "url": "https://hvg.hu/itthon/20260808_johetnek-a-35-perces-orak-es-a-kevesebb-hazi-az-also-tagozaton" + }, + { + "org": "Eduline", + "claim": "A szülők ragaszkodása megszokás, Magyarországon nincs egységes szabály a házi feladatra", + "year": "2024", + "url": "https://eduline.hu/kozoktatas/20240124_Mennyi-hazi-feladatot-adhatnak-fel-a-tanarok" + }, + { + "org": "Családinet", + "claim": "A minisztérium a házi feladat korlátozását és hosszabb szüneteket javasol", + "year": "2026", + "url": "https://www.csaladinet.hu/hirek/gyerekneveles/iskolas/36840/kevesebb_hazi_feladat_hosszabb_szunetek_es_35_perces_orak_johetnek_az_also_tagozatban" + }, + { + "org": "Elhetomagyarorszag.hu", + "claim": "A házi feladat korlátozása a délután és a családi idő védelmére, egyelőre csak ajánlás", + "year": "2026", + "url": "https://elhetomagyarorszag.hu/index.php/2026/08/08/35-perces-tanora-hazi-feladat-korlatozas/" + }, + { + "org": "Oktatási és Gyermekügyi Minisztérium", + "claim": "Az önállóan teljesíthető, valóban fejlesztő gyakorlás előtérbe helyezése", + "year": "2026", + "url": "https://www.munkacsysuli.hu/_upload/editor/Dokumentumok/Javaslatcsomag-2.pdf" + } + ], + "metadata": { + "side": "pro", + "format": "custom", + "generatedAt": "2026-11-03T12:00:00Z", + "model": "anthropic/claude-sonnet-5.5", + "provider": "openrouter", + "sourceUsage": [], + "durationMs": 33887 + } + }, + "discoveredSources": [ + { + "title": "KÖZNEVELÉS 2025", + "url": "https://www.parlament.hu/documents/d/guest/infotablo_2025_43_kozneveles_2025", + "content": "ORSZÁGGYŰLÉS HIVATALA KÖZGYŰJTEMÉNYI ÉS KÖZMŰVELŐDÉSI IGAZGATÓSÁG KÉPVISELŐI INFORMÁCIÓS SZOLGÁLAT\n\nóvoda\n\n710,5\n\n547,2\n\n429,1\n\n324,9\n\n### KÖZNEVELÉSBEN RÉSZTVEVŐ GYERMEKEK, TANULÓK SZÁMA (ezer fő)\n\nAz egyes középfokú intézménytípusok között lényeges különbségek nincsenek. A ’24/25-ös tanévben a technikumokban, szakgimnáziumokban és gimnáziumokban egy pedagógusra átlagosan 10,2, a szakképző iskolákban pedig 10,1 tanuló jutott.\n\n1\n\n2025. NOVEMBER 28.\n\n2025 43\n\nRendszeresen publikált Infotablónk célja egyes oktatási mutatók ismertetése. A kiadvány évente jelenik meg, a legfrissebb nyilvános adatokon alapul. Magyarországra fókuszál, de esetenként nemzetközi összehasonlító adatokat is közöl.\n\nKÖZNEVELÉS 2025 óvodás gyermek középiskolai tanuló* általános iskolai tanuló* * nappali oktatásban\n\n397,3\n\n1001,7\n\n#### EGY PEDAGÓGUSRA JUTÓ GYERMEK, ILLETVE TANULÓ (fő)\n\n2009/2010 2024/2025\n\n328,5\n\n581,9\n\n773,7 10,9 10,4\n\náltalános iskola közép iskola\n\n10,4 9,7\n\n12,0 10,0\n\n#### TANÁRI FIZETÉSEK (ALSÓ", + "qualityScore": 94, + "sourceType": "results", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban Magyarország kutatás adatok felmérés 2025 2026" + }, + { + "title": "Gazdaság: Így változik az életünk szeptember 1-től", + "url": "https://hvg.hu/gazdasag/20260901_igy-valtozik-az-eletunk-szeptember-1-tol", + "content": "Gazdaság: Így változik az életünk szeptember 1-től\n\n# Így változik az életünk szeptember 1-től\n\nA legtöbben az iskolakezdésre készülnek, de ezen túl is több fontos változás jön keddtől. \n\n- HVG \n\nSzeptember elsejével nemcsak az ősz érkezik meg (igaz, még azért elég meleg lesz), hanem számtalan egyéb változás is meghatározza majd az életünket.\n\n## Jön a suli, jönnek a dugók\n\nA legtöbb magyar életében vélhetően az iskolakezdés (és persze óvoda-, bölcsődekezdés) hozza a legnagyobb változást. Ez ugyanis nemcsak a gyerekeseket érinti, hanem a növekvő forgalom miatt azokat is, akik nem egy oktatási intézményben kezdik mostantól a mindennapjaikat: nemcsak több autó lesz az utakon, hanem a buszokon is kevesebb helyünk lesz, hogy kényelmesen utazzunk – bár igaz, a BKK is sűrűbb menetrenddel és nagyobb kapacitással működik keddtől. A fővárosi közlekedők számára az is fontos információ, hogy szeptembertől változik a pesti alsó rakpart autómentes időszaka, \n\na diákok számára pedig az, hogy mostant", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban Magyarország kutatás adatok felmérés 2025 2026" + }, + { + "title": "Itthon: Jöhetnek a 35 perces órák és a kevesebb házi az alsó tagozaton", + "url": "https://hvg.hu/itthon/20260808_johetnek-a-35-perces-orak-es-a-kevesebb-hazi-az-also-tagozaton", + "content": "Itthon: Jöhetnek a 35 perces órák és a kevesebb házi az alsó tagozaton\n\n# Jöhetnek a 35 perces órák és a kevesebb házi az alsó tagozaton\n\nTöbb időt hagynának a pihenésre és a mozgásra is.\n\n- HVG \n\nRövidebb tanórákat, hosszabb szüneteket, kevesebb házi feladatot, valamint több játékot, mesét és mozgást javasol az Oktatási és Gyermekügyi Minisztérium az alsó tagozatos oktatás megújítására. Kókayné Lányi Marietta közoktatásért felelős államtitkár „Legyen élmény a tanulás!” címmel küldte el az iskoláknak a gyermekközpontúbb oktatást célzó javaslatcsomagot.\n\nAz egyik legfontosabb változás a tanórák hosszát érintheti. A minisztérium azt javasolja az iskoláknak, hogy vizsgálják meg a 35 perces tanítási órák bevezetésének lehetőségét. Emellett hosszabb, többféle tevékenységet összekapcsoló tanulási blokkokat is kialakíthatnának. A reggelek is lazábban indulhatnának: a tanítás előtt beszélgetőkör, közös olvasás, mesehallgatás vagy mozgás segíthetné a gyerekek ráhangolódását.\n\nJelentősen változh", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban Magyarország kutatás adatok felmérés 2025 2026" + }, + { + "title": "35 perces tanóra jöhet, a házi feladatot is korlátoznák", + "url": "https://elhetomagyarorszag.hu/index.php/2026/08/08/35-perces-tanora-hazi-feladat-korlatozas/", + "content": "35 perces tanóra jöhet, a házi feladatot is korlátoznák\n\n# Jöhet a 35 perces tanóra: az alsósok házi feladatát is korlátoznák\n\nÍrta:\n\nGeschitz József\n\n2026.08.08.\n\nA 35 perces tanóra bevezetésének lehetőségét is megvizsgálhatják az általános iskolák az alsó tagozatokon. Az Oktatási és Gyermekügyi Minisztérium 14 pontos ajánláscsomagja emellett kevesebb házi feladatot, hosszabb mozgásos szüneteket, nyugodtabb ebédidőt és gyermekközpontúbb oktatást szorgalmaz.\n\n## 35 perces tanóra jöhet az alsó tagozatokon\n\nAz Oktatási és Gyermekügyi Minisztérium szombaton tette közzé az alsó tagozatos oktatás megújítását célzó, 14 pontból álló ajánláscsomagját.\n\nA Kókayné Lányi Marietta közoktatásért felelős államtitkár által jegyzett dokumentum egyik legfontosabb eleme, hogy az iskolák vizsgálják meg a 35 perces tanítási órák bevezetésének lehetőségét.\n\nFontos ugyanakkor, hogy egyelőre ajánlásról van szó, vagyis a dokumentum nem jelenti azt, hogy szeptembertől minden magyar általános iskolában automati", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban official data evidence 2025 2026" + }, + { + "title": "Kevesebb házi feladat, hosszabb szünetek és 35 perces órák jöhetnek az alsó tagozatban – CsaládiNet", + "url": "https://www.csaladinet.hu/hirek/gyerekneveles/iskolas/36840/kevesebb_hazi_feladat_hosszabb_szunetek_es_35_perces_orak_johetnek_az_also_tagozatban", + "content": "Kevesebb házi feladat, hosszabb szünetek és 35 perces órák jöhetnek az alsó tagozatban – CsaládiNet\n\n# Kevesebb házi feladat, hosszabb szünetek és 35 perces órák jöhetnek az alsó tagozatban\n\n2026. 08. 10. Családinet\n\nRugalmasabb napkezdést, több mozgást, hosszabb szüneteket és kevesebb otthoni feladatot is javasolnak az általános iskoláknak. Az új lehetőségekből már a szeptemberben kezdődő tanévben is válogathatnak az intézmények.\n\nNem feltétlenül ugyanúgy indul majd a tanítás minden általános iskolában szeptembertől. Az Oktatási és Gyermekügyi Minisztérium 14 pontos szakmai javaslatcsomagot küldött az intézményeknek, amely az alsó tagozatos gyerekek terhelésének csökkentését és a gyerekekhez jobban igazodó tanulásszervezést célozza.\n\nA javaslatok között egészen konkrét változtatások is szerepelnek: például a 35 perces tanítási órák lehetőségének megvizsgálása, hosszabb szünetek, kevesebb házi feladat és több játékos, tapasztalati tanulás.\n\n### 35 perces órák és rugalmasabb reggelek\n\nA", + "qualityScore": 75, + "sourceType": "generic", + "qualityLabel": "strong", + "query": "Ez a Ház betiltaná a házi feladatot az általános iskolákban official data evidence 2025 2026" + } + ], + "sourceAssessments": [], + "meta": { + "requestedModel": "anthropic/claude-sonnet-5.5", + "resolvedModel": "anthropic/claude-sonnet-5.5", + "debateContext": { + "debateId": "cf057d21-3472-4faf-bba4-9be4341032b6", + "sourcesUsed": 5, + "sourcesOmittedForSize": 0, + "sourcesShortened": 0, + "sourcesUnavailable": 0, + "outputsUsed": [ + { + "kind": "case", + "id": "f3fd8f7b-af33-48e9-9f61-813af5ce5d0f" + } + ], + "outputsOmittedForSize": [], + "outputsUnavailable": 0, + "instructionsUsed": false + } + } + }, + "providerCalls": [ + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 289, + "stream": null + }, + { + "feature": "research-queries", + "requestedModel": "anthropic/claude-haiku-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 2394, + "stream": false + }, + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 279, + "stream": null + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 8033, + "stream": false, + "userPromptHead": "Motion: Ez a Ház betiltaná a házi feladatot az általános iskolákban\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: Hungarian (hu) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 21698, + "stream": true, + "userPromptHead": "Motion: Ez a Ház betiltaná a házi feladatot az általános iskolákban\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: Hungarian (hu) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 16560, + "stream": false, + "userPromptHead": "Motion: Ez a Ház betiltaná a házi feladatot az általános iskolákban\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: Hungarian (hu) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 15209, + "stream": false, + "userPromptHead": "Motion: Ez a Ház betiltaná a házi feladatot az általános iskolákban\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: Hungarian (hu) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 14955, + "stream": false, + "userPromptHead": "Motion: Ez a Ház betiltaná a házi feladatot az általános iskolákban\nSide: pro\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: Hungarian (hu) - Write ALL output in this language.", + "debateContextIncluded": true + } + ] + }, + "aiRequests": [ + { + "id": "760f4d5e-32fc-4b93-be15-fae731cdbad0", + "user_id": "9e9e64e8-080a-482b-8ade-5bb5abda48db", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 4058, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000170436, + "created_at": "2026-11-03T17:21:09.500009+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000170436, + "input_tokens": 4058, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000170436 + }, + { + "id": "3d6ddaa7-aa02-40d5-b24f-e8cdfe37fbc5", + "user_id": "9e9e64e8-080a-482b-8ade-5bb5abda48db", + "feature": "generate", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "input_tokens": 23820, + "output_tokens": 3843, + "latency_ms": 33962, + "status": "success", + "error_code": null, + "cost_usd": 0.11375800000000004, + "created_at": "2026-11-03T17:21:38.054466+00:00", + "cached_input_tokens": 6480, + "cache_write_tokens": 0, + "reasoning_output_tokens": 0, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "calls": [ + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.068276, + "upstream_inference_prompt_cost": 0.031226, + "upstream_inference_completions_cost": 0.03705 + }, + "total_tokens": 25474, + "prompt_tokens": 21769, + "completion_tokens": 3705, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 6480, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "da123697a8f95db0c2eca960bb09f7a2", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "d291b493ad52538b897d55ed51feb8eb", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "c6c93461fa2fb0ab1872a649ef4ae81a", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.005482, + "upstream_inference_prompt_cost": 0.004102, + "upstream_inference_completions_cost": 0.00138 + }, + "total_tokens": 2189, + "prompt_tokens": 2051, + "completion_tokens": 138, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "13ab5d662e1ce47f1c67a64363074aa2", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "c5b5d6fc436b4a7241bd978ede6999b9", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "4c567f1260388d2601b9ee5bae97119e", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "3aa2bfa88c3ce626eb3ebbd3a702abba", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "c6a0a55e8ce8efe89559f9be2a845e66", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "5838f5c21142f891f7ed5d7dc45e8e45", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "a74379d85caf534c305bb797ca53034d", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + } + ] + }, + "cap_cost_usd": 0.11375800000000004 + }, + { + "id": "c6bb619c-4dcf-48b6-aaec-b536127b30b5", + "user_id": "9e9e64e8-080a-482b-8ade-5bb5abda48db", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 4018, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000168756, + "created_at": "2026-11-03T17:21:40.43894+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000168756, + "input_tokens": 4018, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000168756 + }, + { + "id": "c4d82696-9e52-49e1-847c-5e7d8402f89b", + "user_id": "9e9e64e8-080a-482b-8ade-5bb5abda48db", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 4088, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000171696, + "created_at": "2026-11-03T17:21:44.567335+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000171696, + "input_tokens": 4088, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000171696 + }, + { + "id": "64c6e0f9-9c7f-466e-96d0-7bceeffade07", + "user_id": "9e9e64e8-080a-482b-8ade-5bb5abda48db", + "feature": "generate", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "input_tokens": 138715, + "output_tokens": 9741, + "latency_ms": 33887, + "status": "success", + "error_code": null, + "cost_usd": 0.332338, + "created_at": "2026-11-03T17:22:14.350787+00:00", + "cached_input_tokens": 46480, + "cache_write_tokens": 11620, + "reasoning_output_tokens": 0, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "calls": [ + { + "calls": [ + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.067436, + "upstream_inference_prompt_cost": 0.060176, + "upstream_inference_completions_cost": 0.00726 + }, + "total_tokens": 27909, + "prompt_tokens": 27183, + "completion_tokens": 726, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 11620 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.063568, + "upstream_inference_prompt_cost": 0.032628, + "upstream_inference_completions_cost": 0.03094 + }, + "total_tokens": 30447, + "prompt_tokens": 27353, + "completion_tokens": 3094, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 11620, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.051326, + "upstream_inference_prompt_cost": 0.032686, + "upstream_inference_completions_cost": 0.01864 + }, + "total_tokens": 29246, + "prompt_tokens": 27382, + "completion_tokens": 1864, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 11620, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.053954, + "upstream_inference_prompt_cost": 0.032644, + "upstream_inference_completions_cost": 0.02131 + }, + "total_tokens": 29492, + "prompt_tokens": 27361, + "completion_tokens": 2131, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 11620, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.050582, + "upstream_inference_prompt_cost": 0.032692, + "upstream_inference_completions_cost": 0.01789 + }, + "total_tokens": 29174, + "prompt_tokens": 27385, + "completion_tokens": 1789, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 11620, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + } + ] + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "40752b52b9bd4e85e50e8a392e417ae5", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "fa6524b8efcb10bbda60419f5a8620de", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "0f7b5e17c3e597d2ac77ccc1d7816370", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.005472, + "upstream_inference_prompt_cost": 0.004102, + "upstream_inference_completions_cost": 0.00137 + }, + "total_tokens": 2188, + "prompt_tokens": 2051, + "completion_tokens": 137, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "4c5e4192852410040a617786f9ba36ed", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "c95838cfb58cdbd73e59528521666755", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "5c84fd5f25ea682fa66837bea65f2c4b", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "393d1e64bcd9362121345149c9737ca9", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "5ca2d44c56bffddef73a95fa1f213b7d", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "2bb34b069abd831e6e0cf9beea2c003d", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "666d9b991c20d71e7564ec1e7c801c2b", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + } + ] + }, + "cap_cost_usd": 0.332338 + } + ], + "caseRows": [ + { + "id": "f3fd8f7b-af33-48e9-9f61-813af5ce5d0f", + "title": "Ez a Ház betiltaná a házi feladatot az általános iskolákban", + "side": "pro", + "created_at": "2026-11-03T17:21:38.778817+00:00", + "debates": { + "motion": "Ez a Ház betiltaná a házi feladatot az általános iskolákban", + "settings": { + "role": "general", + "format": "classroom" + } + } + }, + { + "id": "02ffe158-fad9-4ff0-8015-54c5ad287ace", + "title": "Ez a Ház betiltaná a házi feladatot az általános iskolákban", + "side": "pro", + "created_at": "2026-11-03T17:22:14.758949+00:00", + "debates": { + "motion": "Ez a Ház betiltaná a házi feladatot az általános iskolákban", + "settings": { + "role": "general", + "format": "classroom" + } + } + } + ] +} diff --git a/scripts/case-examples/corrections.json b/scripts/case-examples/corrections.json new file mode 100644 index 00000000..c0bc9e95 --- /dev/null +++ b/scripts/case-examples/corrections.json @@ -0,0 +1,89 @@ +[ + { + "id": "levin-2025", + "checked": "2026-11-03", + "note": "Sample 1 (British Parliamentary), first speech: the Levin (2025) study of whether 16-year-olds are mature enough to vote linked to the journal's page at tandfonline.com, which stays behind a Cloudflare check. It now links the author's open preprint of the same paper on APSA Preprints. Its source line also named the wrong journal (the study appeared in the Journal of Elections, Public Opinion and Parties), so the line now names APSA Preprints.", + "changes": [ + { + "sample": "bp-en", + "speech": "r1", + "path": [ + "sources", + 3, + "url" + ], + "from": "https://www.tandfonline.com/doi/full/10.1080/17457289.2025.2560983", + "to": "https://preprints.apsanet.org/engage/apsa/article-details/6886c339728bf9025e8fa41a" + }, + { + "sample": "bp-en", + "speech": "r1", + "path": [ + "sources", + 3, + "org" + ], + "from": "Levin, Taylor & Francis", + "to": "Levin, APSA Preprints" + }, + { + "sample": "bp-en", + "speech": "r1", + "path": [ + "counters", + 0, + "source" + ], + "from": "Levin, Political Studies Review (Taylor & Francis), 2025", + "to": "Levin, APSA Preprints, 2025" + } + ] + }, + { + "id": "senate-commerce-2026", + "checked": "2026-11-03", + "note": "Sample 2 (Policy), first and second speech: the Senate Commerce Committee's February 2026 report on California high-speed rail linked to commerce.senate.gov, which answers Access Denied. It now links the Internet Archive's copy of the same report. The case's wording did not change.", + "changes": [ + { + "sample": "policy-en", + "speech": "r1", + "path": [ + "sources", + 3, + "url" + ], + "from": "https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf", + "to": "https://web.archive.org/web/20260811041844/https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf" + }, + { + "sample": "policy-en", + "speech": "r2", + "path": [ + "sources", + 3, + "url" + ], + "from": "https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf", + "to": "https://web.archive.org/web/20260811041844/https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf" + } + ] + }, + { + "id": "brazil-1988", + "checked": "2026-11-03", + "note": "Sample 1 (British Parliamentary), first speech, first “If they say…” answer: the model wrote that 16-year-olds have voted “since 1984 in Nicaragua and Brazil”. Nicaragua is right, but Brazil has allowed 16-year-olds to vote since 1988: the cited paper (Levin, 2025) and Brazil's 1988 constitution both give 1988. The wording stays as generated, with the correction marked inline.", + "changes": [ + { + "sample": "bp-en", + "speech": "r1", + "path": [ + "counters", + 0, + "counterpoint" + ], + "after": "since 1984 in Nicaragua and Brazil", + "marker": "[correction: Brazil since 1988]" + } + ] + } +] diff --git a/scripts/case-examples/export.py b/scripts/case-examples/export.py new file mode 100644 index 00000000..851ed667 --- /dev/null +++ b/scripts/case-examples/export.py @@ -0,0 +1,45 @@ +"""Copy one generated sample from verify evidence into the repo, unedited. + +python3 scripts/case-examples/export.py +""" +import json +import sys +from pathlib import Path + +src, sample, format_label, out = Path(sys.argv[1]), sys.argv[2], sys.argv[3], Path(sys.argv[4]) + + +def load(name): + return json.loads((src / f"{name}.json").read_text()) + + +def call_summary(call): + # The full prompts hold the scraped research pages; keep the request lines the + # Edge Function wrote (motion, side, format, role, ...) and the model proof. + user = call.get("user") or "" + head = user.split("\n\n", 1)[0] if call.get("feature") == "generate" else None + summary = {key: call.get(key) for key in ("feature", "requestedModel", "upstreamModel", "upstreamProvider", "status", "ms", "stream")} + if head: + summary["userPromptHead"] = head + summary["debateContextIncluded"] = "CURRENT DEBATE CONTEXT" in (call.get("system") or "") + user + return summary + + +run = {key: value for key, value in json.loads((src / "run.json").read_text()).items() if key != "file"} +record = { + "sample": sample, + "debateFormatSetting": format_label, + "howGenerated": "DebateOwl's Generate tool driven in a browser on a local DebateOwl stack (React client, Supabase Auth and Postgres, the ai Edge Function) with live OpenRouter and Exa: start a debate with the motion and format, generate R1, then R2 in the same debate. Every chat call was pinned to anthropic/claude-sonnet-5.5 on the Anthropic provider.", + "run": run, +} +for speech in ("r1", "r2"): + record[speech] = { + "request": load(f"{speech}-request"), + "response": load(f"{speech}-response"), + "providerCalls": [call_summary(call) for call in load(f"{speech}-provider-calls")], + } +record["aiRequests"] = load("ai-requests") +record["caseRows"] = load("case-rows") +out.mkdir(parents=True, exist_ok=True) +(out / f"{sample}.json").write_text(json.dumps(record, ensure_ascii=False, indent=2) + "\n") +print(out / f"{sample}.json") diff --git a/scripts/case-examples/policy-en.json b/scripts/case-examples/policy-en.json new file mode 100644 index 00000000..1347d9bf --- /dev/null +++ b/scripts/case-examples/policy-en.json @@ -0,0 +1,1165 @@ +{ + "sample": "policy-en", + "debateFormatSetting": "Policy", + "howGenerated": "DebateOwl's Generate tool driven in a browser on a local DebateOwl stack (React client, Supabase Auth and Postgres, the ai Edge Function) with live OpenRouter and Exa: start a debate with the motion and format, generate R1, then R2 in the same debate. Every chat call was pinned to anthropic/claude-sonnet-5.5 on the Anthropic provider.", + "run": { + "test": "case example policy-en", + "project": "desktop-chromium", + "commit": "a9f69b38ccd3ab43d15d6e82ab1963cc74b1b723", + "mode": "live", + "liveModel": "anthropic/claude-sonnet-5.5", + "baseURL": "http://127.0.0.1:18081", + "startedAt": "2026-11-03T17:18:01.925Z" + }, + "r1": { + "request": { + "feature": "generate", + "input": { + "motion": "Resolved: The United States federal government should substantially increase its investment in high-speed rail", + "side": "con", + "format": "custom", + "role": "r1", + "length": "standard", + "audience": "intermediate", + "tone": "formal", + "language": "en" + }, + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "reasoningEffort": "low", + "sourceIds": [], + "debateContext": { + "debateId": "b1c5b37a-2b9a-4fda-81b1-68a3c8c612d1", + "side": "con", + "sourceIds": [], + "outputs": [] + }, + "stream": true, + "resultKey": "req_1793726287619_di42mh" + }, + "response": { + "output": { + "opening": { + "hook": "California has spent years building a bullet train and has no passenger service to show for it. Before Washington pours in billions more, we should ask what the last billions bought." + }, + "caseStructure": { + "thesis": "Today we will show 3 arguments that prove the federal government should not substantially increase its investment in high-speed rail: it wastes money, it rests on weak demand, and it takes funding from rail that works." + }, + "contentions": [ + { + "id": "1", + "title": "Megaprojects Burn Federal Money", + "claim": "High-speed rail projects in the United States repeatedly fail to deliver on time and on budget, so more federal money would be wasted.", + "reasoning": "Federal grants are paid out over many years against promised schedules and budgets. When a project misses deadlines and its costs rise, taxpayers keep paying while the finished service never arrives. California is the largest test case. If the biggest federal bet has not delivered, adding more funding to the same model repeats the failure at a larger scale.", + "evidence": "The Federal Railroad Administration's 2025 compliance review of California's project found 9 key findings, including missed deadlines, budget shortfalls and overstated ridership. In July 2025 the FRA ended roughly $4 billion in federal grants for the project (FRA, 2025; Bond Buyer, 2025).", + "needsSource": false, + "sourceQuery": "", + "impact": "Every dollar sunk into a stalled megaproject is a dollar not spent on roads, bridges or safety. Taxpayers carry that loss." + }, + { + "id": "2", + "title": "Demand Cannot Carry the Debt", + "claim": "American high-speed rail does not earn enough from passengers to pay its own way, so taxpayers are left to cover the gap.", + "reasoning": "A rail line has to pay for construction and then for daily operations. If ridership is lower than promised, revenue falls short on both. The lender is then paid from public money or the project defaults. That puts the risk on the public. Private investors have not been willing to absorb it alone.", + "evidence": "Grist reported in September 2026 that Brightline filed for Chapter 11 bankruptcy while carrying $4.4 billion in debt, and that it is seeking more public financing for Brightline West. A Senate Commerce Committee report in February 2026 said California's own authority admits its first segment will not be profitable when it opens.", + "needsSource": false, + "sourceQuery": "", + "impact": "If the best-known operators cannot cover their costs, the public will be asked to pay again and again." + }, + { + "id": "3", + "title": "Better Uses for Rail Dollars", + "claim": "Federal rail money does more good on safety and repair of existing rail than on new high-speed lines.", + "reasoning": "Federal rail funding is limited and already stretched across Amtrak and its backlog of repairs. Spending heavily on new high-speed lines pulls money away from projects that serve passengers now. Fixing existing track and crossings gives results sooner and at lower risk than a new line that may take decades.", + "evidence": "The Congressional Research Service said in March 2026 that Amtrak's expenses have exceeded its revenues every year, so it depends on Congress. The Department of Transportation said in September 2025 that grade crossings see more than 2,000 incidents and 200 deaths each year, and it redirected about $2.4 billion from California's project to a rail safety program.", + "needsSource": false, + "sourceQuery": "", + "impact": "Real people die at crossings today. Money should go to what saves lives and keeps trains running now." + } + ], + "counters": [ + { + "targetArgument": "Other countries like China, Japan and France built successful high-speed rail, so America can too.", + "counterpoint": "Other countries do not prove the United States should spend more. Our own record is the relevant test, and it is poor. California, our biggest project, had its roughly $4 billion federal grants ended in 2025 after the FRA found missed deadlines, budget shortfalls and overstated ridership (FRA, 2025). If the model works abroad, why has it not worked here? Our first argument shows why more money repeats the problem.", + "source": "FRA, 2025" + }, + { + "targetArgument": "Brightline proves Americans want to ride high-speed trains.", + "counterpoint": "Wanting to ride is not the same as paying enough to cover costs. Brightline filed for Chapter 11 bankruptcy in 2026 with $4.4 billion in debt, and it is still seeking public financing for Brightline West (Grist, 2026). If demand were enough, why did it need bankruptcy protection? This is our second argument: crowds do not pay off construction debt.", + "source": "Grist, 2026" + }, + { + "targetArgument": "High-speed rail is an investment that will pay back in economic growth and jobs.", + "counterpoint": "Promised returns are only as good as the project that delivers them. California's ridership was overstated, according to the FRA's 2025 review, so its projected benefits were overstated too. The California authority also admits its first segment will not be profitable when it opens (Senate Commerce Committee, 2026). Benefits that never arrive cannot repay taxpayers. That is our first and second arguments together.", + "source": "FRA, 2025" + }, + { + "targetArgument": "Without federal investment, rail will stay underfunded and projects will keep failing.", + "counterpoint": "The problem is how money is managed, not just how much. The Infrastructure Investment and Jobs Act already provided $66 billion in advance rail appropriations (Eno Center for Transportation, 2026). Yet California still missed deadlines and could not show a credible plan to finish its first segment (Bond Buyer, 2025). If more money were the answer, why did billions not fix it? Bigger funding does not fix weak delivery.", + "source": "Eno Center for Transportation, 2026" + }, + { + "targetArgument": "High-speed rail cuts emissions and congestion.", + "counterpoint": "Those benefits exist only when trains are built, running and full. California has no train operating after a quarter of a century (Senate Commerce Committee, 2026). Emissions saved by a line that does not run are zero. Meanwhile, safety work on existing rail has clear results now: grade crossings see more than 2,000 incidents and 200 deaths a year (US DOT, 2025). That is our third argument.", + "source": "US Department of Transportation, 2025" + }, + { + "targetArgument": "The Trump administration is just hostile to rail, so these cuts are political.", + "counterpoint": "Our case does not rest on who is in office. It rests on what the FRA review found: missed deadlines, budget shortfalls and overstated ridership (FRA, 2025). The administration also put more than $5 billion into a national rail partnership program for safety on intercity passenger rail (US DOT, 2025). If the aim were to kill rail, why fund it? We want rail money spent where it works. That is our third argument.", + "source": "US Department of Transportation, 2025" + } + ], + "closingLine": "That is why it is clear that the federal government should fix the rail it has, not pour billions more into high-speed projects that have not delivered.", + "sources": [ + { + "org": "Federal Railroad Administration, US Department of Transportation", + "claim": "Compliance review found missed deadlines, budget shortfalls and overstated ridership; roughly $4 billion in grants", + "year": "2025", + "url": "https://www.transportation.gov/briefing-room/trumps-transportation-secretary-sean-p-duffy-releases-report-exposing-no-viable-path" + }, + { + "org": "Bond Buyer", + "claim": "$4 billion in California grants terminated; no credible funding plan for the first segment", + "year": "2025", + "url": "https://www.bondbuyer.com/news/trump-administration-rescinds-4b-grant-for-california-train-to-nowhere" + }, + { + "org": "Grist", + "claim": "Brightline Chapter 11, $4.4 billion in debt, public financing sought for Brightline West", + "year": "2026", + "url": "https://grist.org/solutions/brightline-shows-people-want-more-trains-but-who-will-pay-for-them/" + }, + { + "org": "US Senate Committee on Commerce, Science, and Transportation", + "claim": "California's first segment will not be profitable when it opens; no train operating", + "year": "2026", + "url": "https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf" + }, + { + "org": "Congressional Research Service", + "claim": "Amtrak's expenses exceed its revenues every year and it depends on Congress", + "year": "2026", + "url": "https://www.congress.gov/crs_external_products/R/PDF/R48881/R48881.2.pdf" + }, + { + "org": "US Department of Transportation", + "claim": "Grade crossings: more than 2,000 incidents and 200 deaths a year; about $2.4 billion redirected to rail safety program", + "year": "2025", + "url": "https://www.transportation.gov/briefing-room/trump-dividend-transportation-secretary-sean-p-duffy-announces-over-5-billion-get-0" + }, + { + "org": "Eno Center for Transportation", + "claim": "IIJA provided $66 billion in advance rail appropriations", + "year": "2026", + "url": "https://enotrans.org/eno-resources/looking-down-the-tracks-a-case-for-more-predictable-intercity-passenger-rail-funding/" + } + ], + "metadata": { + "side": "con", + "format": "custom", + "generatedAt": "2026-11-03T00:00:00Z", + "model": "anthropic/claude-sonnet-5.5", + "provider": "openrouter", + "sourceUsage": [], + "durationMs": 28828 + } + }, + "discoveredSources": [ + { + "title": "SPEEDLINES, High-Speed Intercity Passenger Rail Committee, July 2025, Issue #42", + "url": "https://www.apta.com/wp-content/uploads/SPEEDLINES-High-Speed-Intercity-Passenger-Rail-Committee-July-2025-Issue-42.pdf", + "content": "SPEEDLINES | JULY 2025 1\nSpecial Report on \nIntercity \nPassenger Rail\nSPEEDLINES\nISSUE #42 July 2025\nFEATURE ARTICLE\nImagine America \nconnected coast\u0002to-coast by sleek \nhigh-speed trains. \nThis bold vision \nfor HSR could \nrevolutionize how \nAmericans live, \nwork, and travel.\nTHE IIJA OFFERS SIGNIFICANT FEDERAL FUNDING \nFOR RAIL IMPROVEMENTS IN THE U. S. FROM 2022 \nTO 2026, IT EXPANDS EXISTING FEDERAL RAILROAD \nADMINISTRATION PROGRAMS AND INTRODUCES \nNEW ONES TO IMPROVE THE RAIL NETWORK. THE \nIIJA ALLOCATES $102 BILLION FOR RAIL, CONSISTING \nOF $66 BILLION FROM ADVANCED APPROPRIATIONS \nAND $36 BILLION IN AUTHORIZED FUNDING.\nPG.19\nSPEEDLINES | JULY 2025 2\nCONTENTS\n© 2011-2025 APTA - ALL RIGHTS RESERVED\nSPEEDLINES is published in cooperation with:\nAMERICAN PUBLIC TRANSPORTATION ASSOCIATION\n1300 I Street NW, Suite 1200 East\nWashington, DC 20005\n» p.32\n3 Chairman’s Letter\n4 Project Planning, Development, Delivery\n13 In the Spotlight\n14 High-Speed Rail Snippets\n15 Amtrak Long-Distance Servic", + "qualityScore": 95, + "sourceType": "official", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + }, + { + "title": "commerce.senate.gov", + "url": "https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf", + "content": "Photo Credit: CA High-Speed Rail Authority\n\n#### Executive Summary\n\nCalifornia high-speed rail reflects a pattern of ambitious policymaking divorced from practical reality—one encouraged by Democratic policymakers in Sacramento and Washington over the past two decades. In both the Northeast Corridor and California, Democratic administrations pushed major rail projects without securing financing or viable infrastructure, leading to chronic delays, runaway costs, and few tangible benefits. Under Governor Gavin Newsom, the California high-speed rail project remains a clear failure: not a single train is operating after a quarter of a century and $2.6 billion in federal funds. Moreover, the much-maligned high-speed rail line may prove costly even after it is in service. The California High-Speed Rail Authority now admits its core Merced-to Bakersfield segment will not be profitable when it opens. Simply put, Congress is right to rein in this wasteful spending.\n\n#### Introduction\n\nOn Decemb", + "qualityScore": 93, + "sourceType": "government", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + }, + { + "title": "FRA FY 2026 Congressional Justification", + "url": "https://www.transportation.gov/sites/dot.gov/files/2025-05/FRA_FY_2026_Budget_Estimates_CJ.pdf", + "content": "## BUDGET\n\n##### U.S. Department ESTIMATES of Transportation\n\n### FISCAL YEAR 2026\n\n#### FEDERAL RAILROAD ADMINISTRATION\n\nSUBMITTED FOR THE USE OF THE COMMITTEES ON APPROPRIATIONS\n\nDEPARTMENT OF TRANSPORTATION FEDERAL RAILROAD ADMINISTRATION FY 2026 PRESIDENT’S BUDGET JUSTIFICATION TABLE OF CONTENTS\n\nPage\n\nSection 1: Overview \nAdministrator’s Overview ... 1 \nOrganization Charts ... 3 \nSection 2: Budget Summary Tables \nBudget Authority ... 5 \nTotal Budgetary Resources by Appropriation Account ... 7 \nOutlays ... 9 \nSummary of Requested Funding Changes from Base ... 11 \nWorking Capital Fund ... 24 \nPersonnel Resource Summary – Full-Time Equivalents (FTE) ... 25 \nPersonnel Resource Summary – Full-Time Positions (FTP) ... 26 \nSection 3: Budget Request by Appropriation \nSafety and Operations ... 27 \nRailroad Research and Development ... 43 \nAmtrak ... 67 \nConsolidated Rail Infrastructure and Safety Improvements ... 79 \nAdministrative Provisions ... 89 \nSection 4: Research, Development, and T", + "qualityScore": 93, + "sourceType": "government", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + }, + { + "title": "High-Speed Rail in the U.S.", + "url": "https://www.bechtel.com/wp-content/uploads/2025/05/Bechtel_Rail-White-Paper_7-May-2025.pdf", + "content": "#### High-Speed Rail in the U.S. The Mega Project Delivery Perspective\n\nMay 2025\n\nExecutive Summary 3 \nTransforming America: The High-Speed Rail Revolution 6 \nThe Economic Benefit of High-Speed Rail in the United States 7 \nEnablers 8 \nReform 19 \nDelivery 26 \nConclusion 35 \nAuthors, Contributors & Acknowledgments 36 \nReferences 37 \n\n### Contents\n\nThe United States is on the brink of transforming how it moves people, connects communities, and bolsters regional economies. After decades of cautious progress, existing rail services like Amtrak’s Acela and Brightline Florida have demonstrated that there is increasing public appetite for faster, smarter, more efficient intercity transport. Such projects are creating a solid foundation on which to learn, build and move forward with increased confidence and certainty. However, to realize high-speed rail’s (HSR) full potential — a nationwide network connecting major population and economic centers - the U.S. must avoid the most common pitfalls t", + "qualityScore": 93, + "sourceType": "official", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail statistics report study 2025 2026" + }, + { + "title": "Penn Station and the Two Paths Forward for American Trains | High Speed Rail Alliance", + "url": "https://www.hsrail.org/blog/penn-station-and-the-two-paths-forward-for-american-trains-2/", + "content": "Penn Station and the Two Paths Forward for American Trains | High Speed Rail Alliance\n\n# Penn Station and the Two Paths Forward for American Trains\n\nAugust 21, 2026\n\n • Advocacy, Policy and Legislation\n\n \n\n### Competing visions for transportation reauthorization\n\nPenn Station handles about 600,000 passengers on a typical weekday—more than LaGuardia, JFK, and Newark airports combined. It powers New York City’s economy, and it’s the beating heart of the most developed and heavily used passenger-rail line in the US, the Northeast Corridor.\n\nPlans to renovate and transform the station are moving forward: Amtrak’s Andy Bynum has said shovels will be in the ground by late 2027. We support Amtrak’s approach, which was laid out in a study published by the Federal Railroad Administration (FRA) in June. It makes the case for a fundamental overhaul of Penn Station’s concourse, track configuration, and operating culture—with the goal of running more trains into and through the station by slashing ", + "qualityScore": 91, + "sourceType": "results", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + } + ], + "sourceAssessments": [], + "meta": { + "requestedModel": "anthropic/claude-sonnet-5.5", + "resolvedModel": "anthropic/claude-sonnet-5.5", + "debateContext": { + "debateId": "b1c5b37a-2b9a-4fda-81b1-68a3c8c612d1", + "sourcesUsed": 0, + "sourcesOmittedForSize": 0, + "sourcesShortened": 0, + "sourcesUnavailable": 0, + "outputsUsed": [], + "outputsOmittedForSize": [], + "outputsUnavailable": 0, + "instructionsUsed": false + } + } + }, + "providerCalls": [ + { + "feature": "research-queries", + "requestedModel": "anthropic/claude-haiku-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 2758, + "stream": false + }, + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 277, + "stream": null + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 24345, + "stream": true, + "userPromptHead": "Motion: Resolved: The United States federal government should substantially increase its investment in high-speed rail\nSide: con\nFormat: custom\nRole: r1\nLength: standard\nLength Instruction: Return exactly 3 contentions. Give each a clear explanation, evidence, and why it matters.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the arguments and the closing line together stay within about 600 words, leaving time for the \"If they say...\" answers the speaker picks. With 3 arguments, each argument is about 170 spoken words: claim one sentence of at most 20 words, reasoning about 75 words, evidence about 50 words, whyItMatters about 25 words. opening.hook and caseStructure.thesis at most 35 words each, closingLine one sentence of at most 25 words. Aim for these numbers, not under them: a shorter field leaves the speaker's time unused, a longer one runs past it.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + } + ] + }, + "r2": { + "request": { + "feature": "generate", + "input": { + "motion": "Resolved: The United States federal government should substantially increase its investment in high-speed rail", + "side": "con", + "format": "custom", + "role": "r2", + "length": "standard", + "audience": "intermediate", + "tone": "formal", + "language": "en" + }, + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "reasoningEffort": "low", + "sourceIds": [ + "6fea043e-1c4a-4b6a-9105-cd69ff62c3b0", + "888af78c-06d9-4258-bef4-19343d07a0b3", + "65ad2029-d199-4d79-a882-6709349fe3a0", + "5fefc6be-e4f8-4661-bf54-352bdf7c530d", + "b8e08602-b06b-431c-864c-320271ca340b" + ], + "debateContext": { + "debateId": "b1c5b37a-2b9a-4fda-81b1-68a3c8c612d1", + "side": "con", + "sourceIds": [ + "6fea043e-1c4a-4b6a-9105-cd69ff62c3b0", + "888af78c-06d9-4258-bef4-19343d07a0b3", + "65ad2029-d199-4d79-a882-6709349fe3a0", + "5fefc6be-e4f8-4661-bf54-352bdf7c530d", + "b8e08602-b06b-431c-864c-320271ca340b" + ], + "outputs": [ + { + "kind": "case", + "id": "2aba8d8e-d33a-4d70-8425-60e01661cbfc" + } + ] + }, + "stream": true, + "resultKey": "req_1793726318237_y4fz1b" + }, + "response": { + "output": { + "opening": { + "hook": "If high-speed rail were a safe place for federal money, the biggest project in the country would have a train running after twenty-five years. It does not." + }, + "caseStructure": { + "thesis": "I'm the R2 of my team, and I'm here to show that the United States should not substantially increase its federal investment in high-speed rail, because the record shows waste and because the same money does more good on rail that already exists." + }, + "contentions": [], + "reinforce": [ + { + "argument": "Our first argument: megaprojects burn federal money", + "text": "The California project is the clearest proof. In June 2025, the Federal Railroad Administration released a review of over 300 pages with 9 key findings, including missed deadlines, budget shortfalls and overstated ridership (US Department of Transportation, 2025). The two grants at stake were worth roughly $4 billion. In July 2025, the agency ended them, saying the project had no credible funding plan to finish its first segment (Bond Buyer, 2025). A Senate Commerce Committee report in 2026 adds that no train is running after a quarter of a century and $2.6 billion in federal funds. Taxpayers pay while the service never arrives. If this is how the biggest federal bet performs, more money would only repeat the loss." + }, + { + "argument": "Our second argument: better uses for rail dollars", + "text": "Federal rail money is limited, and it has urgent jobs to do now. In September 2025, the Department of Transportation announced more than $5 billion for the National Railroad Partnership Program, aimed at safety on intercity passenger rail. That includes grade crossings, which see more than 2,000 incidents and 200 deaths every year (US Department of Transportation, 2025). Amtrak's expenses have also exceeded its revenues every year, so it depends on Congress to operate and to improve its infrastructure (Congressional Research Service, 2026). Fixing crossings and track gives results quickly. A new line takes decades. If we care about passengers and lives today, the money belongs on rail that already runs." + } + ], + "counters": [ + { + "targetArgument": "High-speed rail is a long-term investment that pays back in jobs and economic growth.", + "counterpoint": "A payback only exists if the project is finished and the forecasts are true, and the American record fails both tests. The FRA review of California found overstated ridership (US Department of Transportation, 2025). Overstated ridership means overstated revenue, jobs and growth. The Senate Commerce Committee reported in 2026 that the California authority admits its first segment will not be profitable when it opens. A line that loses money after opening cannot repay taxpayers through growth. The House Oversight Committee opened an investigation in August 2025 into whether the authority knowingly misrepresented its ridership projections. If the returns were real, why did the forecasts need to be inflated? Jobs from a project that never delivers service are a cost, not a return. This is our first argument: money goes in, and the promised benefits never come out.", + "source": "US Department of Transportation, 2025" + }, + { + "targetArgument": "The United States has fallen behind China, Japan and Europe, and federal investment is how it catches up.", + "counterpoint": "Being behind does not mean more federal spending will fix it. Our own record is the test. The FRA ended roughly $4 billion in California grants in July 2025 after finding the project could not meet its binding obligations (Bond Buyer, 2025). On the Northeast Corridor, a Senate Commerce Committee report in 2025 described NextGen Acela trainsets bought without a credible plan to upgrade the track. They run more slowly than the original Acela trains, after a four-year delay that cost taxpayers another $287 million (Senate Commerce Committee, 2026). So catching up by spending has already produced slower trains and higher bills. If copying others worked, why has it failed here twice? Our first argument explains the reason: American projects miss deadlines and budgets. Our second argument gives the answer: fix and secure what already carries passengers.", + "source": "Senate Commerce Committee, 2026" + }, + { + "targetArgument": "Rail is underfunded because federal support is unpredictable, and more stable money would fix delivery problems.", + "counterpoint": "Stable money has already been tested, and delivery problems remained. The Infrastructure Investment and Jobs Act gave five years of advance appropriations, $66 billion in total, which Eno itself says brought medium-term certainty (Eno Center for Transportation, 2026). Even so, California missed deadlines, ran short of budget and had no credible plan to finish its first segment (US Department of Transportation, 2025). The Congressional Research Service also notes that Amtrak's expenses have exceeded its revenues every year, so more steady funding does not create a self-paying system (Congressional Research Service, 2026). If certainty were the cure, why did billions of certain dollars not fix California? The weakness is in how projects are managed, not only in how money is scheduled. That is our first argument. Better uses for the dollars we already have, such as crossing safety, is our second.", + "source": "Eno Center for Transportation, 2026" + }, + { + "targetArgument": "Every dollar invested in public transportation returns about five dollars in long-term economic benefits.", + "counterpoint": "That figure comes from the transit lobby, and it describes public transportation in general, not high-speed rail. It says nothing about a megaproject that has not delivered a single trip. The group making the claim is the American Public Transportation Association, which is asking Congress for at least $21 billion for passenger rail (APTA, 2025). A return only exists when the service is built and running. California has no train operating after a quarter of a century and $2.6 billion in federal funds (Senate Commerce Committee, 2026). In 2025 the Federal Railroad Administration ended roughly $4 billion in grants because of missed deadlines, budget shortfalls and overstated ridership (US DOT, 2025). So where is the five dollars? You cannot earn a return on a line that does not run. This is our first argument: projects that miss their dates and budgets burn the money before any benefit arrives.", + "source": "APTA, 2025" + }, + { + "targetArgument": "Electrified high-speed rail cuts emissions and eases congestion on highways and in the air.", + "counterpoint": "A cleaner train only cuts emissions when it exists, and in the United States the big one does not. California has no train operating after 25 years and $2.6 billion in federal funds (Senate Commerce Committee, 2026). The Bechtel white paper they rely on says electrified high-speed rail can cut emissions by up to 95%, but the same paper warns that the US must avoid ballooning costs, chronic delays and waning public support (Bechtel, 2025). That is a warning about our record, not a promise. Emissions saved by a line that is stalled are zero. Meanwhile, grade crossings on existing rail see more than 2,000 incidents and 200 deaths a year (US DOT, 2025). If the goal is real results, why pour money into a line that has not started? This is our second argument: limited rail dollars do more good on safety and repair of rail that already runs.", + "source": "Bechtel, 2025" + }, + { + "targetArgument": "Brightline and the Acela show that Americans want faster trains and will ride them.", + "counterpoint": "Wanting a faster train does not mean the project works, and the Acela proves our side. The new NextGen Acela trainsets run more slowly than the original Acela trains, after a four-year delay that cost taxpayers an additional $287 million (Senate Commerce Committee, 2026). Those trains were bought without a credible plan to upgrade the aging track. So the money went to the train and not to the tracks that decide the speed. Even a pro-rail source, the Bechtel white paper, says the US must avoid ballooning costs and chronic delays (Bechtel, 2025). If demand alone were enough, why did the Acela cost more and run slower? Passengers can fill a seat on a project that still wastes federal money. This is our first argument: missed budgets and deadlines. It also supports our second: fix the existing Northeast Corridor track first, before funding new lines.", + "source": "Senate Commerce Committee, 2026" + }, + { + "targetArgument": "Penn Station and the Northeast Corridor show that federal rail investment can deliver real results.", + "counterpoint": "Penn Station proves our point, not theirs. It is an existing station on an existing line. The Federal Railroad Administration study calls for an overhaul of the concourse, the track layout and how the station operates, so more trains can run through it (High Speed Rail Alliance, 2026). That is repair and modernization, not a new high-speed line. Meanwhile, the Senate Commerce Committee found that the NextGen Acela sets for the Northeast Corridor were bought without a credible plan to upgrade the track, they run more slowly than the old Acelas, and a four-year delay cost taxpayers an extra $287 million (Senate Commerce Committee, 2026). If the corridor is the success story, why did that happen? Money works where it fixes what already carries 600,000 people a weekday. It burns where it chases speed first. That is our first and second arguments.", + "source": "High Speed Rail Alliance, 2026" + }, + { + "targetArgument": "Engineers' groups like ASCE back a national high-speed rail network.", + "counterpoint": "Read the ASCE statement in full. It says investment should be prioritized by passenger demand, travel time savings and economic factors, and be balanced between renewal and incremental improvements to existing passenger rail and the development of advanced high-speed systems (ASCE, 2025). That is a call for balance and for tests of demand, not for a blank check. Our case passes those tests. California has no train running after a quarter of a century and $2.6 billion in federal funds (Senate Commerce Committee, 2026). The Federal Railroad Administration found missed deadlines, budget shortfalls and overstated ridership there (US Department of Transportation, 2025). If demand is the standard, why would we pour more money into a project that overstated its demand? ASCE's own priority on renewal supports our second argument: fix existing rail first.", + "source": "ASCE, 2025" + }, + { + "targetArgument": "The Infrastructure Investment and Jobs Act showed that steady federal money lets Amtrak and states build capacity.", + "counterpoint": "Steady money is not the same as more money, and the Act already gave rail a lot. It provided $66 billion in advance appropriations over five years (Eno Center for Transportation, 2026). Yet the California project, which received federal grants over those years, was found by the Federal Railroad Administration to have missed deadlines and run short on budget, and about $4 billion of its grants were terminated (Bond Buyer, 2025). If steady money fixed delivery, why did that happen? The Eno report itself says the benefit was predictability for planning, which is about how money is managed, not about adding billions for new high-speed lines. Congress can keep funding steady without a big increase. That is our first argument: waste comes from weak delivery. And our second argument: put the steady money into existing rail.", + "source": "Eno Center for Transportation, 2026" + }, + { + "targetArgument": "California's failures come from poor management and politics, not from the idea of high-speed rail.", + "counterpoint": "That answer proves our point. The motion asks for more federal money, and federal money goes to the managers we actually have. The Federal Railroad Administration reviewed the California project in 2025 and found nine key findings, including missed deadlines, budget shortfalls and overstated ridership (US Department of Transportation, 2025). The Bond Buyer reported in 2025 that the FRA saw no credible funding plan to finish even the first segment. Bad management is the real risk of any large new line, so you cannot set it aside. If the idea is sound but the delivery keeps failing, why should taxpayers pay more before delivery is fixed? A judge should vote on what a bigger budget would really buy. It would buy more of the same record. This is our first argument: megaprojects miss deadlines and budgets, so more federal money would be wasted.", + "source": "US Department of Transportation, 2025" + }, + { + "targetArgument": "Cancelling grants like California's is political hostility to rail, not a response to real problems.", + "counterpoint": "The grounds for the cancellation are on paper, and they are about performance. The FRA's July 2025 letter ended the agreements after a review that found missed deadlines, budget shortfalls and overstated ridership (US Department of Transportation, 2025). The Bond Buyer reported that the FRA said California could not meet the binding obligations it took on to receive the money (Bond Buyer, 2025). Our case also does not depend on who holds office. The same department announced over $5 billion for a National Railroad Partnership Program for safety on intercity passenger rail, partly funded by the money taken back from California (US Department of Transportation, 2025). If the goal were to kill rail, why keep the money in rail? The money moved from a stalled project to work that is under way. That links our first argument, wasted money, to our second, better uses for rail dollars.", + "source": "US Department of Transportation, 2025" + }, + { + "targetArgument": "We can fund high-speed rail and also repair existing rail, so there is no real tradeoff.", + "counterpoint": "Federal rail money is limited, and the other side has not shown where extra money would come from. The Eno Center said in January 2026 that intercity rail has no dedicated federal revenue source and depends on annual discretionary appropriations. The Congressional Research Service said in 2026 that Amtrak's expenses have exceeded its revenues every year, so it depends on Congress. A budget that is always short makes every new line compete with repairs for the same dollars. Grade crossings alone see more than 2,000 incidents and 200 deaths a year (US Department of Transportation, 2025). If funding is so easy, why is the repair need still there? A new line also takes years before it carries anyone. This is our second argument: limited rail money does more good on safety and repair of existing rail now.", + "source": "Eno Center for Transportation, 2026" + } + ], + "reinforce_note": "", + "closingLine": "That is why it is clear that the federal government should not substantially increase its investment in high-speed rail: the record shows waste, and the money does more good on rail that works today. Thank you.", + "sources": [ + { + "org": "US Department of Transportation", + "claim": "FRA review of California high-speed rail found missed deadlines, budget shortfalls and overstated ridership; $5 billion safety program with grade crossing figures", + "year": "2025", + "url": "https://www.transportation.gov/briefing-room/trumps-transportation-secretary-sean-p-duffy-releases-report-exposing-no-viable-path" + }, + { + "org": "US Department of Transportation", + "claim": "More than $5 billion for rail safety; grade crossings see over 2,000 incidents and 200 deaths a year", + "year": "2025", + "url": "https://www.transportation.gov/briefing-room/trump-dividend-transportation-secretary-sean-p-duffy-announces-over-5-billion-get-0" + }, + { + "org": "Bond Buyer", + "claim": "FRA ended $4 billion in California grants; no credible funding plan for first segment", + "year": "2025", + "url": "https://www.bondbuyer.com/news/trump-administration-rescinds-4b-grant-for-california-train-to-nowhere" + }, + { + "org": "Senate Commerce Committee", + "claim": "No train running in California after 25 years and $2.6 billion; first segment not profitable; NextGen Acela delay cost $287 million", + "year": "2026", + "url": "https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf" + }, + { + "org": "US House Committee on Oversight and Government Reform", + "claim": "Investigation into whether California misrepresented ridership projections", + "year": "2025", + "url": "https://oversight.house.gov/release/chairman-comer-investigates-californias-high-speed-rail-boondoggle/" + }, + { + "org": "Eno Center for Transportation", + "claim": "IIJA gave $66 billion in advance appropriations over five years", + "year": "2026", + "url": "https://enotrans.org/eno-resources/looking-down-the-tracks-a-case-for-more-predictable-intercity-passenger-rail-funding/" + }, + { + "org": "Congressional Research Service", + "claim": "Amtrak's expenses have exceeded its revenues each year and depend on Congress", + "year": "2026", + "url": "https://www.congress.gov/crs_external_products/R/PDF/R48881/R48881.2.pdf" + }, + { + "org": "APTA", + "claim": "Transit lobby asks for at least $21 billion for passenger rail and makes the $5 return claim", + "year": "2025", + "url": "https://www.apta.com/wp-content/uploads/2026/02/APTA-TALKING-POINTS-Pass-Rail-Investment-09-08-2025.pdf" + }, + { + "org": "Bechtel", + "claim": "Electrified HSR can cut emissions up to 95%, but the US must avoid ballooning costs and chronic delays", + "year": "2025", + "url": "https://www.bechtel.com/wp-content/uploads/2025/05/Bechtel_Rail-White-Paper_7-May-2025.pdf" + }, + { + "org": "High Speed Rail Alliance", + "claim": "Penn Station overhaul is a renovation of an existing station", + "year": "2026", + "url": "https://www.hsrail.org/blog/penn-station-and-the-two-paths-forward-for-american-trains-2/" + }, + { + "org": "ASCE", + "claim": "Investment should follow demand and balance renewal of existing rail with new high-speed systems", + "year": "2025", + "url": "https://www.asce.org/advocacy/policy-statements/ps402---high-speed-and-intercity-passenger-rail" + } + ], + "metadata": { + "side": "con", + "format": "custom", + "generatedAt": "2026-11-03T00:00:00Z", + "model": "anthropic/claude-sonnet-5.5", + "provider": "openrouter", + "sourceUsage": [], + "durationMs": 26804 + } + }, + "discoveredSources": [ + { + "title": "commerce.senate.gov", + "url": "https://www.commerce.senate.gov/wp-content/uploads/media/doc/2026.02.05%20CHSRA%20Follow-Up%20Report%20(Part%202%20of%20Acela%20Report).pdf", + "content": "Photo Credit: CA High-Speed Rail Authority\n\n#### Executive Summary\n\nCalifornia high-speed rail reflects a pattern of ambitious policymaking divorced from practical reality—one encouraged by Democratic policymakers in Sacramento and Washington over the past two decades. In both the Northeast Corridor and California, Democratic administrations pushed major rail projects without securing financing or viable infrastructure, leading to chronic delays, runaway costs, and few tangible benefits. Under Governor Gavin Newsom, the California high-speed rail project remains a clear failure: not a single train is operating after a quarter of a century and $2.6 billion in federal funds. Moreover, the much-maligned high-speed rail line may prove costly even after it is in service. The California High-Speed Rail Authority now admits its core Merced-to Bakersfield segment will not be profitable when it opens. Simply put, Congress is right to rein in this wasteful spending.\n\n#### Introduction\n\nOn Decemb", + "qualityScore": 93, + "sourceType": "government", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + }, + { + "title": "SPEEDLINES, High-Speed Intercity Passenger Rail Committee, July 2025, Issue #42", + "url": "https://www.apta.com/wp-content/uploads/SPEEDLINES-High-Speed-Intercity-Passenger-Rail-Committee-July-2025-Issue-42.pdf", + "content": "SPEEDLINES | JULY 2025 1\nSpecial Report on \nIntercity \nPassenger Rail\nSPEEDLINES\nISSUE #42 July 2025\nFEATURE ARTICLE\nImagine America \nconnected coast\u0002to-coast by sleek \nhigh-speed trains. \nThis bold vision \nfor HSR could \nrevolutionize how \nAmericans live, \nwork, and travel.\nTHE IIJA OFFERS SIGNIFICANT FEDERAL FUNDING \nFOR RAIL IMPROVEMENTS IN THE U. S. FROM 2022 \nTO 2026, IT EXPANDS EXISTING FEDERAL RAILROAD \nADMINISTRATION PROGRAMS AND INTRODUCES \nNEW ONES TO IMPROVE THE RAIL NETWORK. THE \nIIJA ALLOCATES $102 BILLION FOR RAIL, CONSISTING \nOF $66 BILLION FROM ADVANCED APPROPRIATIONS \nAND $36 BILLION IN AUTHORIZED FUNDING.\nPG.19\nSPEEDLINES | JULY 2025 2\nCONTENTS\n© 2011-2025 APTA - ALL RIGHTS RESERVED\nSPEEDLINES is published in cooperation with:\nAMERICAN PUBLIC TRANSPORTATION ASSOCIATION\n1300 I Street NW, Suite 1200 East\nWashington, DC 20005\n» p.32\n3 Chairman’s Letter\n4 Project Planning, Development, Delivery\n13 In the Spotlight\n14 High-Speed Rail Snippets\n15 Amtrak Long-Distance Servic", + "qualityScore": 95, + "sourceType": "official", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + }, + { + "title": "FRA FY 2026 Congressional Justification", + "url": "https://www.transportation.gov/sites/dot.gov/files/2025-05/FRA_FY_2026_Budget_Estimates_CJ.pdf", + "content": "## BUDGET\n\n##### U.S. Department ESTIMATES of Transportation\n\n### FISCAL YEAR 2026\n\n#### FEDERAL RAILROAD ADMINISTRATION\n\nSUBMITTED FOR THE USE OF THE COMMITTEES ON APPROPRIATIONS\n\nDEPARTMENT OF TRANSPORTATION FEDERAL RAILROAD ADMINISTRATION FY 2026 PRESIDENT’S BUDGET JUSTIFICATION TABLE OF CONTENTS\n\nPage\n\nSection 1: Overview \nAdministrator’s Overview ... 1 \nOrganization Charts ... 3 \nSection 2: Budget Summary Tables \nBudget Authority ... 5 \nTotal Budgetary Resources by Appropriation Account ... 7 \nOutlays ... 9 \nSummary of Requested Funding Changes from Base ... 11 \nWorking Capital Fund ... 24 \nPersonnel Resource Summary – Full-Time Equivalents (FTE) ... 25 \nPersonnel Resource Summary – Full-Time Positions (FTP) ... 26 \nSection 3: Budget Request by Appropriation \nSafety and Operations ... 27 \nRailroad Research and Development ... 43 \nAmtrak ... 67 \nConsolidated Rail Infrastructure and Safety Improvements ... 79 \nAdministrative Provisions ... 89 \nSection 4: Research, Development, and T", + "qualityScore": 93, + "sourceType": "government", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + }, + { + "title": "High-Speed Rail in the U.S.", + "url": "https://www.bechtel.com/wp-content/uploads/2025/05/Bechtel_Rail-White-Paper_7-May-2025.pdf", + "content": "#### High-Speed Rail in the U.S. The Mega Project Delivery Perspective\n\nMay 2025\n\nExecutive Summary 3 \nTransforming America: The High-Speed Rail Revolution 6 \nThe Economic Benefit of High-Speed Rail in the United States 7 \nEnablers 8 \nReform 19 \nDelivery 26 \nConclusion 35 \nAuthors, Contributors & Acknowledgments 36 \nReferences 37 \n\n### Contents\n\nThe United States is on the brink of transforming how it moves people, connects communities, and bolsters regional economies. After decades of cautious progress, existing rail services like Amtrak’s Acela and Brightline Florida have demonstrated that there is increasing public appetite for faster, smarter, more efficient intercity transport. Such projects are creating a solid foundation on which to learn, build and move forward with increased confidence and certainty. However, to realize high-speed rail’s (HSR) full potential — a nationwide network connecting major population and economic centers - the U.S. must avoid the most common pitfalls t", + "qualityScore": 93, + "sourceType": "official", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail statistics report study 2025 2026" + }, + { + "title": "Penn Station and the Two Paths Forward for American Trains | High Speed Rail Alliance", + "url": "https://www.hsrail.org/blog/penn-station-and-the-two-paths-forward-for-american-trains-2/", + "content": "Penn Station and the Two Paths Forward for American Trains | High Speed Rail Alliance\n\n# Penn Station and the Two Paths Forward for American Trains\n\nAugust 21, 2026\n\n • Advocacy, Policy and Legislation\n\n \n\n### Competing visions for transportation reauthorization\n\nPenn Station handles about 600,000 passengers on a typical weekday—more than LaGuardia, JFK, and Newark airports combined. It powers New York City’s economy, and it’s the beating heart of the most developed and heavily used passenger-rail line in the US, the Northeast Corridor.\n\nPlans to renovate and transform the station are moving forward: Amtrak’s Andy Bynum has said shovels will be in the ground by late 2027. We support Amtrak’s approach, which was laid out in a study published by the Federal Railroad Administration (FRA) in June. It makes the case for a fundamental overhaul of Penn Station’s concourse, track configuration, and operating culture—with the goal of running more trains into and through the station by slashing ", + "qualityScore": 91, + "sourceType": "results", + "qualityLabel": "strong", + "query": "Resolved: The United States federal government should substantially increase its investment in high-speed rail official data evidence 2025 2026" + } + ], + "sourceAssessments": [], + "meta": { + "requestedModel": "anthropic/claude-sonnet-5.5", + "resolvedModel": "anthropic/claude-sonnet-5.5", + "debateContext": { + "debateId": "b1c5b37a-2b9a-4fda-81b1-68a3c8c612d1", + "sourcesUsed": 5, + "sourcesOmittedForSize": 0, + "sourcesShortened": 0, + "sourcesUnavailable": 0, + "outputsUsed": [ + { + "kind": "case", + "id": "2aba8d8e-d33a-4d70-8425-60e01661cbfc" + } + ], + "outputsOmittedForSize": [], + "outputsUnavailable": 0, + "instructionsUsed": false + } + } + }, + "providerCalls": [ + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 231, + "stream": null + }, + { + "feature": "research-queries", + "requestedModel": "anthropic/claude-haiku-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 1984, + "stream": false + }, + { + "feature": "jev", + "requestedModel": null, + "upstreamModel": "typesafe/jev-1.13-20260917", + "upstreamProvider": "TypeSafe", + "status": 200, + "ms": 240, + "stream": null + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 6491, + "stream": false, + "userPromptHead": "Motion: Resolved: The United States federal government should substantially increase its investment in high-speed rail\nSide: con\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 16708, + "stream": true, + "userPromptHead": "Motion: Resolved: The United States federal government should substantially increase its investment in high-speed rail\nSide: con\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 11180, + "stream": false, + "userPromptHead": "Motion: Resolved: The United States federal government should substantially increase its investment in high-speed rail\nSide: con\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 10859, + "stream": false, + "userPromptHead": "Motion: Resolved: The United States federal government should substantially increase its investment in high-speed rail\nSide: con\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + }, + { + "feature": "generate", + "requestedModel": "anthropic/claude-sonnet-5.5", + "upstreamModel": "anthropic/claude-sonnet-5.5", + "upstreamProvider": "Anthropic", + "status": 200, + "ms": 11995, + "stream": false, + "userPromptHead": "Motion: Resolved: The United States federal government should substantially increase its investment in high-speed rail\nSide: con\nFormat: custom\nRole: r2\nLength: standard\nLength Instruction: Return no contentions. Return exactly 2 reinforce items and exactly 12 counters, each answer about 120-150 words.\nSpeech Budget: 6 minutes, about 780 spoken words at 130 words a minute. The opening, the backing-up paragraphs and the closing line together stay within about 300 words (about 2 minutes); the rest of the time is for the \"If they say...\" blocks the other side actually used.\nAudience: intermediate\nAudience Instruction: Assume a trained debater: use clear, concise explanations.\nTone: formal\nTone Instruction: Use polished, judge-facing language with controlled phrasing.\nLanguage: English (en) - Write ALL output in this language.", + "debateContextIncluded": true + } + ] + }, + "aiRequests": [ + { + "id": "ff1548fb-3f27-4c26-8a2c-d8f915a032b6", + "user_id": "d83ef80e-8b82-48c2-b2e6-1775e94f881c", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 3124, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000131208, + "created_at": "2026-11-03T17:18:12.213248+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000131208, + "input_tokens": 3124, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000131208 + }, + { + "id": "728c43f9-89cb-4ab8-917e-25a83759db7e", + "user_id": "d83ef80e-8b82-48c2-b2e6-1775e94f881c", + "feature": "generate", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "input_tokens": 20397, + "output_tokens": 3327, + "latency_ms": 28828, + "status": "success", + "error_code": null, + "cost_usd": 0.11030300000000003, + "created_at": "2026-11-03T17:18:36.578408+00:00", + "cached_input_tokens": 0, + "cache_write_tokens": 6478, + "reasoning_output_tokens": 0, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "calls": [ + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.072155, + "upstream_inference_prompt_cost": 0.040175, + "upstream_inference_completions_cost": 0.03198 + }, + "total_tokens": 21666, + "prompt_tokens": 18468, + "completion_tokens": 3198, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 6478 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "54fd2db632745868df745773c31f025c", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "cd89245985b2bb26b4a5abf98debc379", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.005148, + "upstream_inference_prompt_cost": 0.003858, + "upstream_inference_completions_cost": 0.00129 + }, + "total_tokens": 2058, + "prompt_tokens": 1929, + "completion_tokens": 129, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "8aec0ab4958af5e392737b1a35a55464", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "0e0009175b69345289b0c5b9bd5380df", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "119da0bf5ff8ca51e77111526cbedfa8", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "bc1d6c340202e5ec35d449177a8b2e9a", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "c93a488027bb1a1ed12cfc7f822ba8e9", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "2b00dfc1c30a9c27832efad63199a2e3", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "bee54c096e84e23194d9408942c7cd71", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + } + ] + }, + "cap_cost_usd": 0.11030300000000003 + }, + { + "id": "d1c63bda-caae-48d1-a78b-998cca48addb", + "user_id": "d83ef80e-8b82-48c2-b2e6-1775e94f881c", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 3078, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000129276, + "created_at": "2026-11-03T17:18:38.579673+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000129276, + "input_tokens": 3078, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000129276 + }, + { + "id": "0348ddb1-5202-46ee-a292-5f18a2723dfd", + "user_id": "d83ef80e-8b82-48c2-b2e6-1775e94f881c", + "feature": "jev_source_ranking", + "provider": "openrouter", + "model": "typesafe/jev-1.13", + "input_tokens": 3124, + "output_tokens": 279, + "latency_ms": null, + "status": "success", + "error_code": null, + "cost_usd": 0.000131208, + "created_at": "2026-11-03T17:18:42.160695+00:00", + "cached_input_tokens": null, + "cache_write_tokens": null, + "reasoning_output_tokens": null, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "cost": 0.000131208, + "input_tokens": 3124, + "output_tokens": 279 + }, + "cap_cost_usd": 0.000131208 + }, + { + "id": "2acde563-93dd-4da1-aa69-a5ed3536b852", + "user_id": "d83ef80e-8b82-48c2-b2e6-1775e94f881c", + "feature": "generate", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-5.5", + "input_tokens": 117860, + "output_tokens": 8034, + "latency_ms": 26804, + "status": "success", + "error_code": null, + "cost_usd": 0.27249360000000006, + "created_at": "2026-11-03T17:19:05.393716+00:00", + "cached_input_tokens": 43136, + "cache_write_tokens": 10784, + "reasoning_output_tokens": 0, + "pricing_snapshot_id": "openrouter-response-usage", + "pricing_source_url": "https://openrouter.ai/docs/cookbook/administration/usage-accounting", + "cost_calculation_version": "openrouter-usage-v2", + "raw_usage": { + "calls": [ + { + "calls": [ + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.056734, + "upstream_inference_prompt_cost": 0.051604, + "upstream_inference_completions_cost": 0.00513 + }, + "total_tokens": 23619, + "prompt_tokens": 23106, + "completion_tokens": 513, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 10784 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.0518124, + "upstream_inference_prompt_cost": 0.0259224, + "upstream_inference_completions_cost": 0.02589 + }, + "total_tokens": 25795, + "prompt_tokens": 23206, + "completion_tokens": 2589, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 10784, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.0424584, + "upstream_inference_prompt_cost": 0.0259184, + "upstream_inference_completions_cost": 0.01654 + }, + "total_tokens": 24858, + "prompt_tokens": 23204, + "completion_tokens": 1654, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 10784, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.0422944, + "upstream_inference_prompt_cost": 0.0259344, + "upstream_inference_completions_cost": 0.01636 + }, + "total_tokens": 24848, + "prompt_tokens": 23212, + "completion_tokens": 1636, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 10784, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.0411564, + "upstream_inference_prompt_cost": 0.0259164, + "upstream_inference_completions_cost": 0.01524 + }, + "total_tokens": 24727, + "prompt_tokens": 23203, + "completion_tokens": 1524, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 10784, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + } + ] + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "ba4fc01da450c3faee23bfe06249e650", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "1fb09a05127211d8a7c465731bfac35c", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "cost": 0, + "is_byok": true, + "cost_details": { + "upstream_inference_cost": 0.005038, + "upstream_inference_prompt_cost": 0.003858, + "upstream_inference_completions_cost": 0.00118 + }, + "total_tokens": 2047, + "prompt_tokens": 1929, + "completion_tokens": 118, + "prompt_tokens_details": { + "audio_tokens": 0, + "video_tokens": 0, + "cached_tokens": 0, + "cache_write_tokens": 0 + }, + "completion_tokens_details": { + "audio_tokens": 0, + "image_tokens": 0, + "reasoning_tokens": 0 + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "c182d1924a275839c623609b3dc31d63", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "search", + "provider": "exa", + "request_id": "af97dd483d68ec7a841de42d35835d19", + "cost_dollars": { + "total": 0.007, + "search": { + "neural": 0.007 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "a93aea9bc16aae80638988175e96f1f8", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "0c2340467d321bcecd17197843ac13e7", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "d4febefacafaea30bea0e141984fe3d8", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "feeba08cdd58721dc9e2c3d4579e413d", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + }, + { + "endpoint": "contents", + "provider": "exa", + "request_id": "5483b4933c769db88081b3d014a9c150", + "cost_dollars": { + "total": 0.001, + "contents": { + "text": 0.001 + } + } + } + ] + }, + "cap_cost_usd": 0.27249360000000006 + } + ], + "caseRows": [ + { + "id": "2aba8d8e-d33a-4d70-8425-60e01661cbfc", + "title": "Resolved: The United States federal government should substantially increase its investment in high-speed rail", + "side": "con", + "created_at": "2026-11-03T17:18:37.276128+00:00", + "debates": { + "motion": "Resolved: The United States federal government should substantially increase its investment in high-speed rail", + "settings": { + "role": "general", + "format": "policy" + } + } + }, + { + "id": "a0b42ecc-91dd-4267-87a5-202666370548", + "title": "Resolved: The United States federal government should substantially increase its investment in high-speed rail", + "side": "con", + "created_at": "2026-11-03T17:19:05.684525+00:00", + "debates": { + "motion": "Resolved: The United States federal government should substantially increase its investment in high-speed rail", + "settings": { + "role": "general", + "format": "policy" + } + } + } + ] +} diff --git a/scripts/generate_seo_content.py b/scripts/generate_seo_content.py index 4453523a..e9c74956 100644 --- a/scripts/generate_seo_content.py +++ b/scripts/generate_seo_content.py @@ -12,6 +12,7 @@ from seo_guides import GUIDES # noqa: E402 from seo_comparison_pages import BEST_AI_ALTERNATES, hreflang_links # noqa: E402 import seo_cluster # noqa: E402 +import seo_case_example as case_example # noqa: E402 ROOT = Path(__file__).resolve().parents[1] PUBLIC = ROOT / "public" @@ -77,6 +78,7 @@ def site_sentence(key): .checklist{list-style:none;padding:0;margin:14px 0;display:grid;gap:8px}.checklist label{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:14px;padding:10px 14px;background:rgba(255,255,255,.05);cursor:pointer}.checklist input{accent-color:#14B37D;width:1.1rem;height:1.1rem;margin-top:5px;flex:none} .hero .price{max-width:800px;color:var(--muted);margin:14px 0 0} .callout{max-width:840px;border:1px solid var(--line);border-radius:16px;padding:14px 18px;background:rgba(255,255,255,.05);margin:18px 0 0} +.case .facts{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:16px 0}.case .facts dt{color:var(--muted)}.case .facts dd{margin:0}.case h4{font-size:1.05rem;margin:1.6rem 0 .4rem}.case-list{padding-left:1.4rem}.case-list li{margin:0 0 14px}.case-list p,.speech p{margin:.3rem 0}.sources{padding-left:1.4rem;overflow-wrap:anywhere}.correction{color:var(--brand2);font-weight:750;text-decoration:none}@media(max-width:760px){.case .facts{grid-template-columns:1fr}.case .facts dd{margin-bottom:8px}} """.strip() PAGES = [ @@ -816,6 +818,87 @@ def spans_of(): raise SystemExit(f"{page['slug']} contains debate jargon") return html +def render_case_example_page(): + """/debate-case-example: real, unedited cases from scripts/case-examples/, with the copy in seo_case_example.py.""" + c = case_example + c.check_corrections() + url = page_url(c.SLUG) + if len(c.DESCRIPTION) > 155: + raise SystemExit(f"{c.SLUG}: meta description is {len(c.DESCRIPTION)} characters; the limit is 155") + if not 40 <= c.answer_words() <= 60: + raise SystemExit(f"{c.SLUG}: the answer box has {c.answer_words()} words; keep it to 40-60") + nav = "".join(f'{esc(label)}' for label, href in NAV) + samples = "".join(c.sample_html(number, sample) for number, sample in enumerate(c.SAMPLES, start=1)) + faq_html = "".join(f"
{esc(q)}

{esc(a)}

" for q, a in c.FAQS) + how_made = "".join(f"
  • {esc(line)}
  • " for line in c.HOW_MADE) + contents = "".join(f'
  • Sample {number}: {esc(heading)}
  • ' for number, (sample_id, heading, *_) in enumerate(c.SAMPLES, start=1)) + related = "".join(f'{esc(label)}' for href, label in c.RELATED) + graph = [ + {"@type": "Article", "@id": f"{url}#article", "headline": c.H1, "name": c.TITLE, "url": url, "description": c.DESCRIPTION, "inLanguage": "en", "dateModified": c.MODIFIED, "datePublished": c.PUBLISHED, "author": ORGANIZATION_REF, "publisher": ORGANIZATION_REF, "about": {"@id": SOFTWARE_ID}, "hasPart": [{"@id": f"{url}#sample-{sample[0]}"} for sample in c.SAMPLES]}, + *c.creative_works(url, SOFTWARE_ID), + {"@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": q, "acceptedAnswer": {"@type": "Answer", "text": a}} for q, a in c.FAQS]}, + {"@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": BASE + "/"}, {"@type": "ListItem", "position": 2, "name": "Debate case example", "item": url}]}, + ] + button = '' + html_out = f''' + + + + + {esc(c.TITLE)} + + + + + +{ICON_LINKS} + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +

    {esc(c.H1)}

    {esc(c.ANSWER)}

    {esc(c.HONESTY)}

    By the {esc(PRODUCT)} team · Published

    {button}
    +

    How these cases were made

      {how_made}

    {esc(c.FORMATS_NOTE)}

    Every case is copied from the raw output, apart from the corrections listed below. The raw output is published with the request, the model that served each call and the database rows in DebateOwl's GitHub repository.

    {c.corrections_html()}
    + {samples} +

    Write a case for your own motion

    {HOME_LINK} writes the same kind of case for any motion you are preparing, for your side and speaker role, with live web research.

    {button}

    {FREE_PLAN_HTML}

    +

    Frequently asked questions

    {faq_html}
    +
    + {about(c.SLUG)} +
    +
    + + + +''' + if re.search(r"Public Forum|World Schools|WSDC", html_out): + raise SystemExit(f"{c.SLUG} names a format DebateOwl does not generate cases in") + return html_out + +def case_example_llms_line(): + """The /debate-case-example line under "## Main pages".""" + return f"- [Debate case example]({page_url(case_example.SLUG)}): real {PRODUCT} case examples (British Parliamentary and Policy in English, Classroom in Hungarian) with \"If they say… we answer…\" replies and the R2" + # The comparison pages, in the order llms.txt lists them under "## Compare". Pages from # PAGES use their own H1 and description; the English pages from seo_comparison_pages.py get a line here # (the Spanish and Hungarian ones are listed under their language by localized_sections). @@ -893,7 +976,8 @@ def llms_txt(): - [About]({BASE}/about): what {PRODUCT} is, who runs it and its former name - [Contact]({BASE}/contact): email {SITE["contactEmail"]} for support and feedback, {SITE["privacyEmail"]} for privacy and data requests - [Press kit and facts]({BASE}/press): a one-sentence definition, former name, maker, languages, pricing, logo downloads and what {PRODUCT} is not -- [Full text]({BASE}/llms-full.txt): this file plus the plain text of the home page, About, Which AI is best for debate? and the press kit +{case_example_llms_line()} +- [Full text]({BASE}/llms-full.txt): this file plus the plain text of the home page, About, Which AI is best for debate?, the press kit and the debate case examples - [Sitemap]({BASE}/sitemap.xml): every public page ## Free tools @@ -928,6 +1012,9 @@ def main(): # Imported here so a failure in the comparison pages still names this script. from seo_comparison_pages import write_comparison_pages write_comparison_pages(PUBLIC) + directory = PUBLIC / case_example.SLUG + directory.mkdir(parents=True, exist_ok=True) + (directory / "index.html").write_text(render_case_example_page()) (PUBLIC / "llms.txt").write_text(llms_txt()) print(f"Generated {len(PAGES)} public SEO pages and llms.txt; the build writes sitemap.xml") diff --git a/scripts/llms-full.mjs b/scripts/llms-full.mjs index 958b40ff..270c9061 100644 --- a/scripts/llms-full.mjs +++ b/scripts/llms-full.mjs @@ -6,7 +6,7 @@ import { join } from 'node:path'; const DIST = 'dist'; const SITE_ORIGIN = JSON.parse(readFileSync('src/config/site.json', 'utf8')).origin; -const PAGES = ['/', '/about', '/best-ai-for-debate', '/press']; +const PAGES = ['/', '/about', '/best-ai-for-debate', '/press', '/debate-case-example']; const ENTITIES = { amp: '&', lt: '<', gt: '>', quot: '"', apos: "'", nbsp: ' ' }; const decode = (text) => text.replace(/&(#x[0-9a-f]+|#\d+|\w+);/gi, (entity, name) => { diff --git a/scripts/seo_case_example.py b/scripts/seo_case_example.py new file mode 100644 index 00000000..04881be6 --- /dev/null +++ b/scripts/seo_case_example.py @@ -0,0 +1,285 @@ +"""/debate-case-example: real DebateOwl cases, rendered from the raw output in scripts/case-examples/. + +The case text comes from the JSON files unchanged, except for the replaced source links and the +inline correction markers listed in case-examples/corrections.json, which the page names. Only the page copy around it lives here; +generate_seo_content.render_case_example_page() builds the page. +""" +from datetime import datetime +from html import escape +import json +import re +from pathlib import Path + +RAW = Path(__file__).resolve().parent / "case-examples" +RAW_URL = "https://github.com/Programcode/DebateOwl/tree/main/scripts/case-examples" + +SLUG = "debate-case-example" +TITLE = "AI Debate Case Example: Real DebateOwl Output | DebateOwl" +H1 = "What does an AI-written debate case look like?" +DESCRIPTION = "Three real DebateOwl cases (British Parliamentary, Policy, and Classroom in Hungarian), each a first speech and an R2, with every source linked." +PUBLISHED = "2026-11-03" +MODIFIED = "2026-11-03" +GENERATED_ON = "3 November 2026" +MODEL_NAME = "Claude Sonnet 5.5" +MODEL_ID = "anthropic/claude-sonnet-5.5" + +# The paragraph answer engines quote, straight under the H1. 40-60 words. +ANSWER = ( + f"Below are three real DebateOwl cases generated on {GENERATED_ON} with {MODEL_NAME}: " + "British Parliamentary and Policy in English, Classroom in Hungarian. Each first speech has an opening, " + "three arguments with evidence and why they matter, “If they say… we answer…” replies and a closing line. " + "The second speech (R2) backs them up and answers theirs." +) + +# (id, heading, format setting, side label, language name, language code) +SAMPLES = [ + ("bp-en", "British Parliamentary, in English", "British Parliamentary", "For the motion", "English", "en"), + ("policy-en", "Policy, in English", "Policy", "Against the motion", "English", "en"), + ("classroom-hu", "Classroom, in Hungarian", "Classroom", "For the motion", "Hungarian", "hu"), +] + +HOW_MADE = [ + "Each case was made with DebateOwl's Generate tool, the way a student uses it: start a debate with the motion and a format setting, generate the first speech (R1), then generate the second speech (R2) in the same debate, so the R2 can see and back up the R1.", + f"Model: {MODEL_NAME} ({MODEL_ID}), the default model for Pro accounts. Length Standard, audience Intermediate and tone Formal, which are the form's defaults; reasoning effort low.", + "Web research ran live for every speech. A case can only link a page that its own research returned; DebateOwl removes any other link before the case is shown.", + f"The runs used a local copy of DebateOwl rather than debateowl.com, so no student account or data was involved. One step differs from the live app: the short step that writes the web search queries also ran on {MODEL_NAME} here, where the app uses Claude Haiku 5.5.", + "One attempt failed: the first Hungarian R2 stopped with an error, so the Hungarian sample was generated again from the start. No other output was rerun or picked over another.", +] + +FORMATS_NOTE = "For cases, DebateOwl currently supports the British Parliamentary, Policy and Classroom format settings. Whatever the setting, it writes each speech for a four-speaker team in the 4-6-6-3 structure: Introductor (4 minutes), R1 (6 minutes), R2 (6 minutes) and Conclusor (3 minutes). The samples show R1 and R2." + +HONESTY = f"Generated {GENERATED_ON} with {MODEL_NAME}; not edited except formatting, two replaced source links and one marked correction, all listed below. Evidence leads link to their sources; check every source before you use it in a round." + +FAQS = [ + ( + "Can AI write a debate case?", + "Yes, as a draft. An AI case generator such as DebateOwl takes a motion, a side and a speaker role and writes the speech: an opening, arguments with evidence and why they matter, answers to what the other side is likely to say, a closing line and a source list. The samples on this page are real output, unedited apart from two replaced source links and one marked correction. A debater still has to open every source, check that it says what the case claims, and put the case into their own words before a round.", + ), + ( + "What should an AI debate case include?", + "The parts a debater prepares by hand: an opening with a hook and a line saying what you will prove; two to four arguments, each with a point, an explanation, evidence that names its source and year, and why it matters; “If they say… we answer…” replies to the other side's likely claims; a closing line; and a list of sources with links you can open. A second speech should back up the team's arguments and answer the other side instead of adding new arguments.", + ), +] + +RELATED = [ + ("/ai-debate-case-generator", "AI debate case generator"), + ("/how-to-write-a-debate-case", "How to write a debate case"), + ("/how-to-prepare-for-a-debate-with-ai", "How to prepare for a debate with AI"), + ("/debate-evidence-finder", "Debate evidence finder"), + ("/debateowl-pricing", "DebateOwl pricing"), +] + + +# Corrections after generation. A "from"/"to" change replaces a source link that did not load; an +# "after"/"marker" change keeps the generated wording and adds a visible "[correction: ...]" right after +# the words it corrects. Each names the raw text it expects, so a regenerated raw file fails here +# instead of keeping a stale correction. +CORRECTIONS = json.loads((RAW / "corrections.json").read_text()) +REPLACED_URLS = {change["to"] for correction in CORRECTIONS for change in correction["changes"] if "to" in change and change["path"][-1] == "url"} +MARKER = re.compile(r"\[correction: [^\]]+\]") + + +def raw(sample_id): + return json.loads((RAW / f"{sample_id}.json").read_text()) + + +def load(sample_id): + """The raw record with its corrections applied.""" + record = raw(sample_id) + for correction in CORRECTIONS: + for change in correction["changes"]: + if change["sample"] != sample_id: + continue + *parents, key = change["path"] + target = record[change["speech"]]["response"]["output"] + for step in parents: + target = target[step] + where = f"{sample_id} {change['speech']} {change['path']}" + if "marker" in change: + if not MARKER.fullmatch(change["marker"]): + raise SystemExit(f"{where}: marker {change['marker']!r} must read [correction: ...]") + if target[key].count(change["after"]) != 1: + raise SystemExit(f"{where}: correction {correction['id']} expects {change['after']!r} exactly once in the raw text") + target[key] = target[key].replace(change["after"], f"{change['after']} {change['marker']}") + continue + if target[key] != change["from"]: + raise SystemExit(f"{where}: raw value is {target[key]!r}, correction {correction['id']} expects {change['from']!r}") + target[key] = change["to"] + return record + + +def check_corrections(): + """Every correction names a known sample and still matches its raw file.""" + known = {sample[0] for sample in SAMPLES} + for correction in CORRECTIONS: + for change in correction["changes"]: + if change["sample"] not in known: + raise SystemExit(f"correction {correction['id']} names unknown sample {change['sample']}") + for sample_id in known: + load(sample_id) + + +def corrections_html(): + items = "".join(f"
  • {escape(correction['note'])}
  • " for correction in CORRECTIONS) + return f'

    Corrections after generation

    Every source was opened in a browser on {GENERATED_ON}. Two did not load, so each was replaced with a copy that does and that supports the same claim. One fact in the generated text is wrong; the wording stays as the model wrote it, with the correction marked inline in square brackets.

      {items}
    ' + + +def generated_at(record, speech): + """When the speech's main generate request finished, from its ai_requests row (UTC).""" + rows = sorted(row["created_at"] for row in record["aiRequests"] if row["feature"] == "generate") + stamp = datetime.fromisoformat(rows[0 if speech == "r1" else -1]) + return stamp + + +def _label(text, lang): + """A field label. Labels are English; on a Hungarian case they say so.""" + attr = '' if lang == "en" else ' lang="en"' + return f"{escape(text)}" + + +def _text(value): + """Escaped generated text, with each inline correction marker shown as a link to the corrections list.""" + return MARKER.sub(lambda match: f'{match.group(0)}', escape(value)) + + +def _p(label, value, lang): + return f"

    {_label(label, lang)} {_text(value)}

    " if value else "" + + +def _opening(output, lang): + opening = output.get("opening") or {} + parts = [f'

    Opening

    '] + if opening.get("hook"): + parts.append(f"

    {escape(opening['hook'])}

    ") + parts.append(_p("What we mean:", opening.get("definition", ""), lang)) + parts.append(_p("What we will show:", (output.get("caseStructure") or {}).get("thesis", ""), lang)) + return "".join(parts) + + +def _arguments(output, lang): + contentions = output.get("contentions") or [] + if not contentions: + return "" + items = [] + for number, item in enumerate(contentions, start=1): + title = item.get("title") or item.get("claim", "") + body = [ + f'

    {_label(f"Argument {number}:", lang)} {escape(title)}

    ', + _p("Point:", item.get("claim", ""), lang), + _p("Explanation:", item.get("reasoning", ""), lang), + _p("Evidence:", item.get("evidence", ""), lang), + _p("Needs source:", item.get("sourceQuery", "") if item.get("needsSource") else "", lang), + _p("Why it matters:", item.get("impact") or item.get("whyItMatters", ""), lang), + ] + items.append(f'
  • {"".join(body)}
  • ') + return f'

    Arguments

      {"".join(items)}
    ' + + +def _reinforce(output, lang): + reinforce = output.get("reinforce") or [] + if not reinforce: + return "" + items = "".join(f'
  • {escape(item.get("argument", ""))}

    {escape(item.get("text", ""))}

  • ' for item in reinforce) + return f'

    Backing up our case

      {items}
    ' + + +def _counters(output, lang): + counters = output.get("counters") or [] + if not counters: + return "" + items = [] + for item in counters: + body = [ + _p("They say:", item.get("targetArgument", ""), lang), + _p("We answer:", item.get("counterpoint", ""), lang), + f'

    {_label("Source:", lang)} {escape(item["source"])}

    ' if item.get("source") else "", + ] + items.append(f'
  • {"".join(body)}
  • ') + return f'

    If they say…

      {"".join(items)}
    ' + + +def _sources(output, lang): + sources = output.get("sources") or [] + if not sources: + return "" + items = [] + for source in sources: + name = escape(", ".join(part for part in (source.get("org", ""), str(source.get("year", ""))) if part)) + named = f'{name}' if source.get("url") else name + claim = f": {escape(source['claim'])}" if source.get("claim") else "" + replaced = ' (link replaced)' if source.get("url") in REPLACED_URLS else "" + items.append(f"
  • {named}{claim}{replaced}
  • ") + return f'

    Sources

      {"".join(items)}
    ' + + +def speech_html(output, lang): + """One speech in the app's own section order: opening, arguments or backing up, answers, closing line, sources.""" + closing = f'

    Closing line

    {escape(output["closingLine"])}

    ' if output.get("closingLine") else "" + inner = _opening(output, lang) + _arguments(output, lang) + _reinforce(output, lang) + _counters(output, lang) + closing + _sources(output, lang) + attr = "" if lang == "en" else f' lang="{lang}"' + return f'
    {inner}
    ' + + +def utc(stamp): + return f"{stamp.strftime('%H:%M')} UTC" + + +def sample_html(number, sample): + sample_id, heading, format_label, side, language, lang = sample + record = load(sample_id) + if record["debateFormatSetting"] != format_label: + raise SystemExit(f"{sample_id}: raw file says format {record['debateFormatSetting']}, page says {format_label}") + r1, r2 = record["r1"]["response"]["output"], record["r2"]["response"]["output"] + motion = record["r1"]["request"]["input"]["motion"] + for speech in ("r1", "r2"): + request = record[speech]["request"] + if request["model"] != MODEL_ID or request["input"]["role"] != speech or request["input"]["language"] != lang: + raise SystemExit(f"{sample_id} {speech}: the raw request does not match the page's model, role or language") + served = {call["upstreamModel"] for call in record[speech]["providerCalls"] if call["feature"] == "generate"} + if served != {MODEL_ID}: + raise SystemExit(f"{sample_id} {speech}: generate calls were served by {served}") + facts = [ + ("Motion", motion), + ("Side", side), + ("Format setting", f"{format_label} (speeches R1 and R2 of the 4-6-6-3 structure)"), + ("Language", language), + ("Generated", f"{GENERATED_ON}: R1 at {utc(generated_at(record, 'r1'))}, R2 at {utc(generated_at(record, 'r2'))}"), + ("Model", f"{MODEL_NAME} ({MODEL_ID})"), + ] + facts_html = "".join(f"
    {escape(term)}
    {escape(value)}" for term, value in facts) + answers = len(r2.get("counters") or []) + raw_link = f'

    Raw output: {sample_id}.json

    ' + return ( + f'
    ' + f'

    Sample {number}: {escape(heading)}

    ' + f'
    {facts_html}
    ' + f"

    First speech (R1)

    {speech_html(r1, lang)}" + f"

    Second speech (R2)

    " + f"

    No new arguments: about two minutes backing up the R1's arguments, then {answers} “If they say… we answer…” blocks the speaker picks from.

    " + f"
    Show the full R2 ({answers} answers){speech_html(r2, lang)}
    " + f"{raw_link}
    " + ) + + +def creative_works(page_url, software_id): + """One CreativeWork per sample for the JSON-LD graph.""" + works = [] + for sample in SAMPLES: + sample_id, heading, format_label, _, _, lang = sample + record = load(sample_id) + motion = record["r1"]["request"]["input"]["motion"] + works.append({ + "@type": "CreativeWork", + "@id": f"{page_url}#sample-{sample_id}", + "name": f"DebateOwl case ({format_label}): {motion}", + "genre": "Debate case", + "inLanguage": lang, + "dateCreated": generated_at(record, "r1").isoformat(), + "creator": {"@id": software_id}, + "url": f"{page_url}#sample-{sample_id}", + }) + return works + + +def answer_words(): + return len(ANSWER.split()) diff --git a/scripts/seo_guides.py b/scripts/seo_guides.py index 8efa02f9..f044f52a 100644 --- a/scripts/seo_guides.py +++ b/scripts/seo_guides.py @@ -232,7 +232,7 @@ ], }, "ai-debate-case-generator": { - "modified": "2026-11-02", + "modified": "2026-11-03", "definition": ("What is an AI debate case generator?", "AI debate case generator", "A tool that turns a motion into a draft debate case for one side and speaker role, with an opening, arguments backed by evidence, answers to what the other side will say and a source list, for a debater to verify and adapt."), "features": [ ("A case you can read out", "Each draft has an opening, arguments with an explanation, evidence and why it matters, \"If they say… we answer…\" replies, a closing line and the sources it cites."), @@ -241,7 +241,7 @@ ], "sections": [ ("What the case generator produces", [ - "Generate takes the motion from your Current Debate and returns a case you can read out, not a block of prose. Every draft has the same parts, in the order you would say them:", + "Generate takes the motion from your Current Debate and returns a case you can read out, not a block of prose. Every draft has the same parts, in the order you would say them. [See a real example](/debate-case-example): three unedited cases, each with its second speech.", {"list": [ "Opening: a hook that makes the judge listen, then the line \"Today we will show N arguments that prove…\".", "Arguments: each with a short title, the point in one sentence, an explanation of why it is true, evidence that names its source and year, and why it matters.", @@ -706,7 +706,7 @@ ], }, "how-to-write-a-debate-case": { - "modified": "2026-10-29", + "modified": "2026-11-03", "features": [ ("Motion analysis first", "Define the terms, write down what your side has to prove and find where the two sides disagree before writing a single argument."), ("Arguments that hold up", "Build each argument as a point, an explanation, evidence and why it matters, so a judge can follow it and an opponent cannot break it with one question."), @@ -715,7 +715,7 @@ "sections": [ ("What a debate case is", [ "A debate case is the argument your side will defend for the whole round, organised so a judge can follow it on first hearing. It is not an essay. An essay can explore; a case has to survive an opponent whose job is to find the weakest sentence in it. That is why good cases are built from small, testable parts: an opening that tells the judge what you will prove, two to four arguments that each prove something specific, answers to what the other side will say, and a closing line the judge remembers.", - "Every case {product} writes follows that shape, so you can hold a generated draft next to your own and compare them part by part. The process below works for every format. The format changes the length, the number of arguments and who gives which part, which the format section covers further down.", + "Every case {product} writes follows that shape, so you can hold a generated draft next to your own and compare them part by part. [See a real example](/debate-case-example) of three unedited {product} cases. The process below works for every format. The format changes the length, the number of arguments and who gives which part, which the format section covers further down.", ]), ("Eight steps from motion to finished case", [ {"steps": [ diff --git a/src/components/landing/GuideHub.tsx b/src/components/landing/GuideHub.tsx index df14c9d8..b9a41a2b 100644 --- a/src/components/landing/GuideHub.tsx +++ b/src/components/landing/GuideHub.tsx @@ -12,7 +12,7 @@ import { Reveal } from "./Reveal"; const GROUPS = [ { id: "practice", paths: ["/ai-debate", "/ai-debate-practice", "/ai-debate-case-generator", "/ai-rebuttal-generator", "/ai-debate-coach", "/debate-evidence-finder"] }, { id: "formats", paths: ["/public-forum-debate", "/lincoln-douglas-debate", "/policy-debate", "/british-parliamentary-debate", "/world-schools-debate", "/congress-debate"] }, - { id: "skills", paths: ["/how-to-write-a-debate-case", "/how-to-practice-rebuttals", "/debate-clash-points", "/debate-fallacies", "/debate-judge-adaptation", "/how-to-prepare-for-a-debate-tournament"] }, + { id: "skills", paths: ["/how-to-write-a-debate-case", "/debate-case-example", "/how-to-practice-rebuttals", "/debate-clash-points", "/debate-fallacies", "/debate-judge-adaptation", "/how-to-prepare-for-a-debate-tournament"] }, { id: "tools", paths: ["/tools", "/tools/debate-timer", "/tools/debate-motion-generator", "/tools/debate-flow-sheet", "/tools/speech-time-calculator"] }, { id: "compare", paths: ["/best-ai-debate-tools", "/best-ai-for-debate", "/free-vs-paid-ai-debate-tools", "/chatgpt-vs-claude-for-debate", "/best-ai-for-public-forum"] }, // Every /debateowl-vs-* page, so each one is a click from the home page. diff --git a/src/locales/en.json b/src/locales/en.json index a7510f88..caa9bd8a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1049,6 +1049,7 @@ "world-schools-debate": "World Schools", "congress-debate": "Congressional debate", "how-to-write-a-debate-case": "How to write a debate case", + "debate-case-example": "Debate case example", "how-to-practice-rebuttals": "How to practice rebuttals", "debate-clash-points": "Finding the key clash", "debate-fallacies": "Common debate fallacies", diff --git a/src/locales/es.json b/src/locales/es.json index 631a08a4..7ed40ea0 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1049,6 +1049,7 @@ "world-schools-debate": "World Schools", "congress-debate": "Debate de Congreso", "how-to-write-a-debate-case": "Cómo escribir un caso de debate", + "debate-case-example": "Ejemplo de caso de debate", "how-to-practice-rebuttals": "Cómo practicar refutaciones", "debate-clash-points": "Encontrar el choque clave", "debate-fallacies": "Falacias comunes en el debate", diff --git a/src/locales/hu.json b/src/locales/hu.json index 4305393b..8c197cec 100644 --- a/src/locales/hu.json +++ b/src/locales/hu.json @@ -1049,6 +1049,7 @@ "world-schools-debate": "World Schools", "congress-debate": "Kongresszusi vita", "how-to-write-a-debate-case": "Hogyan írj vitaesetet", + "debate-case-example": "Példa vitaesetre", "how-to-practice-rebuttals": "Hogyan gyakorold a cáfolást", "debate-clash-points": "A döntő ütközőpont megtalálása", "debate-fallacies": "Gyakori érvelési hibák",