Inspiration

We’ve all gotten too comfortable in our echo chambers. Somewhere along the way “I disagree” started meaning “I’m done listening.” It’s not just politics. It shows up in group chats, comment sections, family dinners, and even arguments about movies or music. A lot of people have lost the muscle for sitting with a different point of view long enough to actually consider it, let alone respond to it well. This hit close to home for our team. One of us is a design student who’s been met with instant hostility just for being curious about AI in creative work– not even disagreement, just a total refusal to hear the reasoning. Another is a religious developer whose views often don’t line up with their peers’, and who’s learned it’s safer to stay quiet than risk the reaction. Different beliefs, same experience: get shut down or judged the second a different opinion surfaces, instead of being given a real chance to explain the thinking behind it. We wanted to build something that actually rebuilds that muscle; not a lecture about civility, but something people would actually want to come back to. So we made it feel like the habits that already work: a daily ritual, like Wordle or a crossword, except what you’re practicing isn’t vocabulary. It’s the ability to argue a real position clearly and respectfully. Fun and addictive first. The civil-discourse training happens because you keep showing up, not because someone told you to.

What it does

Every day you get a new debate topic pulled from current events, pop culture, tech, and sometimes politics. There’s a weekly Music Monday theme day too, because the goal was never “get better at political arguments.” It’s “get better at disagreeing well, period.” You pick which side you actually believe in (no assigned positions), then debate Huey, our AI opponent, voice-to-voice in real time. Huey argues the other side using only pre-verified, sourced facts. No invented statistics. Huey isn’t static. As more people debate the same topic that day, our judge model checks the accuracy of new claims users bring up. Verified facts get added to a shared pool for that topic. So later debaters face a sharper, better-armed Huey than the first person who logged in that morning. The opponent effectively argues with the combined, fact-checked evidence of everyone who’s already debated that topic. Independently, a separate AI judge scores how respectfully you argued (no yelling, interrupting, or name-calling), and how well you argued (did you respond to the actual point, cite real evidence, stay consistent). Severe hate speech or sustained yelling ends the session immediately. If you come up short on either respect or substance, you get plain-language feedback, a specific claim to go verify, and resources showing the strongest legitimate case for both sides plus a neutral synthesis source. The idea is you come back sharper, not just scored. The real connection isn’t inside the site, it’s what the site is training you for. Every debate is just practice for the harder conversation that actually matters: the one with a real person in your life who sees things differently. We’re not trying to replace that relationship. We’re trying to be the rehearsal. Building the muscle so that when it’s a friend, a family member, or a classmate on the other side of a disagreement, you can actually stay in the conversation instead of shutting down or walking away. There’s also an archive so anyone can replay past days’ topics, and a streak system to keep people coming back daily (the same mechanic that turns Wordle into a habit instead of a one-off).

How we built it

After a long brainstorming phase, we built the project as a React + Vite + TypeScript app, backed by Firebase and Google Cloud, using Vertex AI to route between our models. Grok powers the voice, the opponent, the judge, and the factchecker, Judge Judge (JJ). The real-time pipeline (speech-to-text, opponent model call, text-to-speech, judge model call, a second, separate judge model call) plus both of our system prompts was built largely in Cursor’s agent mode. Voice (via Grok Voice) isn’t a feature we layered on top of a text app. It’s required infrastructure, because our respect scoring depends on hearing tone, volume, and interruptions that a transcript alone can’t capture. We deliberately split the AI into three structurally separate roles: An opponent model that argues one side using only the current fact bank for that topic, a completely separate judge model that scores respectfulness and argument quality without letting the topic itself influence either score, and another completely separate judge that validates the information flagged by the first judge before it gets added to the fact-sheet JSON.

We used Grok to research and compile each day’s seed fact bank, pulling from nonpartisan, verifiable sources that publish sourced data rather than opinion. The judge model extends that same fact bank live during the day: when it verifies a new claim from a user, that fact gets folded into the shared pool so later debaters (and Huey) can draw on it. We used Grok Bot for lightweight team coordination, like checking in on task status and keeping our frontend/backend work synced as we split up tasks under a tight deadline.

Challenges we ran into

Grounding the AI opponent was harder than it sounds. Early prompt versions let the model cite “facts” it was confident about that weren’t actually in our verified fact bank, which is exactly the kind of failure mode that would kill the whole premise of the site. We fixed it by hard-constraining both models to only cite claims present in the fact bank. Anything else gets marked “unverified” instead of being silently treated as true. Making the fact bank actually grow safely was its own design problem. We didn’t want a single overconfident judge call to permanently poison a topic’s fact pool for every subsequent user that day. So newly verified claims are staged as candidates rather than auto-promoted. It’s a deliberate tradeoff between “the opponent visibly gets smarter” and “we never let one bad verification corrupt the day for everyone else.” Detecting respect violations in real time was the other major hurdle. Yelling, interrupting, and name-calling all had to be caught from live audio and transcript data without adding noticeable lag. We ended up splitting detection across a decibel/pitch monitor, a speech-overlap detector, and a text-based toxicity classifier running in parallel, rather than asking one model to handle everything.

Accomplishments that we're proud of

We’re proud that “teach people civil discourse” and “make something people actually want to open every day” didn’t turn out to be in tension. The daily-streak format is what makes the lesson stick instead of feeling like a chore someone does once and abandons. Building the fact-bank architecture itself is something we’re proud of too. It’s a system where the opponent gets meaningfully better throughout the day, powered by real verified arguments from real users, without opening the door to a single bad-faith claim corrupting the day for everyone else. That took a lot of care to get right. We also pushed well outside our comfort zone by producing and editing 3 UGC-style short-form videos to get the idea in front of people, and had real people demo our site. Because social good is, at its core, social, we’re proud that this weekend was about more than shipping code. It pulled people outside our immediate circle into genuine conversations about the problem we’re trying to solve.

What we learned

Separating “the AI that argues” from “the AI that judges” turned out to be more than just good practice. It’s the difference between a debate app and a trustworthy one. Most of our early bias problems disappeared the moment we split those into two independent calls instead of having one model do both jobs. We also learned that framing matters as much as mechanics. The second we stopped pitching this as “a politics debate app” and started pitching it as “a daily game that makes you better at disagreeing, about anything,” the product got both more approachable and more honest about what it’s actually teaching. The skill was never really about any one topic. It was always about staying curious and respectful when someone sees things differently than you do.

What's next for Huey

We want to automate the daily topic-and-fact-bank pipeline further (right now it’s seeded manually for a handful of days), incorporate theme days, and develop the shareable daily result card to be customizable by the user; something people can send a friend after their debate the way people share their Wordle grid. That turns a solo daily habit into something people bring their friends into.

Built With

Share this project:

Updates

Submission history