[ BACK ]
[ LIVE ] // Voice & Phone AI

Voice Agent Phil

Sub-2-second voice agent in Will's own PVC clone — runs in the portfolio (browser via LiveKit) AND on outbound phone (Twilio), driven by one shared Pipecat pipeline across two personas.


[ WHY_IT_MATTERS ]

Real voice fidelity, not generic AI: Will's full-corpus Professional Voice Clone (ElevenLabs PVC tier, voice_id vaqWG6OoW1Bb1g4nwV2H) drives both a portfolio Curator (visitor Q&A in the browser) and a Sales caller (Mac Septic phone tools). Same Pipecat pipeline, two personas, three transports — and the portfolio itself ships a 1-click voice CTA so prospects hear the agent before they read a single bullet.

[ OVERVIEW ]

Phil is a production voice agent built on Pipecat with a Professional Voice Clone of Will (ElevenLabs PVC tier, voice_id vaqWG6OoW1Bb1g4nwV2H, model eleven_multilingual_v2, stability 0.4 / similarity_boost 0.95 / style 0.7 / optimize_streaming_latency 2), Deepgram nova-2 STT, Silero VAD (curator tuned to confidence 0.8, start 0.5s, stop 0.5s, min_volume 0.15), and two Anthropic models: Haiku 4.5 for the Curator persona (fast portfolio Q&A) and Sonnet 4.6 for the Sales persona (CRM tool-reasoning). End-to-end latency runs ~1.4-1.8s with ~400ms on utterance end.

Multi-persona architecture: both personas share a `shared.build_pipeline(transport, persona)` factory — identical Deepgram + Anthropic + ElevenLabs + VAD stack, only the transport and persona system prompt differ. The Curator (portfolio.ecbtx.com) answers across the 39-project corpus with no tools, plus Phil-initiated lead capture (`[[ASK_EMAIL]]` marker → inline email form → Vercel function → CRM webhook) and a visitor-side mic picker (input device persisted in localStorage, handed to LiveKit `setMicrophoneEnabled({deviceId})`). The Sales persona drives Mac Septic phone calls with 8 CRM tools: book_appointment, check_availability, transfer_call, send_followup_sms, set_disposition, create_callback, leave_voicemail, end_call.

Three transports cover every entry point: LiveKit for the browser curator (with a same-origin `/api/livekit-token` proxy that bypassed the cross-origin CORS issue), Twilio Media Streams for outbound sales and the curator's `dial-curator` callback option, and RingCentral for inbound Mac Septic calls. Deepgram is pinned to nova-2 because the Pipecat deepgram-sdk pin throws WS-init 400s against nova-3; the live_options→settings migration is shipped.

[ BY_THE_NUMBERS ]
  • > Professional Voice Clone (Will) via ElevenLabs PVC tier
  • > Two personas: curator (39-product portfolio Q&A) + sales (8 CRM tools)
  • > Three transports: LiveKit browser, Twilio outbound, RingCentral inbound
  • > Shared shared.build_pipeline factory across personas
  • > ~1,400-1,800ms end-to-end latency, ~400ms utterance-end
[ NEXT_90_DAYS ]
  • SMS-during-call lead capture for outbound sales
  • Curator → Sales hand-off: detect sales intent and transfer the live session to the sales persona
  • Real-time transcript dashboard for in-call monitoring
  • Voice eval harness: replay synthetic visitor turns through both personas and grade responses
[ TALK_TO_PHIL ]

QUESTIONS ABOUT VOICE AGENT PHIL? ASK PHIL DIRECTLY.

// Phil is Will's voice agent. Architecture, pricing, roadmap, licensing — for any product.