The Outbound Calling Bottleneck
In healthcare staffing and enterprise lead generation, the speed at which you respond to an inquiry is the single largest determinant of conversion.
When a candidate applies for a nursing role, or a clinic requests emergency staffing coverage, standard operational procedure dictates that a human agent calls them. However, human agents have operational limits. They sleep, they go on lunch breaks, they get tied up on 45-minute calls with other clients, and they don't work weekends.
Our baseline metrics at Uplift Technologies showed a glaring inefficiency: the average callback response time for a new inbound inquiry was 8 hours. By the time our agents made the outbound call, the lead had often already secured coverage or accepted an interview with a competitor.
We needed a system that could initiate a highly intelligent, context-aware outbound call within 3 minutes of a lead entering our CRM, 24/7/365.
The Architectural Blueprint
Building a "toy" voice bot is easy. Building a production-grade autonomous voice agent that operates compliantly in a healthcare-adjacent environment requires rigorous architecture.
We utilized a modern stack:
- CRM: GoHighLevel (GHL)
- Data Layer: Python FastAPI & Supabase
- Inference Engine: Claude 3.5 Sonnet
- Voice Orchestration: Voiceflow via Twilio integration
1. CRM Export & Python Normalization
The pipeline initiates the moment a lead record is updated in the CRM (e.g., a candidate submits an application form). A webhook fires from GHL to our FastAPI backend.
This is where the first critical step occurs: Data Normalization.
You cannot simply pass raw CRM JSON to a voice model. CRM data is famously messy. A field might contain "N/A", "null", or badly formatted dates like "10/12/24". If the voice agent reads "10/12/24", it might say "Ten slash twelve slash twenty-four", which breaks the illusion of human conversation.
Our Python middleware extracts the relevant fields (First Name, Requested Role, State License, Availability) and normalizes them into conversational strings. "10/12/24" becomes "October twelfth". "RN" becomes "Registered Nurse".
2. Dynamic Payload Injection per Call
Once the data is normalized, the FastAPI backend initiates the outbound call via the Twilio API, but it passes the normalized data directly into the Voiceflow payload as transient variables.
This solves the "Stale Data" problem.
Many bot builders hardcode knowledge into the bot or rely on batch-syncing a database. By using transient payload injection, the voice agent is instantiated with the exact, real-time context of the person it is calling.
{
"action": {
"type": "launch",
"payload": {
"candidate_name": "Sarah",
"license_type": "Registered Nurse",
"target_city": "Austin, Texas",
"years_experience": "4"
}
}
}
When the user picks up the phone, the bot's very first sentence is dynamically constructed: "Hi Sarah, this is Alex calling from Uplift. I saw you just applied for the Registered Nurse position in Austin. Do you have a few minutes to chat about your experience?"
3. Claude Sonnet Dynamic Response Logic
The core conversational engine relies on Claude 3.5 Sonnet. While Voiceflow provides the structural state machine (handling interruptions, silences, and fallback paths), Claude handles the semantic routing.
Voice is a uniquely difficult medium for LLMs because of latency. If the LLM takes 3 seconds to generate a response, the user thinks the call dropped and hangs up. We specifically chose Claude 3.5 Sonnet because of its exceptional Time-To-First-Token (TTFT) when streaming, consistently delivering responses in under 600ms.
Furthermore, Claude is instructed via system prompt to output conversational filler ("Got it," "Makes sense," "Oh, absolutely") as the very first tokens. This allows the text-to-speech (TTS) engine to begin speaking immediately, buying the LLM precious milliseconds to generate the actual substantive response.
4. SLA Tracking & Recording Capture
A voice bot operating in production must be auditable.
Every single call routed through our system generates a Twilio recording. However, navigating the Twilio dashboard to find a specific recording is operational torture.
To solve this, our FastAPI backend listens for the call.completed webhook. When the call ends, it:
- Downloads the recording MP3.
- Pushes it to a secure Supabase storage bucket.
- Generates a signed URL.
- Pushes that URL back into the GoHighLevel CRM record as a custom field.
Now, when a human recruiter reviews the lead's profile the next morning, the call recording is embedded right there in the UI.
Simultaneously, we track SLA compliance. The webhook logs the exact timestamp the lead entered the system, and the exact timestamp the call was initiated. This data is fed into a Supabase dashboard.
5. Compliance Considerations
Operating outbound AI calling requires strict adherence to telecommunication compliance (TCPA in the US).
- Consent: The system only calls leads who have explicitly submitted a web form with a TCPA-compliant checkbox consenting to automated voice calls.
- Recording Disclosure: In two-party consent states, the bot's opening prompt is legally required to include a disclosure. We built logic that checks the area code of the phone number against a database of two-party consent states. If there is a match, the bot appends "Please note this call is recorded for quality purposes" to the introduction.
The Results: 8 Hours to 3 Minutes
The deployment of this architecture yielded immediate, transformative results.
Our callback response time plummeted from an average of 8 hours to a deterministic 3 minutes.
When a candidate applies at 11:30 PM on a Friday, their phone rings at 11:33 PM. The AI conducts a 4-minute initial screening, verifies their state licensure, confirms their availability, and books a follow-up interview directly onto a human recruiter's calendar for Monday morning.
The human recruiters no longer spend their mornings dialing leads who don't pick up or who aren't actually qualified. They arrive at work to a calendar full of pre-vetted, high-intent candidates.
You can listen to actual, unedited audio samples of this AI agent in action on the Projects page.
If your sales or recruiting operations are bottlenecked by manual outbound calling, book a consultation. We can architect and deploy this exact system tailored to your CRM.