Popular
join now

I Built a Debate Team Out of AI Agents — What Broke and What It Taught Me

AIML8hrs agorelease ICSteve
17 0

My daughter does Congressional Debate. That means bills, not resolutions to argue in the abstract — real legislative text with sections, definitions, and loopholes, and two sides who each have to find the exact sentence that wins or loses the round. She had seven bills to prep for an upcoming tournament and about a week to do it. I could have just asked Claude to “help her practice.” Instead I built a team.

Not a metaphorical team. Nine actual agents, plus one interactive skill, each with one job, each unable to do the others’ jobs by design.

Why a team and not one assistant. A single AI helping with debate prep tends to do the same thing a single overworked adult does: skim everything, catch some things, miss others, and never really argue against itself. Real debate prep isn’t one person’s job either — it’s a coach who knows structure, a parent who catches when something doesn’t land, a teammate who plays the opponent and tries to destroy your case before the actual opponent does. So I built exactly that, as software: a bill analyst who reads the raw legislative text and finds every undefined word before anyone starts arguing. A case writer who drafts both sides — with one hard rule: never invent a statistic, flag it as [NEEDS CITATION] instead. An evidence researcher whose entire job is checking whether a citation says what a case claims it says, with real web access to verify (the only agent on the team that gets it, on purpose). An opposition scout whose only job is to attack — no encouragement, no softening, just “here’s exactly how I’d beat this case.” A delivery coach who isn’t allowed to comment on content at all, only pacing and pauses. And three mock judges — a parent, a coach, a senior competitor — who each score the same speech through a genuinely different lens, on purpose, so disagreement between them is signal, not noise.

Then I ran it on all seven bills for real. Briefs, both-side cases, opposition attacks, delivery notes, evidence checks, full judge panels — forty-two ballots on the first pass. And this is where it got interesting, because the team caught things I wouldn’t have caught reading it myself.

One case — marine energy funding, a trillion-dollar ask — scored a 3.67 out of 10 average from the panel. Every judge, independently, flagged the exact same fatal flaw: the case’s answer to “how is this accountable” was a specific power it claimed the bill gave a federal agency. I went and checked the actual bill text. That power isn’t in there. Three separate agents, with three different jobs and three different ways of evaluating a speech, converged on the same fabricated line without coordinating with each other. That’s the whole argument for specialization plus adversarial review in one data point: nobody was looking for that specific failure mode, and all three found it anyway, because each was actually trying to break the case in its own way.

So I fixed it — not by asking for a better argument, but by finding what was actually true: it turns out the agency in question really does run something close to what the case wanted to claim, just not the way the case claimed it. Real citation, honest framing, same intent. Score went to 6.33. Nearly doubled, and it’s a stronger case now because it’s not lying about what the law says.

The team caught its own mistakes too, which I didn’t expect going in. Two agents tried to save their memory of what they’d learned between sessions and couldn’t — I’d scoped their tools too narrow, so the very first time each one ran, it hit a wall trying to do something I’d designed it to do. One agent, writing to a file for the first time, put it in the wrong folder entirely, nested a system directory inside a content directory where it didn’t belong. None of this was a debate problem. It was an infrastructure problem, the same kind you’d hit building any real system with several moving parts — except here the moving parts write to Obsidian notes instead of a database.

By the end I had briefs, cases, attacks, delivery notes, and forty-some judge ballots spread across a dozen files per bill, which is thorough but not exactly readable at a glance. So the last piece was a single HTML file with tabs — one tab per bill, sub-tabs for each type of prep material — so all of it opens in one page instead of a folder full of markdown files. Then, because half my daughter’s debate teammates are more comfortable reading in Chinese, I had the whole thing translated and added a toggle in the corner. Same report, two languages, one click to switch.

The thing I keep coming back to: none of this worked because the AI got smarter partway through. It worked because I stopped asking one model to do everything and started asking narrower questions to more specific roles, and let them check each other. That’s not a debate-specific lesson. It’s the same lesson as the personal document organizer idea I wrote about a few weeks ago — automating something well isn’t about doing more, it’s about defining exactly what each piece is responsible for, and being honest about what breaks when you actually run it.

© Copyright notes

Related posts

No comments

No comments...