<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: jareer nauman</title>
    <description>The latest articles on DEV Community by jareer nauman (@jareer_nauman_ba24aa80b87).</description>
    <link>https://dev.to/jareer_nauman_ba24aa80b87</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4137290%2F1b15b7ba-9821-494f-8595-c67ea401146f.png</url>
      <title>DEV Community: jareer nauman</title>
      <link>https://dev.to/jareer_nauman_ba24aa80b87</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jareer_nauman_ba24aa80b87"/>
    <language>en</language>
    <item>
      <title>How I build AI voice agents that actually book appointments (not just talk)</title>
      <dc:creator>jareer nauman</dc:creator>
      <pubDate>Tue, 22 Sep 2026 09:22:11 +0000</pubDate>
      <link>https://dev.to/jareer_nauman_ba24aa80b87/how-i-build-ai-voice-agents-that-actually-book-appointments-not-just-talk-3ani</link>
      <guid>https://dev.to/jareer_nauman_ba24aa80b87/how-i-build-ai-voice-agents-that-actually-book-appointments-not-just-talk-3ani</guid>
      <description>&lt;p&gt;A production AI voice agent is not a chatbot with a microphone. It's a phone system that transcribes the caller, reasons with an LLM, speaks back fast enough to feel human, and writes the outcome into a calendar or CRM. I build these for dental, healthcare, fitness, and mortgage businesses, including agents that book real appointments after hours.&lt;/p&gt;

&lt;p&gt;Most people evaluate a voice agent the wrong way. They listen to a two-minute demo, hear a pleasant voice, and assume the hard part is the model. The hard part is everything around the model: the phone network, the speech pipeline, the calendar, the CRM, and the half-second of silence that makes a caller hang up.&lt;/p&gt;

&lt;p&gt;I work on more than ten live AI platforms, including VoiceCake, Rawk.ai, and Dynaris. This is the production checklist I use before an agent is allowed to sit on a real phone number.&lt;/p&gt;

&lt;p&gt;What a production voice agent actually is&lt;/p&gt;

&lt;p&gt;An inbound agent answers a missed or after-hours call, identifies intent, collects the facts it needs, and either completes the job or hands off cleanly. An outbound agent places follow-up or reminder calls with the same discipline. Both are phone systems first. The LLM is one component.&lt;/p&gt;

&lt;p&gt;A working stack usually looks like this:&lt;/p&gt;

&lt;p&gt;Telephony: Twilio or a comparable SIP/PSTN layer for a real number, recording policy, and failover path.&lt;br&gt;
Speech-to-text: Deepgram or equivalent, tuned for the accent mix and vocabulary of the business, provider names, insurance terms, and service codes.&lt;br&gt;
Reasoning: an LLM behind LangChain or LangGraph, so the conversation can branch, retry, and recover instead of following a rigid tree.&lt;br&gt;
Text-to-speech: ElevenLabs or similar, with a barge-in so the caller can interrupt.&lt;br&gt;
Orchestration: Vapi or Retell AI when they fit, custom glue when they don't.&lt;br&gt;
Systems of record: the calendar, CRM, and notification tools the staff already trusts.&lt;/p&gt;

&lt;p&gt;If the agent can't write a confirmed appointment into the same calendar a human receptionist uses, it's not a booking agent. It's a voicemail with extra steps.&lt;/p&gt;

&lt;p&gt;The latency budget is the product.&lt;/p&gt;

&lt;p&gt;Callers don't forgive lag the way chat users do. A 900ms gap after every sentence feels like a bad connection. People talk over the agent, the agent talks over them, and the call collapses into noise.&lt;/p&gt;

&lt;p&gt;On Rawk.ai, a live voice-agent builder platform, I led a latency pass that dropped end-to-end response time from roughly 900ms to roughly 320ms. That's not a marketing number. It's the difference between a call that feels robotic and one that feels human.&lt;/p&gt;

&lt;p&gt;A practical budget, measured from the end of the caller's utterance to the start of audible speech:&lt;/p&gt;

&lt;p&gt;STT partials and endpointing: keep streaming, don't wait for a perfect transcript before thinking.&lt;br&gt;
LLM time-to-first-token: stream the reply, never buffer a full paragraph.&lt;br&gt;
TTS time-to-first-byte: start audio as soon as the first clause is ready.&lt;br&gt;
Tool calls: prefetch calendar availability before you need it, cache what doesn't change mid-call.&lt;br&gt;
Network: colocate STT, LLM, and TTS as close as the providers allow, extra regions add tens of milliseconds you can't buy back with a better prompt.&lt;/p&gt;

