It listens. Then it asks the next question.
Real-time two-way voice with adaptive follow-ups. Built on LiveKit. STT via Deepgram. LLM via google/gemini-2.5-flash. TTS via Cartesia.
Built on LiveKit · LL144-ready · 3 free, no card
What it does in 12 minutes
From “hello” to scored report in twelve minutes.
Five stages. The timing is a guide, not a script — the agent moves faster when answers are tight, slower when there is something worth following up on.
Intro (0:00 – 0:45)
Agent joins the room, greets the candidate by name, states the role being interviewed for and the 12-minute cap. Confirms consent to record + transcript. If the candidate declines, the call ends cleanly with no scoring.
Role-specific opener (0:45 – 2:00)
One open-ended question pulled from your rubric — "walk me through the last shipped project where you owned X." The opener anchors everything that follows; later questions reference what the candidate just said.
Four to six questions with adaptive follow-up (2:00 – 10:30)
Each rubric criterion gets one primary question. When the answer is thin, vague, or contradicts something said earlier, the agent presses — "you mentioned the migration took two weeks; what broke first?" — instead of moving on. This is the part scripted AI screening skips.
Wrap (10:30 – 11:30)
Agent asks the candidate what they want the hiring team to know that the questions did not cover, then asks for one question back. Both go into the report.
Handoff (11:30 – 12:00 + post-call)
Agent closes the call. Audio is destroyed on hangup by default. Transcript saves, rubric scoring runs against the captured turns, recruiter and candidate both get the report within 60 seconds.
What it catches
Adaptive follow-up defeats ChatGPT-scripted candidates.
We don’t run cheat-detection. We just talk fast enough that scripts fall apart.
Half-answers
Candidate names the project but never says what they personally did. The agent asks, "what specifically did you build vs review?" — and waits.
Weak claims
"I led the migration." Led how? Who reported to you? What broke? Three follow-ups in fifteen seconds. Scripted answers fall apart here.
Mid-thought pivots
Candidate starts answering a system-design question, drifts into team politics, never returns. The agent notes the pivot and steers back: "before we move on — what was the architecture you landed on?"
Context-misses
Question references a detail the candidate already shared. If the answer ignores that detail, the agent surfaces it: "earlier you said the team was three engineers — does that change the answer?" Catches ChatGPT-scripted replies that have no memory of turn three.
How it’s built
Five pieces. Named. No black box.
We pin model and provider versions per session so the audit log can replay exactly what produced a given score. How we score →
LiveKit Cloud
Transport + room
Sub-100ms WebRTC for the audio leg. Single room per session. Recruiter never joins the room — the candidate talks to the agent only.
Deepgram
Speech-to-text
Streaming STT via LiveKit Inference. Partial transcripts feed the LLM as the candidate speaks, so the next turn can start the moment they stop.
google/gemini-2.5-flash
LLM (reasoning + turn-taking)
Decides whether the last answer was complete, picks the next question from the rubric, and writes the follow-up in the candidate’s own phrasing. Pinned per session so audit replay matches what was actually said.
Cartesia
Text-to-speech
Low-latency neural TTS. Natural cadence, no robotic stitching. The voice the candidate hears is the same across the whole interview.
Next.js 15 + Vercel
Web + API
Session setup, /api/token issues a LiveKit token scoped to the interview, transcript and report storage on Neon Postgres.
What we don’t do
We don’t proctor. We don’t cheat-detect. We score what was said.
No webcam-watching, no keystroke logging, no “AI-content detection” theatre. The voice agent listens to the answer and asks the next question — that is the entire product. If a candidate gets help from an LLM and still passes the follow-ups, they passed the screen.
FAQ
Voice agent questions, answered straight.
How fast is the voice loop?+
End-to-end turn latency runs roughly 600–900ms on a clean connection: Deepgram streams partial STT as the candidate speaks, Gemini 2.5 Flash decides the next turn, Cartesia speaks within a few hundred milliseconds of token generation. It feels like a phone call, not a chatbot.
What about accents and non-native English?+
Deepgram’s streaming model handles most English accents we have tested without per-candidate tuning. The agent does not penalize accent or pace — only what was said. If a candidate is hard to transcribe, the rubric scorer flags "transcription confidence low" rather than guessing.
Can the candidate interrupt the agent?+
Yes. Voice activity detection lets the candidate cut in mid-sentence; the agent yields and listens. That matters: a real first-round is a conversation, not a monologue with pauses.
What happens if the candidate’s connection drops?+
LiveKit reconnects automatically when the network returns. If the candidate is offline longer than thirty seconds, the session pauses; if it stays offline past the 12-minute window, whatever was captured is saved as a partial transcript with a "connection lost" annotation on the report.
Is the audio kept?+
No. Audio is destroyed on hangup by default. We keep the transcript — that is the artifact both you and the candidate need. If you have a legal requirement to retain audio (rare), you can enable it per session and disclose it to the candidate in the consent step.
What languages are supported?+
English today, across major dialects. Spanish and French are in testing with the same stack. If you need a specific language pair before launch, tell us — the LiveKit Inference stack supports many; the limit is which we have validated for scoring quality.
Hear it for yourself. 90 seconds, no signup.
The candidate experience is on the homepage as a floating widget. Click it, talk to the agent, judge it on the only thing that matters: the conversation.