Conversational AI Voice System for Real Estate Lead Qualification

By Amar Kumar

This brief proposes a real estate voice AI lead qualification platform built on Retell AI and Twilio: a low-latency conversational stack that would handle inbound seller screening, outbound follow-up and nurturing calls, appointment setting, voicemail detection, and warm transfer to human agents — with structured lead records synced to the brokerage CRM.

Proposed outcome: A production voice pipeline where every call captures seller intent, property context, and timeline in CRM-ready JSON, routes hot leads to available agents within seconds, and leaves compliant voicemails or nurture callbacks when humans are unavailable — with sub-800 ms turn latency on live PSTN calls.

Scenario

This is a proposed solution for a US real estate team or investor operation that needs to scale seller outreach without hiring a full inside-sales floor.

Problem

Real estate teams lose margin when every seller call requires a licensed rep from hello to hang-up. Manual dial-and-qualify workflows do not scale, and generic IVR trees cannot hold a natural conversation about property condition, equity, or timeline.

Requirements

Functional

Non-functional

Architecture

Retell owns the real-time voice loop — STT, LLM reasoning, TTS playback, interruption, AMD, and transfer. A thin orchestrator service sits behind Retell webhooks to enforce business rules, write CRM records, schedule nurture callbacks, and gate outbound campaigns on TCPA consent.

flowchart TB classDef voice fill:#ede9fe,stroke:#7c3aed,color:#5b21b6 classDef tel fill:#ccfbf1,stroke:#0d9488,color:#115e59 classDef orch fill:#dbeafe,stroke:#2563eb,color:#1e3a8a classDef data fill:#f1f5f9,stroke:#64748b,color:#334155 classDef human fill:#fef3c7,stroke:#d97706,color:#92400e IN["Inbound seller call\nPSTN / portal click-to-call"]:::tel OUT["Outbound campaign\ncron + CRM segment"]:::orch TW["Twilio Voice\nDIDs + ring groups + AMD"]:::tel RET["Retell AI agent\nSTT + LLM + ElevenLabs TTS"]:::voice IN --> TW OUT --> TW TW --> RET RET -->|"tools: update_lead\nbook_appointment\ntransfer_call"| ORCH["Orchestrator\nFastAPI / Node"]:::orch ORCH --> CRM["CRM\nFollow Up Boss / HubSpot"]:::data ORCH --> PG["PostgreSQL\nleads + dispositions"]:::data ORCH --> REDIS["Redis\nsession variables"]:::data ORCH --> CAL["Calendar API\nagent availability"]:::data RET -->|"warm transfer"| AGENT["Human agent\nTwilio ring group"]:::human RET -->|"AMD = machine"| VM["Voicemail script\n+ CRM callback task"]:::orch RET -->|"call_analyzed webhook"| ORCH

System architecture — Retell handles live voice; orchestrator enforces qualification rules, CRM sync, outbound pacing, and warm transfer routing

sequenceDiagram autonumber participant Seller as Seller participant Retell as Retell agent participant Orch as Orchestrator participant CRM as CRM participant Agent as Human agent Seller->>Retell: describes property + timeline Retell->>Orch: update_lead JSON Orch->>CRM: patch lead fields Retell->>Retell: score hot lead Retell->>Orch: transfer_to_agent request Orch->>CRM: check agent on-duty + calendar Orch->>Retell: ring group + whisper payload Retell->>Agent: whisper summary only Retell->>Agent: bridge seller call Agent->>Seller: live conversation alt no agent answers 25s Retell->>Seller: schedule callback offer Retell->>Orch: create CRM task end

Warm transfer sequence — agent hears AI-generated whisper with address and motivation before seller is bridged; no-answer path creates CRM callback task

Component map by integration layer (major services per tier)

End-to-end flow

Happy-path pipeline — low-score leads enter nurture cadence instead of burning agent time; hot leads bypass queue via warm transfer

Indicative turn latency budget — target 600–900 ms median on US PSTN (production-tuned Retell + ElevenLabs turbo)

