Skip to content

Make guide product claims match the app - #157

Merged
Programcode merged 2 commits into
mainfrom
seo/fix-case-generator-claims
Oct 22, 2026
Merged

Programcode merged 2 commits into
mainfrom
seo/fix-case-generator-claims

Conversation

@Programcode

@Programcode Programcode commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

The case generator guide told readers to "turn on web research", but Generate has no such switch. It researches the motion on every run. I checked that guide and the other guide copy against src/ and supabase/functions/, and rewrote every sentence that claimed something the app doesn't do. Nine pages changed. Each now has dateModified and sitemap lastmod 2026-10-21; no other page moves.

What the app does

  • Generate always runs web research on the motion (supabase/functions/ai/features/generate.ts), lists the sources under the draft, and auto-saves the relevant ones to the debate's Library in an "Auto-saved" folder (src/lib/ai/sources.ts). It marks a contention "Needs Source" when it still needs evidence.
  • Generate's own form has side, speaker role (introductor, R1, R2, conclusor), and under More options the length (2, 3 or 4 contentions), audience level and tone. It always sends format: 'custom', and section regeneration takes no instruction.
  • The Current Debate has its own Format (Custom, British Parliamentary, Policy, Classroom), role and free-text Instructions. Generate receives all three as prompt context (_shared/debate-context-loader.ts, _shared/prompts/context.ts).
  • Sparring gets no Library sources. ai/index.ts says "A live sparring round stays transcript-only". Other tools get at most 10 active sources per request, ranked, with weak or irrelevant ones dropped.
  • Ask's toggle is labelled "Citations". A debate stores no side, so Ask works for both sides.

Changed sentences

/ai-debate-case-generator

Before After
Evidence leads: "Turn on web research to get sources alongside the draft, then check each one against the original before it goes on a card." "Every draft is researched on the web and lists the sources it found. Check each one against the original before it goes on a card."
Format templates: "Set the format and your role so the draft fits British Parliamentary, Policy, a classroom debate or a custom structure." Roles and length: "Pick your side and speaker role, then set the case length, the audience level and the tone of the draft."
"Set the format and your role, and add instructions if you need a particular angle, for example a principled argument or an economic one." "Choose your side and speaker role: introductor, R1, R2 or conclusor. Under More options, set the length (two, three or four contentions), the audience level and the tone. If you need a particular angle, for example a principled argument or an economic one, put it in the Current Debate's Instructions."
"Turn on web research if you want evidence leads, and generate the case." "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."
WSDC: "Generate with the custom format and say this in the instructions." "Leave the Current Debate's format on Custom and describe this split in its Instructions."
BP: "Set the format to British Parliamentary and choose your role." "Set the Current Debate's format to British Parliamentary and name your team position in its Instructions; Generate's own role options follow the School 4-6-6-3 speakers."
LD: "...regenerate it with an instruction to tie it to the standard you chose." "...add your criterion to the Current Debate's Instructions and regenerate the contentions."
FAQ: "They are research leads. With web research on, the draft includes sources, but you should open every one, confirm the exact claim and record the full citation before using it." "They are research leads. Every draft is researched on the web and lists the sources it found, and a contention that still needs evidence is marked Needs Source. Open every source, confirm the exact claim and record the full citation before using it."
FAQ: "You can set the format to British Parliamentary, Policy, Classroom or Custom and choose your role. For WSDC, Public Forum and Lincoln-Douglas, use Custom and describe the structure in the instructions." "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."

The prod sentence "With web research on..." appeared twice because the FAQ feeds both the visible FAQ and the FAQPage JSON-LD; both now carry the new answer.

/ai-debate-practice

Before After
"...the AI opponent in your third practice round can see the same Library sources you used to write your case..." "...the AI opponent in your third practice round argues the same motion you wrote your case for..."
"For opening, generate a case with the format set to British Parliamentary..." "For opening, generate a case with the Current Debate's format set to British Parliamentary..."
"Keep a short log for each session in the debate's notes or on paper." "Keep a short log for each session on paper or in a document."

/ai-debate-coach

Before After
"...turn on citation mode in Ask." "...turn on Citations in Ask."
"...because active sources are included in every answer for that debate." "...because active sources that fit the question are used in its answers for that debate."
FAQ: "Turn on citation mode in Ask and the answer includes sources you can open." "Turn on Citations in Ask and the answer includes sources you can open."
FAQ: "...so it keeps your motion, side and sources in context..." "...so it keeps your motion, debate settings and sources in context..."

