Healthcare · Voice AI · Live in production
The IT help desk, answered on the first ring.
Nurses, clinicians and operations staff at a multi-hospital U.S. health system call one number when a system breaks. Since May 2026 an AI agent we built picks up every one of those calls, figures out who's calling and what's wrong, files the Jira ticket, and hands the call to the right person with everything already written down.
- Client
- Multi-hospital U.S. health system (name withheld under NDA)
- Callers
- Clinical and operations staff
- Connects to
- Jira Service Management, Atlassian Assets, the client's phone system
- Status
- Live in production since May 2026
By the numbers
- 21,204: Calls answered on the first ring, May to mid-September 2026
- 1,754: Jira tickets filed automatically
- 0:53: Average AI triage per call
- 7,250: Calls in the most recent 30 days, as triage time kept dropping
- 3,785 hrs: Of human help desk time that started with the caller and problem already known
- 4,000+: Automated tests every change has to pass
Source: production dashboard, May 1 to September 16, 2026. We count calls answered and tickets filed, never calls resolved by AI.
At a hospital, the help desk queue is a patient care problem.
When a nurse can't get into the charting system at 2am, every minute on hold is a minute not spent with a patient. The help desk was taking thousands of calls a month, and every one started the same way: a person in a queue, then a technician asking the same five questions before any real work began.
Most voice AI is sold on deflection, how many calls it keeps away from people. Inside a hospital that's the wrong goal. The failure that matters is a clinician stuck in a loop with a bot that won't admit it's out of its depth.
So the brief was different: answer instantly, get the facts right, file the ticket, and get the caller to the right human fast.
A voice agent built for triage, not deflection.
- Answers every call instantly: No hold music and no phone tree. The agent picks up, greets the caller in the client's own words, and starts helping right away.
- Knows who's calling: It checks the employee ID, even when it's spelled out phonetically, and pre-fills details from past tickets so returning callers confirm instead of repeat.
- Files the ticket before the transfer rings: Once it has an ID and a reason for the call, a Jira ticket exists no matter what happens next: the caller hangs up, the line drops, or a person takes over.
- Routes to the right team: Transfer destinations live in a table the client's own admins edit: a description the agent routes by, the number, and the keypad digits for desks behind a phone menu.
- Puts the whole call on the ticket: Both sides of the conversation, including the human part after the transfer, land on the ticket as a timestamped transcript. Passwords a caller starts reading out are left out.
- Reads status back by phone: Callers asking for an update hear their ticket's current Jira status and can add new details to the open ticket instead of starting a new one.
What happens in the first 53 seconds of a call.
- Pick up: The line answers immediately and opens a live audio stream to the agent.
- Identify the caller: Employee ID, device, floor and email are confirmed, and the system name is matched against the client's asset database.
- Understand the problem: If the caller already has an open ticket for this issue, new details go on that ticket. If they want a status update, the agent reads it back.
- Confirm and file: The agent reads a summary back, then files the Jira Service Management ticket and links it to any known open problem.
- Hand off with context: When a person is needed, the ticket is filed first, then the call transfers to the right desk. Asking for a human, being locked out, or getting stuck always forces a transfer.
- Close the loop: After hangup the full transcript posts to the ticket and the call is counted on the client's live dashboard.
Hard rules where it matters, not just a prompt.
No transfer without a ticket behind it
Every path that hands a call to a person runs through here first. The help desk never picks up a transfer and has to start from zero.
# Ticket first, then transfer. Every transfer path ends here, so this is
# where the guarantee lives: a caller with a validated employee ID and a
# reason for calling leaves a ticket behind before the call is handed off.
try:
await file_salvage_for_call(call_sid, "transfer")
except Exception as exc: # defence in depth; the tool already catches
logger.error(f"ticket-before-transfer failed for {call_sid}: {exc}")
async with httpx.AsyncClient(timeout=10.0) as client:
resp = await client.post(url, auth=(account_sid, auth_token), data=data)
if resp.status_code >= 400:
# Bad telephony credentials mean every hand-off to a human is
# silently failing. Alert on it.
await maybe_alert("Twilio", f"Twilio returned {resp.status_code}", call_sid=call_sid)
return FORWARD_TWILIO_ERROR
Ask for a person, get a person
The prompt tells the model to transfer when a caller asks for a human, and it usually does. This is the safety net for when it doesn't.
async def _fire_human_handoff_forward(state: CallState) -> None:
"""Deterministic forward for an explicit "speak to a human" request.
The prompt tells the model to transfer on these turns, and it usually
does. This is the safety net for when it doesn't."""
await asyncio.sleep(HUMAN_HANDOFF_FORWARD_DELAY_SECONDS)
if _forward_superseded(state, "HUMAN_HANDOFF_AUTO_FORWARD"):
return # the model's own transfer landed first
await _hold_for_handoff_id_spell(state)
await speak_bridge_before_salvage(state) # no dead air while filing
await _file_ticket_before_forward(state, "HUMAN_HANDOFF_AUTO_FORWARD")
result = await perform_forward(state.call_sid, announce=FORWARD_HANDOFF_LINE)
if result == FORWARD_OK:
state.escalated = True
Built with: Python, Pipecat, Twilio Media Streams, Deepgram speech-to-text, Cartesia voice, OpenAI GPT-4o mini, Jira Service Management, Atlassian Assets, Swift API, React dashboard
Every call answered. Every hand-off with the ticket already open.
In late July the dashboard read 9,310 calls at a 56-second average. By mid-September it read 21,204 at 53 seconds. Volume climbed and triage got faster at the same time.
- 21,204 calls answered on the first ring between May 1 and September 16, 2026.
- 1,754 Jira tickets filed automatically, each one with the caller identified and the problem written down.
- 53 seconds of AI triage, followed by a human leg averaging 13 minutes 23 seconds that starts with the facts in hand.
- 3,785 hours of skilled help desk time that no longer begins in a queue.
- Signed BAA and a completed Censinet RiskOps vendor security review behind a deployment that's been live since May.
82% of these calls go to a human. That's the design.
Deflection rate is the wrong way to judge AI inside a hospital. This agent is measured on whether a call reaches the right place quickly, with the right information, and it's done that 21,204 times.
- The AI half: 53 seconds: Who's calling, what's broken, which system, which floor. Checked, confirmed, and filed.
- The human half: 13 minutes 23 seconds: The technician starts with the caller identified, the problem stated, and the ticket already open, instead of starting from a queue.
It keeps getting better inside the same compliance perimeter.
Every change is small, reviewed, pinned by the test suite, and walked through with the client's IT team on a staging line before it goes live. In client testing as of September 2026:
- One ID ask before any transfer: The caller's ID is collected once, early, so every hand-off carries it.
- Linking to known outages: When a call matches an open problem record, the new ticket is linked to it automatically, so the help desk sees the pattern.
- Adding details to an earlier ticket: Callers can add new information to a ticket they already opened instead of creating a duplicate.
- One voice start to finish: The transfer announcement is spoken in the agent's own voice, so the hand-off feels like one call.
Your phones are busy and every call starts from zero.
- Your team answers the same questions all day before real work starts.
- Callers wait in a queue before anyone knows who they are or what's wrong.
- You're in a regulated industry and every AI demo stalls at the security review.
Book a call with Josh | Voice AI for healthcare
Frequently asked questions
- What does the AI help desk agent do?
- It answers internal IT help desk calls from clinical and operations staff at a multi-hospital U.S. health system, identifies the caller and the problem, files a Jira Service Management ticket, and transfers to the right human team with the ticket and context attached.
- How many calls has it handled?
- 21,204 calls answered and 1,754 Jira tickets filed automatically between May 1 and September 16, 2026, with a 53-second average AI triage.
- Why do 82% of calls still go to a person?
- By design. The agent does triage, not deflection: it collects and confirms the facts in about a minute, then hands complex issues to the right technician with the ticket already open. Inside a hospital, getting the call to the right person fast matters more than keeping calls away from people.
- Is it HIPAA-ready?
- The deployment runs on HIPAA-eligible services under a signed BAA and went through the client's Censinet RiskOps third-party security review. Nothing is recorded on the phone provider; transcripts go only to the client's own Jira.
All work