Expected call disposition mix after qualification tuning (illustrative steady-state outbound campaign)

Recommendation: Use the stack implied by the requirements — Retell AI as the voice runtime, Twilio for telephony and ring groups, OpenAI GPT-4o mini for live turns (GPT-4o for complex objection handling), and ElevenLabs eleven_turbo_v2_5 with a warm American voice for TTS. A small FastAPI or Node.js orchestrator would own webhooks, CRM adapters, and outbound campaign pacing.

LayerTechnologyWhy
Voice platformRetell AINative telephony, barge-in, AMD, warm transfer — weeks faster than DIY STT/LLM/TTS glue
TelephonyTwilio Voice + SIPUS local DIDs, ring groups, recording, compliance APIs, mature AMD
LLMOpenAI GPT-4o mini (live) / GPT-4o (complex)Fast structured extraction; function calling for CRM and calendar tools
TTSElevenLabs eleven_turbo_v2_5Most natural American conversational prosody at Retell-compatible latency; strong emotion control for empathy
STTDeepgram nova-2 (via Retell)Telephony-tuned accuracy; handles seller addresses and numbers reliably
OrchestrationFastAPI or Node.js FastifyRetell webhooks, CRM adapters, campaign scheduler, idempotent writes, HMAC verify
MemoryRedis + PostgreSQLPer-call dynamic variables in Redis; durable lead state and nurture cadence in Postgres
CRMFollow Up Boss API (or HubSpot)Real-estate-native stages, tags, call logging, lead routing rules
CalendarCal.com or Google Calendar APIAgent availability for appointment-setting tool
Outbound queueBullMQ or TemporalCampaign pacing, retry windows, TCPA local-time enforcement
ObservabilityRetell dashboard + GrafanaLatency spans, transfer rate, qualification field completion

Why Retell over raw Twilio + OpenAI Realtime? Retell ships turn-taking, interruption, AMD, and transfer primitives tuned for phone audio. Rebuilding those behaviors on PSTN typically adds 4–6 weeks and ongoing edge-case maintenance.

Why ElevenLabs over Cartesia or PlayHT? ElevenLabs turbo voices deliver the most convincing US English seller-facing tone at sub-second synthesis. Cartesia is a credible fallback if minute volume exceeds ElevenLabs cost targets; PlayHT is viable but often needs more prompt tuning for natural fillers and pacing.

Why a custom orchestrator over Zapier? Warm transfer whisper payloads, TCPA gating, DNC checks, and idempotent CRM writes require tested code paths — not brittle multi-step Zaps.

Realistic end-to-end latency: On a tuned Retell deployment with GPT-4o mini and ElevenLabs turbo, expect 650–850 ms median turn latency on US mobile PSTN; p95 may reach 1.1 s on poor cell routes. Sub-600 ms is achievable on Wi-Fi WebRTC test calls but should not be promised as a PSTN SLA.

Agent & component design

1 — Retell inbound qualification agent

2 — Retell outbound nurture agent

3 — Orchestrator webhook service

Retell posts signed webhooks to the orchestrator. Example handler pattern for post-call CRM sync:

from fastapi import FastAPI, Request, HTTPException
import hmac, hashlib, os

app = FastAPI()

REQUIRED_FIELDS = [
    "property_address", "motivation", "timeline_days",
    "condition", "price_expectation", "occupancy"
]

