Voice Agent Portfolio¶
Four production voice agents on self-hosted Converso, all with the same proven architecture.
flowchart LR
A["π€ Caller<br/>Web / Phone"] -->|WebRTC| B["ποΈ Converso<br/>converso.work"]
B --> C["π§ LLM<br/>minimax / kimi"]
B --> D["ποΈ STT<br/>Deepgram nova-3"]
B --> E["π TTS<br/>Chariot Neha"]
B --> F{"βοΈ Workflow"}
subgraph AGENTS["4 live agents"]
direction TB
G["SaffronStays :8941"]
H["Smera Dental :8942"]
I["Oberoi :8943"]
J["Raheja :8944"]
end
F --> AGENTS
AGENTS --> K["ποΈ SQLite / Postgres"]
AGENTS --> L["π² Telegram alerts"]
style A fill:#eef2ff,stroke:#0a1930,color:#0a1930
style B fill:#0a1930,color:#fff,stroke:#d4af37,stroke-width:2px
style C fill:#eef2ff,stroke:#0a1930,color:#0a1930
style D fill:#eef2ff,stroke:#0a1930,color:#0a1930
style E fill:#eef2ff,stroke:#0a1930,color:#0a1930
style F fill:#fffbeb,stroke:#b8860b,color:#0a1930
style G fill:#f8fafc,stroke:#64748b,color:#0f172a
style H fill:#f8fafc,stroke:#64748b,color:#0f172a
style I fill:#f8fafc,stroke:#64748b,color:#0f172a
style J fill:#f8fafc,stroke:#64748b,color:#0f172a
style K fill:#f8fafc,stroke:#64748b,color:#0f172a
style L fill:#f8fafc,stroke:#64748b,color:#0f172a
style AGENTS fill:#fdf6e3,stroke:#d4af37,color:#0a1930
Live agents¶
| Agent | Voice | Site | Workflow | Mock API |
|---|---|---|---|---|
| SaffronStays (Aarti) | aura-2-helena-en | saffron.converso.work | wf2 | :8941 |
| Smera Dental (Dr. Raashi) | helena-en | smera.converso.work | wf3 | :8942 |
| Oberoi Realty (Neha) | Chariot Hinglish | oberoi.converso.work | wf7 | :8943 |
| Raheja Prime Two (Neha) | Chariot Hinglish | raheja.converso.work | wf8 | :8944 |
All four are covered by the 5-minute watchdog (companion_watchdog.sh) and auto-restart on reboot (@reboot cron + restart: unless-stopped).
Call flow (every agent)¶
sequenceDiagram
participant C as Caller
participant W as Widget
participant P as Converso Pipeline
participant M as Mock API
participant T as Telegram
C->>W: Click "Talk to X"
W->>P: WebRTC voice session
P->>M: list_projects / get_project
M-->>P: pricing, inventory
P->>M: register_lead / book_site_visit
M->>T: alert (fire-and-forget)
P-->>C: Neha speaks (markdown stripped, symbols spoken naturally)
P->>P: endCall: extract name/phone/interest β DB
Companion page wireframe¶
Two-pane layout β identical across all agents, themed per brand (Oberoi maroon/gold, Raheja blue).
flowchart LR
subgraph L["π LEFT PANE β builder site"]
A["iframe via /proxy<br/>+ mirror fallback"] --> B["nav-sync: auto-navigates<br/>to discussed property<br/>(/mock/recent @2.5s)"]
end
subgraph R["π¬ RIGHT PANE β agent panel"]
C["π€ Neha Β· β± timer<br/>π€ mute Β· π theme"] --> D["π¬ chat + transcript<br/>hint chips Β· typing dot"]
end
L ~~~ R
style L fill:#f8fafc,stroke:#64748b,color:#0a1930
style R fill:#fffbeb,stroke:#d4af37,color:#0a1930
style A fill:#eef2ff,stroke:#0a1930,color:#0a1930
style B fill:#eef2ff,stroke:#0a1930,color:#0a1930
style C fill:#fefce8,stroke:#ca8a04,color:#0a1930
style D fill:#fefce8,stroke:#ca8a04,color:#0a1930
Operations¶
- Watchdog: checks ports 8941β8944 + generator :8935 + all 4 sites every 5 min, revives dead mocks
- TTS symbol fix: markdown stripped before synthesis (
*βdropped, %β"percent", βΉβ"rupees", &β"and", +β"plus") in Chariot TTS - Rebuild-safe: canonical copies at
/root/converso/api/services/pipecat/chariot_tts.py+dograh-widget-patched.js - Skill:
real-estate-voice-agentβ full deploy recipe + gotchas, new builder sites are 30-minute clones
Details per agent: [[D-insights Voice Agent Platform]]