← Back to work
AI AutomationLab build · Tessera (fictional SaaS)2026

Lab build: a browser-native voice booking agent that went 73.3% → 100% task completion

A portfolio lab build on Tessera (a fictional SaaS): a browser-native, push-to-talk voice agent that books appointments. It can only offer slots the calendar actually returned, books atomically so exactly one caller wins a contested slot, and issues real confirmation codes; a committed eval caught the model silently reformatting slot IDs and drove task completion from 73.3% to 15/15.

Lab build: a browser-native voice booking agent that went 73.3% → 100% task completion
Role
Solo build (Claude Code)
Stack
Next.js · TypeScript · Web Speech API · Gemini (free-tier) · Vercel
  • 15/15 (100%)Task completion (15-dialogue eval)
  • 15/15 (100%)Tool-sequence correctness
  • 73.3% → 100%Same eval before the slot-ID fix

The problem

Voice booking agents demo beautifully and fail quietly: the model offers slots that don't exist, mangles the IDs it's handed, or double-books a slot two callers grab at once, and none of it shows up until a real customer is standing at a closed door.

The approach

  1. Push-to-talk voice UI built on the Web Speech API, with a text fallback for Firefox and accessibility so the agent still works where speech recognition doesn't.
  2. A tool-calling agent constrained to reality: it can only offer slots the calendar returned, and booking is atomic. Concurrent attempts on the same slot resolve to exactly one winner, each with a real confirmation code.
  3. The honest story: the first eval run scored 73.3% because the committed eval caught the model reformatting slot IDs into silent booking failures. Fixed server-side with a canonicalization step that never resolves to a nonexistent slot, then re-measured at 15/15.
  4. Portable by design: the same turn loop moves to Vapi, Retell, or Twilio by swapping only the I/O layer.

The results

A voice booking agent that can't offer a slot it doesn't have or double-book one it does, proven by an eval that already caught one real silent-failure class and now holds at 100%, and portable to a phone-network stack without rewriting the agent.

Have a process like this eating your team's time?

Book a 15-minute fit call →
BOOK A FIT CALL