What it does
AId Hominem is a live debate coach. It:
- Listens and transcribes speech in real time via streaming speech-to-text
- Flags logical fallacies as they're spoken — ad hominem, strawman, false dilemma, slippery slope, circular reasoning, emotional appeals, and more; each with the offending quote, a severity/confidence rating, an explanation, and a suggested follow-up question
- Fact-checks claims in real time by extracting a checkable claim, searching the web, reading sources, and returning a verdict (supported / contradicted / unclear) with citations
How we built it
- Backend (server.js) — a Node.js HTTP server with a hand-rolled WebSocket proxy.
- Speech-to-text — Deepgram streaming STT over a WebSocket proxy.
- Fallacy analysis — Gemini 3.1-Flash-Lite calls with a structured JSON output schema.
- Fact-checking — Gemini extracts one checkable claim, Browserbase searches and fetches pages, and a second LLM call produces the verdict with sources.
Challenges we ran into
- Real-time without latency death — running STT, fallacy analysis, and web fact-checking simultaneously meant carefully throttling work (analysis every ~15s, fact-checks every ~30s) so the UI stayed responsive.
- Writing a WebSocket proxy from scratch — to keep the dependency footprint tiny we implemented the WebSocket framing protocol over raw TCP ourselves, which meant debugging frame parsing by hand.
What we learned
- How to architect a single codebase that runs in both browser and Node/Electron contexts.
- The nuts and bolts of the WebSocket framing protocol.
- How to coax reliable structured JSON out of LLMs and combine multiple model calls into a search-and-verify pipeline.
What's next for AId Hominem
- Speaker diarization — attribute flags to who said what in multi-person debates.
- Post-debate reports — a scored summary of each participant's argument quality and fallacy count.
- Rebuttal suggestions — go beyond flagging and propose how to respond.
- Mobile and meeting integrations — Zoom/Meet/Teams plugins for live calls.
- Tunable strictness — let users dial sensitivity up for casual chats or down for formal debate.
- Personal coaching mode — analyze your own arguments over time to help you debate better.
Built With
- browserbase
- css
- deepgram
- electron
- google-gemini
- html
- javascript
- node.js
- openrouter
- web-audio-api
- websockets

Log in or sign up for Devpost to join the conversation.