Solutions

Voice agents for front office

Replace hold music with instant answers. AI voice agents handle appointment scheduling, caller routing, intake forms, and FAQs — so your front desk team focuses on the patients, clients, and customers who walk through the door.

Front desk agent

4 calls handled
MJ

Maria Jensen

Reschedule cleaning — Tue 2pm

Solved
DK

David Kim

Insurance verification question

Solved
RP

Rachel Park

New patient intake — Dr. Patel

Booked
TW

Tom Walsh

Confirm Fri appointment + directions

Solved
Runway
Dovetail
Granola
Supernormal
Ashby
Jiminny
Calabrio
JotPsych
EdgeTier
Genio
WhatConverts
Earmark
Grain
Loop
CallRail
Happy Scribe
Veed.io
Delphi
Runway
Dovetail
Granola
Supernormal
Ashby
Jiminny
Calabrio
JotPsych
EdgeTier
Genio
WhatConverts
Earmark
Grain
Loop
CallRail
Happy Scribe
Veed.io
Delphi
Runway
Dovetail
Granola
Supernormal
Ashby
Jiminny
Calabrio
JotPsych
EdgeTier
Genio
WhatConverts
Earmark
Grain
Loop
CallRail
Happy Scribe
Veed.io
Delphi
Runway
Dovetail
Granola
Supernormal
Ashby
Jiminny
Calabrio
JotPsych
EdgeTier
Genio
WhatConverts
Earmark
Grain
Loop
CallRail
Happy Scribe
Veed.io
Delphi
The problem

Your front desk is a bottleneck, not a welcome mat

The average medical or professional office misses 30% of inbound calls. Patients and clients hit voicemail, hang up, and book with the competitor. Staff juggle ringing phones, walk-ins, and paperwork — leading to scheduling errors, long hold times, and burned-out receptionists. Every unanswered call is a missed appointment, missed revenue, and a worse first impression. AssemblyAI gives every office an always-on AI front desk.

Built for the busiest front desks

Latency ~1s

End-to-end response — callers never wait on hold.

Entity accuracy 43%

Better alphanumeric accuracy on names, dates, phone numbers, and insurance IDs.

Coverage 24/7

Always-on for nights, weekends, holidays, and after-hours overflow.

Concurrency Unlimited

No busy signals, no hold queues — every caller answered on the first ring.

Two ways to build

Pick the API that fits your front office stack

Ship a working front-desk agent in an afternoon, or drop best-in-class streaming STT into your existing PBX or IVR.

Recommended

Voice Agent API

Our proprietary voice stack via one WebSocket. Run a managed front-desk agent that schedules, routes, and answers — zero infra to manage, ship in a single afternoon.

Best for

  • Appointment scheduling, intake, FAQs, caller routing
  • Tool calls for EHR / practice management write-back
  • Session resumption — recovers gracefully if the line drops
  • BAA available for medical and dental practices
$4.50/hr — speech, LLM, and voice all included
Get started for free

Free tier available · No credit card required

Bring Your Own Stack

Universal-3 Pro Streaming STT API

Drop best-in-class speech recognition into your existing PBX or IVR stack. Bring your own LLM and TTS for full control over routing logic and voice.

Best for

  • Teams running their own LLM, TTS, and PBX/IVR
  • ~150ms P50 latency for real-time caller interaction
  • 43% better alphanumeric accuracy on names + dates + IDs
  • Native LiveKit, Pipecat, Vapi, and Twilio integrations
  • Unlimited concurrency for peak-hour call volume
$0.45/hr — transcription only, unlimited streams
View integration docs

No concurrency caps · Autoscaling included

Caller speaks → Agent understands → Books, routes, or resolves

Caller reaches the voice agent instantly

No hold queue, no phone tree. The agent greets by name when caller ID matches your records, asks how it can help, and starts the conversation in under a second.

Transcribed with name and date accuracy

Universal-3 Pro Streaming nails proper nouns, insurance IDs, phone numbers, and appointment times — 43% fewer alphanumeric errors than alternatives. No more callbacks to verify what the caller said.

Agent takes action via tool calling

Books or reschedules appointments, routes to the right department, verifies insurance, or collects new patient intake — all mid-conversation through JSON Schema function calls.

