Two production-grade real-time voice agents built on Vapi, served through a live browser demo in which either agent can be spoken to directly. The AI Interview Agent runs a staged screening interview across five roles — Frontend Engineer, Backend Engineer, Sales Representative, Customer Success Manager and Product Manager — asking adaptive follow-ups and scoring the candidate against a role-specific five-competency rubric. The Outbound SDR Agent runs a cold-call simulation covering a permission opener, discovery, objection handling and a written CRM record. Each call ends with a generated report rather than a chat log: the interview produces competency scores of 1-5 with supporting evidence, a recommendation and a coaching note, while a live stage rail is inferred from the transcript as the conversation progresses. Both assistants are defined in code and passed inline to the Vapi SDK, so prompts, voice configuration and analysis schemas live in version control rather than only in a dashboard.
Follow-ups are the core instruction: the prompt names the gap patterns to probe — a claim with no number, "we" with no personal role, a decision with no stated alternative — and caps follow-ups at two per topic so it probes without interrogating.
The agent never evaluates out loud; all feedback is withheld until the written scorecard, which is what makes the scoring read as independent.
Scoring is calibrated against absence: a competency that never came up scores 0 and renders as "n/a" rather than a low mark, countering the default model tendency to award a polite 3 to everything.
Turn-taking is tuned for thinking time at a 1.1s wait and three-word barge-in threshold, against 0.5s and two words for the sales agent, so a mid-answer pause is not spoken over.
Single Source of Truth per Role
Each role's competency rubric simultaneously drives what the agent probes, what the post-call schema extracts and what the scorecard renders.
That shared definition is why every score traces back to something the agent actually asked about.
Adding a role means appending one entry with 4-6 competencies; prompt, schema, scorecard and role picker all derive from it with no other file changes.
A live stage rail is inferred from the transcript, moving through intro, experience, depth, behavioural, candidate questions and wrap.
Credential & Deployment Security
The Vapi private key never reaches the browser: a server route exchanges it for a short-lived public-tagged token.
A deployed public demo therefore cannot be farmed for calls against the owner's Vapi account.
Built-in Vapi voice and Soniox transcription are used so the demo runs without any third-party provider keys.
A dev-only preview route renders the scorecard against fixture data, so report UI can be iterated without placing a call.
Responsible-Use Guardrails
Both agents identify as AI when asked; the prompts forbid denying it.
The interviewer is instructed never to probe age, family, religion, ethnicity, disability, citizenship or other protected characteristics, and never to ask for salary history.
The SDR agent stops selling after two refusals and honours removal requests.
Documented as a practice and demonstration tool, with an explicit caveat that scoring from a ten-minute voice conversation is not a validated hiring instrument.
Impact
Demonstrated two distinct real-time voice agents — screening interviewer and outbound SDR — in a single browser demo that produces a structured report instead of a transcript dump.
Made voice-agent scoring auditable by deriving probing questions, extraction schema and scorecard from one shared per-role rubric.
Kept a publicly deployable voice demo safe to host through ephemeral server-minted tokens, so the private key is never exposed to the browser.