def verify_retell_signature(body: bytes, signature: str) -> bool:
    expected = hmac.new(
        os.environ["RETELL_WEBHOOK_SECRET"].encode(),
        body,
        hashlib.sha256,
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

@app.post("/webhooks/retell/call-analyzed")
async def call_analyzed(request: Request):
    body = await request.body()
    if not verify_retell_signature(body, request.headers.get("x-retell-signature", "")):
        raise HTTPException(status_code=401)
    payload = await request.json()
    analysis = payload.get("call_analysis", {})
    lead = {k: analysis.get(k) for k in REQUIRED_FIELDS}
    lead["disposition"] = analysis.get("disposition", "nurture")
    lead["recording_url"] = payload.get("recording_url")
    await crm_upsert(payload["metadata"]["lead_id"], lead)
    if lead["disposition"] == "hot":
        await notify_agent_pool(lead)
    return {"ok": True}

4 — Transfer router

RuleConditionAction
Hot transferTimeline ≤ 60 days AND motivation ≥ thresholdWarm transfer to on-duty ring group with whisper
Book appointmentInterested but timeline > 60 daysCalendar tool → CRM appointment + confirmation SMS
NurtureLow urgency or incomplete infoSchedule outbound attempt +2 days; tag CRM ai_nurture
VoicemailAMD positive on outboundLeave script variant by attempt #; CRM task due +4 business hours
No agent answerTransfer rings 25 s unansweredOffer callback slot; SMS summary to assigned agent
DNC / opt-outCaller requests stopImmediate end; CRM do_not_call; cancel nurture jobs

5 — Retell agent configuration (illustrative)

{
  "agent_name": "seller-qualification-inbound",
  "voice_id": "11labs-Adrian",
  "language": "en-US",
  "response_engine": {
    "type": "retell-llm",
    "llm_id": "gpt-4o-mini-seller-qual",
    "begin_message": "Hi, this is Alex with {{company_name}} — this call may be recorded. How can I help with your property today?"
  },
  "enable_backchannel": true,
  "interruption_sensitivity": 0.8,
  "ambient_sound": "call-center",
  "post_call_analysis_data": [
    { "name": "property_address", "type": "string" },
    { "name": "motivation", "type": "enum", "choices": ["relocating", "inheritance", "financial", "distress", "curious"] },
    { "name": "timeline_days", "type": "number" },
    { "name": "disposition", "type": "enum", "choices": ["hot", "warm", "nurture", "not_interested"] }
  ],
  "general_tools": [
    { "type": "transfer_call", "name": "transfer_to_agent", "transfer_destination": "{{agent_ring_group}}" },
    { "type": "custom", "name": "update_lead", "url": "https://api.example.com/tools/update-lead" },
    { "type": "custom", "name": "book_appointment", "url": "https://api.example.com/tools/book-appointment" }
  ]
}

6 — Campaign scheduler

Qualification funnel — illustrative conversion from connected calls to completed field sets, appointments, and hot transfers

Typical inbound call lifecycle — median duration by stage (illustrative, post-tuning)

Implementation plan

Phase 1 — Paid proof-of-concept (week 1–2)

Provision staging Retell agent with ElevenLabs voice and seller qualification prompt. Attach one Twilio number. Implement transfer_to_agent to a test mobile with whisper summary. Record live demo: inbound call → qualification → warm transfer. Deliver POC recording and architecture doc for stakeholder sign-off before production scope.

Risk: Prompt drift causes incomplete field capture — iterate on 5 internal test calls daily. Rollback: Twilio number forwards to owner cell; POC agent disabled in Retell dashboard.

Phase 2 — Inbound production agent (week 3–4)

Production DID, recording disclosure variants by state, CRM caller-ID lookup for dynamic variables, orchestrator webhook with HMAC verify, post-call JSON mapping to CRM custom fields. Load-test 20 concurrent inbound calls on staging.

Risk: CRM API rate limits on peak ad bursts — add queue + retry with dead-letter alert. Rollback: Retell failover number routes to human ring group.

Phase 3 — Outbound + nurture cadence (week 5–6)

Campaign scheduler, TCPA consent + DNC checks, three-touch outbound script variants, AMD voicemail branch, disposition-based routing. Pilot on 200-lead segment before full list.

Risk: Carrier labeling as spam — register SHAKEN/STIR, use local presence DIDs, cap daily attempts. Rollback: pause BullMQ queue; inbound agent unaffected.

Phase 4 — Warm transfer + voicemail hardening (week 7)

Twilio ring group for agents, whisper payload template, 25 s no-answer fallback, callback scheduling tool, opt-out handling. Agent training session on whisper format and CRM task workflow.

Risk: Agents miss whisper if they answer too fast — extend whisper to 8 s or send parallel SMS summary. Rollback: disable transfer; AI books appointments only.

Phase 5 — Reporting, latency tuning, ops (week 8)

Grafana dashboard: turn latency p50/p95, qualification completion %, transfer connect rate, voicemail callback SLA. Tune LLM model split, ElevenLabs stability setting, and Retell interruption sensitivity from production traces.

Risk: Over-tuning for latency sacrifices empathy — A/B test seller hang-up rate vs. response delay. Rollback: revert to prior Retell agent version snapshot.

Phase 6 — Production hardening + handover (week 9–10)

15-persona regression suite in CI, secrets rotation runbook, on-call playbook for Retell/Twilio outages, documented prompt change process, and 30-day hypercare with weekly tuning reviews.

Risk: Undocumented prompt edits in Retell UI — lock production changes behind Git-backed config export. Rollback: blue/green Retell agents with traffic switch via Twilio number config.

Reporting & ops

SignalSourceCadence
Median turn latency (p50 / p95)Retell analytics + orchestrator OpenTelemetry spansDaily during first 30 days
Qualification completion rateCalls with all required fields / connected callsWeekly
Warm transfer connect rateTransfers answered / transfer attemptsWeekly
Hot-lead SLATime from hot disposition to agent bridgeReal-time alert if > 45 s
Outbound contact rateHuman / machine / no-answer / wrong numberPer campaign
Voicemail callback completionCRM tasks closed within 24 hWeekly
CRM sync failuresWebhook 4xx/5xx + dead-letter queue depthImmediate Slack alert
Cost per qualified leadRetell + Twilio + ElevenLabs + OpenAI / qualified dispositionsMonthly

Ops cadence would include a daily 10-minute review of failed webhooks and stuck nurture jobs, plus a weekly 45-minute prompt and script tuning session with acquisition managers. Retell agent changes would flow through staging regression before promotion; Twilio balance and Retell minute quotas would alert at 80% threshold.

Proposed deliverables

Following the phased plan, a build would ship these artifacts:

Effort estimate

Indicative effort for POC through production hardening (assumes CRM API access, Twilio account, and stakeholder availability for UAT calls):

ScopeHours (range)
Phases 1–6 (POC + inbound + outbound + transfer + reporting + hardening)180–280 hrs
Salesforce custom-object integration (if not Follow Up Boss / HubSpot)+30–50 hrs
Ongoing prompt tuning, new nurture scripts, list segmentation4–8 hrs/month
Platform costs (indicative monthly at 2–5 k call minutes)Retell, Twilio, ElevenLabs, OpenAI — typically USD 800–2,500

The hour range reflects CRM complexity, number of outbound segments, and how many edge cases appear in live seller conversations during UAT. The paid POC (Phase 1) would be scoped separately — typically 20–35 hrs — to de-risk the full engagement before multi-month buildout.

Glossary

TermMeaning
Retell AIVoice-agent platform integrating telephony, STT, LLM, and TTS with transfer, AMD, and analysis webhooks
Warm transferHandoff to a human agent with AI-provided context whisper before the seller is connected
AMDAnswering Machine Detection — signal distinguishing live human from voicemail on outbound calls
Turn latencyTime from caller stop-speaking to agent audio start — critical for natural phone dialog
Barge-inCaller interruption while the agent speaks; TTS stops immediately when enabled
TCPAUS Telephone Consumer Protection Act — governs outbound call and text consent requirements
DispositionCall outcome label: hot, warm, nurture, not interested, wrong number, transferred
Dynamic variablesPer-call Retell context (lead name, address, prior notes) injected into the system prompt
WhisperAgent-only audio summary played before bridging the seller on warm transfer
Post-call analysisRetell structured extraction schema populated after call end for CRM sync