/debate-rebuttal-practice

Before After
Build targeted blocks: "Turn each weakness into a short block with a tag line, the response and why it matters, kept in your Current Debate." "Each weakness comes with why it is weak, how the other side will attack it and a stronger version. Turn that into a short block; the analysis stays in your Current Debate."
"File each block in the same Current Debate so your rebuttals sit next to the case they answer." "Your Attack analyses stay in the same Current Debate, so your rebuttals sit next to the case they answer."

The app has no block feature. Attack's weakness fields are in packages/core/src/ai/schemas/attack.ts.

Library sources described as reaching every tool or answer

Page Before After
/best-ai-debate-tools "Library sources that ground every answer" "Library sources that ground its answers"
/debatelab-vs-chatgpt "Each tool reads the same context, so you never paste..." "The prep tools read that context, so you never paste..."
/debatelab-vs-chatgpt "Sources you add to the Library and mark active are used across the tools for that debate." "...are given to the prep tools for that debate, which use the ones that fit each request."
/debate-evidence-finder "Active Library sources ground the other tools for that debate..." "Active Library sources that fit a request are used by the other prep tools for that debate..."

/online-debate-timer (meta description only)

"Use DebateLab as an online debate timer for speech practice, prep drills, rebuttal timing, and tournament-ready pacing across formats." becomes "...for speech practice, rebuttal timing, and tournament-ready pacing across formats." The timer has speech presets and no prep timer, which the page body already says. The title is unchanged.

/argument-flowchart

These two are accuracy corrections, not false feature claims.

Before After
"A new flowchart starts with a thesis and three example arguments you can edit or delete." "A new flowchart starts with a thesis, three example arguments, an opponent attack and a rebuttal, all of which you can edit or delete."
"Mark weighing at each clash: a note on why your side of that clash matters more." "Mark weighing at each clash in a node's description: why your side of that clash matters more."

There is no note node type. The node types are thesis, contention, attack, rebuttal and dropped.

One claim to judge: the BP format setting

The new copy tells readers to set the Current Debate's format to British Parliamentary. That setting exists and reaches Generate's prompt, so it isn't a false feature claim. But the Generate request itself always sends format: 'custom', the prompt rules say request controls win when they disagree with student material, and _shared/prompts/generate.ts describes a 4-6-6-3 structure. Whether the BP setting changes the draft is model behaviour I can't prove from code. The copy hedges by saying Generate's own roles follow the 4-6-6-3 speakers. If even that reads as too strong, the fallback is to drop the format advice and say only "describe your BP position in the Instructions".

scripts/gsc_submit.py

The inspection list had four retired slugs, not three. /ai-tools-for-debate-students was there too. Each now points at its survivor from #155: /ai-debate-case-generator, /how-to-weigh-in-debate, /best-ai-debate-tools and /world-schools-debate. #155 kept the list unchanged because it includes the brand-redirect URLs on purpose. That note covers the brand URLs, which stay, and it isn't documented in the repo, so it didn't apply to the retired guide slugs.

Left alone

  • Pricing, WinDebate and DebateClub. Make the public pages readable for AI answer engines (AEO) #156 gives each a full GUIDES entry that replaces the current PAGES copy. That copy still has false claims, so these need fixing if Make the public pages readable for AI answer engines (AEO) #156 stalls:
    • pricing: a "Student plans" card (the only tiers are trial and Pro), and saved cases and history described as Pro-only (both tiers get all 11 modes);
    • DebateClub: the app called text-only, though Sparring and Crossfire run voice rounds.
  • The coach page undersells Ask: it says Ask knows the motion and active sources, but Ask also reads debate settings, Instructions and recent saved results. It isn't false, so I didn't change it.
  • /best-ai-debate-tools advice to "look for tools that let you set the format and your team position" is buyer advice, not a claim about the app.
  • No titles, canonicals, URLs, sitemap structure or brand/domain strings changed. I checked the <title>, canonical and meta description of every changed page against main, and only the timer description differs.

Overlap with #156

