Inspiration

Proposed by a mother constantly interrupted at the dinner table, only to hear the most outrageous scientific lie known to man, we have delivered and created Roundtable. Primarily designed to prove certain people dominate a conversation and interrupt others, we have expanded for two birds with one stone. Now documenting the entire discussion and points made, we can research to confirm or deny the claims they shouted over you to make.

What it does

Roundtable lets you record any discussion directly in the browser. Once submitted, it automatically transcribes the audio and identifies each speaker, showing a full transcript with speaking time breakdowns per person. It detects interruptions, flagging who cut off who and how many times. An AI analysis then breaks the conversation into hierarchical topics, summarising each speaker's position on every point raised. Finally, for any topic, you can trigger a fact-check: it finds the specific factual claim each person made, searches the web for real academic and journalistic sources, and delivers a per-person verdict wether it's supported, contradicted, nuanced, or unverifiable — with clickable citations.

How we built it

Roundtable is a full-stack TypeScript app built on Next.js 16 with React 19 and Tailwind CSS. Audio is captured in the browser via the MediaRecorder API and submitted to AssemblyAI for transcription and speaker diarization. Once transcribed, Claude Haiku (Anthropic) analyses the full transcript and returns a structured breakdown of topics, sub-topics, and each speaker's stances. Fact-checking runs a two-pass pipeline: Claude extracts a searchable claim from each stance, Tavily fetches real web sources, and Claude synthesises a verdict with citations. All data is stored in a PostgreSQL database hosted on Neon, managed through Prisma. The visualisations are built with D3.js including visually understandable timelines and topic bubble graphs.

Challenges we ran into

Initially starting as a local SQLite database, manouvering to a shared cloud PostgreSQL was an important step to help synchronise across devices, going from a local project to a more reliable product. Getting speaker diarisation to behave consistently was tricky — AssemblyAI's API had several breaking changes between versions (deprecated parameters, renamed methods) that required careful debugging. As a failsafe, users can add speakers and modify all transcripts accordingly.

The fact-checking pipeline required careful prompt engineering to distinguish genuine factual claims from opinions, so the contradicted verdict isn't triggered unfairly. Migrating from a database mid-development (so the whole team could work against the same data).

Accomplishments that we're proud of

The fact-checking pipeline is the standout, going from a spoken opinion to a real verdict backed by actual sources and working links, entirely automated, is very useful. The interruption detection works without any external API, computed purely from utterance timestamps. The hierarchical topic analysis with per-speaker stances gives a structured, objective record of what was actually argued. And the whole thing works end-to-end in a browser - record, transcribe, analyse, fact-check, with no setup required for the people in the room.

This has already be intergrated with a google, slack login and single use email login. From our current point of a local host, porting this would be an achievable but important next step, either to a private mesh network like Tailscale or publically hosted.

What we learned

Prompt engineering for structured output is an underrated skill. We also learned that relational data modelling matters early, due to prior planning our schema held up well as features were added because the relationships between recordings, speakers, utterances, topics, and stances were thought through from the start.

What's next for Roundtable

Currently it is only a fully functional localhost website with a cloud database, but we would plan to port this to mobile devices as an application and create a free and subscription tier to pay for user's AI token usage.

Try Out Note: Due to API keys in the .env, the github will only work given the viable API Keys.

Built With

Share this project:

Updates