Confirms and follows up automatically

Reads back the appointment details, sends an SMS confirmation, and pushes the structured record to the EHR, practice management system, or CRM — without staff lifting a finger.

support_agent

Front desk pipeline

Caller reaches the voice agent instantly

Transcribe with name + date accuracy

Take action via tool calling

Confirm + follow up automatically

Quickstart

Build a front desk voice agent in minutes

Voice Agent API — front desk agent for a medical practice

# Voice Agent API: front desk agent for a medical practice
import asyncio, json, websockets

API_KEY = "YOUR_API_KEY"

async def run_front_desk():
    async with websockets.connect(
        "wss://agents.assemblyai.com/v1/ws",
        additional_headers={"Authorization": f"Bearer {API_KEY}"},
    ) as ws:
        await ws.send(json.dumps({
            "type": "session.update",
            "session": {
                "system_prompt": (
                    "You are the front desk agent for Lakewood Family Practice. "
                    "Schedule, reschedule, and cancel appointments. Route urgent "
                    "calls to on-call staff. Collect new-patient info: name, DOB, "
                    "insurance, reason for visit. Always confirm details before "
                    "booking. Never give medical advice."
                ),
                "greeting": "Thanks for calling Lakewood Family Practice — how can I help?",
                "input": {"keyterms": ["Dr. Patel", "panoramic x-ray", "deep cleaning", "Lakewood office", "Downtown office"]},
                "output": {"voice": "ivy"},
                "tools": [{
                    "type": "function",
                    "name": "book_appointment",
                    "description": "Book an appointment in the practice management system.",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "patient_name": {"type": "string"},
                            "dob": {"type": "string"},
                            "provider": {"type": "string"},
                            "appointment_time": {"type": "string"},
                            "reason": {"type": "string"},
                        },
                        "required": ["patient_name", "appointment_time"],
                    },
                }],
            },
        }))
        async for msg in ws:
            handle(json.loads(msg))  # transcript.user, reply.audio, tool.call, ...

LiveKit + Universal-3 Pro Streaming — multi-location routing

# LiveKit + AssemblyAI Universal-3 Pro Streaming: multi-location routing
from livekit.agents import Agent, AgentSession, TurnHandlingOptions
from livekit.plugins import assemblyai, cartesia, openai, silero
from livekit.plugins.turn_detector.multilingual import MultilingualModel

class FrontDeskAgent(Agent):
    def __init__(self):
        super().__init__(
            instructions=(
                "You are a front desk receptionist for a multi-location dental "
                "group. Identify which office the caller needs. Check availability "
                "across all locations. Book appointments, collect insurance details, "
                "and route complex billing questions to the office manager."
            ),
        )

async def entrypoint(ctx):
    session = AgentSession(
        stt=assemblyai.STT(
            model="u3-rt-pro",
            keyterms_prompt=["Dr. Patel", "panoramic x-ray", "deep cleaning",
                             "Lakewood office", "Downtown office"],
        ),
        llm=openai.LLM(model="gpt-4o"),
        tts=cartesia.TTS(),
        vad=silero.VAD.load(activation_threshold=0.3),
        turn_handling=TurnHandlingOptions(
            turn_detection=MultilingualModel(),
            endpointing={"min_delay": 0.5, "max_delay": 3.0},
        ),
    )
    await session.start(room=ctx.room, agent=FrontDeskAgent())

Scheduling-aware accuracy

Universal-3 Pro captures dates, times, provider names, and insurance IDs with 43% fewer alphanumeric errors than alternatives — no more "was that the 13th or the 30th?" callbacks. Keyterm prompting boosts recognition of your provider list and procedure vocabulary.

Mid-call tool calling

Book appointments, check provider availability, verify insurance, and route calls — all through JSON Schema function calls that execute mid-conversation without dropping the caller. Native integrations with LiveKit, Pipecat, Twilio, and standard WebSocket clients.

Unlimited concurrent calls

Universal-3 Pro Streaming has unlimited concurrency at $0.45/hr per stream — no busy signals, no hold queues. Auto-scales for Monday morning rushes, lunch-hour spikes, and after-hours volume so every caller gets answered on the first ring.

Frequently asked questions