#156 regenerates every guide page, so the HTML in public/ conflicts with whichever merges second. Regenerate with python3 scripts/generate_seo_content.py after resolving the Python files. In scripts/seo_guides.py, #156 inserts "software": True directly above best-ai-debate-tools's "modified" line, which this PR changes, so that hunk needs a hand merge. This PR changes one line of scripts/generate_seo_content.py (the timer description), which #156's diff doesn't touch.

Checks

GitHub Actions can't run on this account right now (billing), so these are local results at this branch's head, not CI:

  • npm run docs:check, npm run lint, npm run typecheck: pass.

  • npm test: 37 files, 305 tests pass.

  • npm run build: passes, sitemap: 39 URLs, 39 with lastmod.

  • npm run verify at 7175c8d9: passes. That covers the same unit tests, 356 edge tests, the build, the service worker offline check and 30 desktop Chromium @smoke tests.

  • Visible FAQ matches the FAQPage JSON-LD on 9/9 changed pages.

  • No built guide page still contains "turn on web research", "web research on", "citation mode", "File each block", "ground every answer" or "in the debate's notes".

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated debate guide content and FAQs with clearer guidance on citations, web research, sources, debate settings, formats, speaker roles, case customization, and practice workflows.
    • Clarified that relevant active sources and Current Debate context are used when appropriate.
    • Expanded rebuttal, attack-analysis, flowchart, and weighing guidance.
    • Refined the online debate timer description to focus on speech and rebuttal timing.
    • Refreshed page update information and search-submission coverage for current debate resources.

The case generator guide told readers to turn on web research, but
Generate researches every motion and has no switch. It also put format
and instructions in Generate, where they live in the Current Debate.
Eight other guides claimed things the app does not do: Sparring reading
Library sources, a debate notes field, saved rebuttal blocks, sources
used in every answer, and a prep-timer use for the speech timer.

gsc_submit.py now inspects the survivors of the four guide slugs that
#155 retired. The brand-redirect URLs stay on purpose.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 21, 2026 15:26

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
debate-navigator Ready Ready Preview Oct 21, 2026 3:45pm UTC
debatelab-staging Ready Ready Preview Oct 21, 2026 3:45pm UTC

@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository YAML (base), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Free
  • Run ID: 34e80f17-42ba-4dd8-b398-134a5dd85b72
📥 Commits

Reviewing files that changed from the base of the PR and between 4f9e0a0 and 7175c8d.

📒 Files selected for processing: 12
  • public/ai-debate-case-generator/index.html
  • public/ai-debate-coach/index.html
  • public/ai-debate-practice/index.html
  • public/argument-flowchart/index.html
  • public/best-ai-debate-tools/index.html
  • public/debate-evidence-finder/index.html
  • public/debate-rebuttal-practice/index.html
  • public/debatelab-vs-chatgpt/index.html
  • public/online-debate-timer/index.html
  • scripts/generate_seo_content.py
  • scripts/gsc_submit.py
  • scripts/seo_guides.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The PR revises content across debate guides and SEO data. It updates guidance for case generation, sources, debate context, practice, and flowcharts. It also changes timer descriptions and search-console URL targets.

Changes

Debate guide and SEO content

Layer / File(s) Summary
Case generator guidance
public/ai-debate-case-generator/index.html, scripts/seo_guides.py
The pages describe automatic web research, source saving, configurable case details, source markers, and format-specific instructions.
Debate context and source guidance
public/ai-debate-coach/index.html, public/ai-debate-practice/index.html, public/best-ai-debate-tools/index.html, public/debate-evidence-finder/index.html, public/debate-rebuttal-practice/index.html, public/debatelab-vs-chatgpt/index.html, scripts/seo_guides.py
The pages clarify how Current Debate context and relevant active Library sources apply. Practice guidance covers same-motion rounds, British Parliamentary settings, and retaining Attack analyses in the Current Debate.
Flowchart guidance
public/argument-flowchart/index.html, scripts/seo_guides.py
The guides describe default opponent attack and rebuttal nodes and recording weighing in a node description.
Timer metadata and search targets
public/online-debate-timer/index.html, scripts/generate_seo_content.py, scripts/gsc_submit.py, scripts/seo_guides.py
The timer description removes “prep drills,” its modification date changes, and the search-console URL list uses updated paths.

Estimated code review effort: 3 (Moderate) | ~20 minutes

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

@Programcode
Programcode merged commit d749051 into main Oct 22, 2026
2 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants