Demo Conversation

The 30-second demo interview itself (D2/D3): claims the daily quota, asks and speaks one question, records the answer, and grades it for real. A pause in speech ends recognition but does not submit — the visitor reviews the transcript and presses "Finish answer" themselves, and a browser with no SpeechRecognition gets a text field instead of a dead end.

Live

The real component. Unlike the mic check, this one is not free to run: it claims your actual daily demo quota and calls billed Gemini TTS and grading, so it stays off until you ask for it.

Starting this claims a real demo quota slot and calls billed TTS/grading — same as pressing "Start demo" on /setup.

PropTypeDefaultDescription
language'ua' | 'en'—Picks the copy from `demoCopy` and the TTS/recognition locale.
onGraded({ overall, criteria }) => void—A real reading from `/api/grade`. Fires once, at the end of D3.
onQuotaUsed() => void—`/api/demo` returned 429 — today's per-IP quota is spent.
onError() => void—Any other failure — network, TTS, or grading. Never shown as a dead end here; the parent routes to the form.

States

All six stages plus the text-input fallback, drawn through `DemoConversationView` with no network or device access — including `reviewing`, which only exists once a real answer has been heard, and the fallback, which only exists in a browser with no SpeechRecognition.

Demo interview

Підготовка...

Preparing your question…

claiming — /api/demo is claiming today's quota; nothing is on screen yet

Demo interview

Говорить

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

asking — the question is shown and (if TTS succeeded) being read aloud

Demo interview

Слухає

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

Tap the mic and answer

ready — waiting for the mic to be tapped

Demo interview

Слухає

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

Recording… tap again to stop

recording — SpeechRecognition is live

Demo interview

Слухає

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

I noticed our onboarding checklist had a 40% drop-off on step three, so I added a live preview of the result before asking for the input that produced it.

reviewing — recognition ended with a real answer; the visitor confirms before it is graded

Demo interview

Слухає

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

Tap the mic and answer

ready, with a nudge — "Finish answer" was pressed on nothing (or recognition ended in silence)

Demo interview

Думає

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

  1. Analyzing your response...
grading — /api/grade is in flight, ThinkingSteps reused as-is

Demo interview

Слухає

Tell me about a product you recently made better. What exactly did you change — and how did you know that was the thing to change?

Microphone isn't available in this browser — type your answer instead

ready, text fallback — SpeechRecognition is unavailable in this browser (e.g. Firefox)
PropTypeDefaultDescription
stage'claiming' | 'asking' | 'ready' | 'recording' | 'reviewing' | 'grading'—What has happened so far.
questionstring—The demo question — shown once claimed, hidden during `claiming`.
transcriptstring—Captured (mic) or typed (fallback) answer.
nudgestring | nullnullInline validation — set only after "Finish answer" was pressed on nothing.
speechAvailableboolean—`false` swaps the mic controls for a text field.
Sergiy Klymkovych

VoiceMock was built by one designer

I'm Sergiy, a product designer. I built this trainer myself — research, design system, code. On LinkedIn I show how products like this come together, and what it changes in a designer's work.

Product Designer · AI Design Engineer · Designer for Startups

See it on LinkedIn