Inspiration
Anyone who's run user interviews knows the real cost isn't the conversation — it's everything around it: scheduling, transcribing, re-reading forty minutes of notes to find the one quote that matters. We wanted to see if an AI could actually conduct a good interview — not a rigid survey, but something that follows up on what a person just said — and then let a researcher treat the finished interview like a colleague they can just ask questions to, indefinitely, without re-reading anything.
What it does
A researcher creates an interview with a topic and a goal and gets a link. Whoever opens it has a live, adaptive conversation — by typing or by voice — with an AI interviewer that asks one open-ended question at a time and actually follows up on specifics, capped at 8 questions so it wraps up warmly instead of going forever. Ending the interview auto-generates a summary, themes, and notable quotes. Interviews can be grouped under a "subject" (the person interviewed), the whole project can be exported as a single .txt file for another AI to ingest in one pass, and a separate "Ask about this interview" panel gives the researcher a persistent-memory chat to interrogate any past interview after the fact.
How we built it
Next.js (App Router) and Tailwind CSS v4 on top, Postgres via Neon for storage — with the project branched so local development never touches production data — and Prisma syncing the schema on every build. Claude conducts the interview and writes the structured analysis. Voice input comes from the browser's native Web Speech API; voice output is ElevenLabs' text-to-speech (the Burt voice), toggleable with a manual fallback for browsers that block autoplay. The "ask about this interview" feature runs on Backboard, whose whole pitch is persistent thread memory — the first question primes a thread with the full transcript, and every question after that needs no re-sent context. It's deployed on Vercel, wired to Neon's native integration for the production database connection.
Challenges we ran into
The gnarliest one: interview replies started coming back blank. It turned out Claude's extended thinking was occasionally consuming the entire token budget before writing any actual reply text — the response had a thinking block but zero text blocks, and our code was only ever looking at content[0]. Fixed by scanning all content blocks for the real text and giving the budget more headroom.
Right after that, we found a second, subtler bug while testing the fix: React's dev-mode double-effect invocation raced two separate "kickoff" calls for a single brand-new interview, generating two different opening questions before either had a chance to check whether one already existed. That needed a ref-based guard, not just a bigger token budget.
Vercel's serverless functions have a read-only, ephemeral filesystem, which we didn't hit until deploy time — the original SQLite prototype simply couldn't write in production, forcing a switch to real Postgres (and, while we were at it, setting up separate dev/prod database branches so local testing would stop leaking into the live site).
And then there was the ordinary chaos of juggling three external API keys (Anthropic, ElevenLabs, Backboard) without ever typing a raw secret into a file by hand — piping values between trusted local tools instead, and discovering along the way that a botched terminal paste can silently truncate a key to 18 characters without any obvious error.
Accomplishments that we're proud of
Getting a genuine two-way voice conversation working end to end — speech in via the browser, an adaptive AI interviewer in the middle, speech out in a real, named voice — without ever making voice a requirement; every bit of it degrades gracefully back to plain text. We're also proud of catching the blank-reply bug ourselves through testing rather than shipping it, and of the interview cap: it sounds like a small feature, but the difference between an AI that interviews you and an AI that interrogates you forever comes down to exactly that one design decision. And we're proud the whole thing is genuinely accessible — proper labels, a live-announced transcript, visible focus states, motion that respects prefers-reduced-motion — not bolted on at the end, but part of the same pass as the visual design.
What we learned
A model's internal reasoning can quietly eat the budget meant for its actual answer — never assume the first content block is the one you want. A branched database is cheap insurance against a demo where "works locally" and "still has last week's test data in production" turn out to be the same sentence. And a bounded number of questions, with a real closing line instead of a hard cutoff, is the difference between an AI interview and an AI interrogation.
What's next for Prologue UX
Cross-interview synthesis: right now each interview's analysis stands alone — the natural next step is rolling themes up across every interview with a given subject, or across an entire research project, so patterns across ten participants surface automatically instead of by hand. We'd like the Backboard-powered Q&A to reach across the whole project's memory, not just one interview at a time, so a researcher can ask "what did everyone say about pricing?" and get one answer instead of ten. On the voice side, real-time streaming responses (rather than waiting for a full reply before synthesizing speech) would make the conversation feel less like turn-taking and more like talking. And for teams: shareable read-only research reports, and multi-researcher workspaces so a whole team's interviews live in one place instead of one person's dashboard.
Built With
- analytics
- anthropic
- api
- backboard
- claude
- css
- elevenlabs
- git
- github
- javascript
- llm
- neon
- next.js
- node.js
- postgresql
- prisma
- react
- recognition
- rest
- speech
- tailwind
- text-to-speech
- typescript
- vercel
- web

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