&lt;p&gt;Sub-400ms is the range I aim for on client builds. You won't hit it on day one if the agent is running three sequential tool calls against a cold calendar API. That's an architecture problem, not a prompt problem.&lt;/p&gt;

&lt;p&gt;Conversation design that survives a real caller&lt;/p&gt;

&lt;p&gt;Production callers don't follow the happy path. They give a date without a time. They change their name spelling twice. They ask a question the prompt never mentioned. There's a crying child in the background.&lt;/p&gt;

&lt;p&gt;Collect facts in a stable order. For appointment booking, the agent needs a small, explicit slot list: who's calling, what service, which location if there's more than one, preferred window, and a reachable callback number. Confirm each high-stakes field out loud before writing it. Don't invent a slot the calendar didn't offer.&lt;/p&gt;

&lt;p&gt;Define failure, not just success. Every agent needs an escape hatch: transfer to a human, take a message, or schedule a callback. Infinite retry loops are how callers decide the business is closed forever. On Dynaris, the front desk isn't voice-only, chat and email sit in the same customer thread, so a failed call can continue as a message without losing context.&lt;/p&gt;

&lt;p&gt;Isolate tools per workspace. Multi-location and multi-tenant systems can't share tool servers casually. Dynaris runs voice agents and tools as separate MCP-based services so each workspace has its own tool surface. That's a security and correctness requirement, not a nice-to-have.&lt;/p&gt;

&lt;p&gt;CRM and calendar wiring is the booking&lt;/p&gt;

&lt;p&gt;VoiceCake is a live 24/7 inbound platform for dental, healthcare, fitness, and mortgage clients. The proof that matters isn't that the agent can talk. It's that a dental engagement books real appointments. That only happens when the agent can read open slots, write the booking, and trigger the same confirmation the staff already sends.&lt;/p&gt;

&lt;p&gt;Read availability from the system of record, not from a spreadsheet export.&lt;br&gt;
Write the appointment with the same fields a receptionist would: patient, provider, duration, notes, source.&lt;br&gt;
Send confirmation on the channel the business already uses, SMS, email, or both.&lt;br&gt;
Log the call outcome even when nothing was booked, so follow-up isn't guesswork.&lt;/p&gt;

&lt;p&gt;If the CRM is HubSpot, Salesforce, Zoho, or something custom, the same rule applies. This work exists because a voice agent that can't write a record just creates a second, worse inbox.&lt;/p&gt;

&lt;p&gt;A ship checklist I actually use&lt;/p&gt;

&lt;p&gt;Latency on live PSTN, not a browser demo: measure p50 and p95 of time-to-first-audio.&lt;br&gt;
Barge-in: the caller can interrupt without the agent finishing a paragraph.&lt;br&gt;
Booking write-path: create, reschedule, and cancel against the real calendar.&lt;br&gt;
Identity: name, phone, and location disambiguation when two records look similar.&lt;br&gt;
Handoff: warm transfer or a complete message, never a dead air drop.&lt;br&gt;
After-hours vs in-hours behavior: different prompts, same system of record.&lt;br&gt;
Recording and retention matched to the industry. Healthcare work, like OptimateMD.health, needs data-handling designed in from architecture, not bolted on.&lt;br&gt;
Observability: transcripts, tool-call traces, and a way to replay a failed call without guessing.&lt;/p&gt;

&lt;p&gt;When you shouldn't build one yet&lt;/p&gt;

&lt;p&gt;If the business has no calendar of record, no one who owns the front desk process, or a phone tree that already loses callers before a human answers, a voice agent will amplify the mess. Fix the workflow, then automate it. Same stance I take on custom software generally: ship the smallest system that owns the outcome.&lt;/p&gt;

&lt;p&gt;If you do have missed calls, after-hours demand, or a receptionist drowning in routine booking, a production voice agent is one of the few AI products that shows up on the P&amp;amp;L in weeks rather than quarters.&lt;/p&gt;

&lt;p&gt;Originally published at keencraft.tech/blog/production-ai-voice-agents&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>voiceagents</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
