Skip to content
Pure MLS TechPOPPY VOICE OS

Poppy Voice OS

One number, one brain, two rings

+1 (484) 990-2798 is Poppy's line. Calls terminate on LiveKit Cloud (SIP trunk and dispatch rule), a LiveKit agent answers with an ElevenLabs voice, and every skill on the call is a database row served through poppy-mcp — the same brain, memory, board, and audit spine as the rest of PURE. This page is the standing capability map: what is LIVE today, what is STAGED in the repo waiting to be lit, and what stays GATED on a human until Mike widens the gate.

1 · The stack

Layer What runs there State
TelephonyLiveKit Cloud (Pro): SIP inbound trunk + dispatch rule for the Poppy line; outbound SIP trunk is the one missing piece of ring 2 (ticket VOS-2). Meeting dial-in codes and mid-call transfer already ride the same rails.LIVE
Agent runtimeLiveKit Agents workers. Inbound: puremeeting (console-generated today; code twin agent_puremeeting.py adds the audible persona switch + warm transfer). Outbound: pureoutbound (agent_outbound.py, new).LIVE STAGED
VoiceElevenLabs Pro (1.6M chars/mo): Flash v2.5 realtime TTS, model router (config.voice_models), 34 voices incl. Mike + Shana instant clones and the persona ladder, all resolved live from config.voice_tts_map — zero-redeploy voice swaps.LIVE
HearingAssemblyAI universal-3-5-pro via LiveKit Inference, multilingual turn detection, ai-coustics noise cancellation, answering-machine detection on outbound.LIVE
BrainThe Poppy chat spine on Supabase Edge (model router to Claude, adaptive thinking, prompt cache) plus 29 registered phone skills through the pure_tool dispatcher. Prompts, greeting, voicemail script: all DB rows.LIVE
RecordEvery call: end-of-call summary (poppy-call-summary), call intelligence (sentiment, talk/listen, objections, coaching), audit rows, board tickets. Recordings via egress: follow-on VOS-7.LIVE

2 · Ring 1 — inbound (what a caller gets today)

3 · Ring 2 — outbound (Poppy places the call) STAGED

The new ring. Everything is in the repo and proven against a scratch database; it ships dark — the master switch is off until Mike flips it after the supervised first campaign (VOS-6).

enqueue claim (ALL gates) dial + converse voice.call_enqueue ---> pure_voice_outcalls ---> pure-voice-dialer (cron, 1/min) Poppy / service loop / kill switch · CT window creates LiveKit dispatch staff; approval-gated DNC list · daily cap room out-<id> w/ job JSON consent note REQUIRED attempt cap | v outcome voicemail pureoutbound agent mcp_voice_out_complete <--- machine? leave script <--- dials via SIP trunk, summary + call-intel in Poppy's voice answering-machine detect, retry w/ 2h backoff (when voicemail_ok) purpose-first opener

Call kinds v1

On the call

4 · The voice fabric (ElevenLabs Pro, already live)

Working today

  • Model router: realtime Flash v2.5 on calls, v3 for quality narration, turbo for balance, STS for speech-to-speech — one DB key.
  • Persona ladder + global default (Ginger), Mike and Shana consented clones, candidate personas with staff audition + sign-off flow.
  • Pronunciation lexicon for realtor terms (pure-pronunciation.pls).
  • Poppy MCP tools: voice.elevenlabs_tts (open), voice.elevenlabs_switch and clone_lab (approval-gated).

Queued in EL-MAX (board program)

  • Professional clone of Mike (PVC slot is free), Spanish/multilingual narration via v3's 74 languages.
  • Listing-narration engine and audio-native daily briefs, reports, and emails.
  • STS content pipeline, sound effects for Pure Videos.
  • Usage/cost governance before voice is sold to 135K MLS users (Enterprise-tier flag).

5 · Safety rails (why this cannot run away)

6 · Light-up order (the VOICE-OS board program)

Ticket Step Effort Gate
VOS-1Apply the staged pack (tables, RPCs, seeds) and mint the dialer tokenSready
VOS-2Create the LiveKit outbound SIP trunk (Poppy line as caller ID)Sready
VOS-3Deploy pureoutbound agent to LiveKit CloudMready
VOS-4Deploy pure-voice-dialer + every-minute cronSready
VOS-5Fill the transfer map, live transfer test on the inbound lineSMIKE
VOS-6First supervised campaign: 5 consented calls, Mike listening, then set standing postureMMIKE
VOS-7Call recordings via egress to private storageMready

Staged pack: db/2026-07-22_1140_poppy-voice-os-staged.sql · agents: poppy-agent/ · dialer: supabase/functions/pure-voice-dialer · runbook: poppy-agent/DEPLOY-voice-os.md

Pure MLS Tech · Acquisto Real Estate · acquisto.biz · Poppy Voice OS capability map. Canon: canon.voice_os · voice stack of record: canon.poppy_voice_stack · outbound ships dark until the switch flips.