---
created: 2026-03-12
tags: [voice, vapi, pipecat, twilio, infrastructure]
related: ["[[08-Infrastructure/Infrastructure Map]]", "[[02-Fleet/Rivet]]"]
---

# Voice AI Systems

RateRight runs two completely separate voice AI systems for different purposes.

---

## System 1: VAPI — Phone Receptionist (Inbound)

AI receptionist that qualifies inbound leads over the phone.

| Setting | Value |
|---|---|
| Platform | VAPI (hosted) |
| Model | GPT Realtime API (gpt-realtime-2025-08-28) |
| Voice | OpenAI "alloy" (natural male) |
| Temperature | 0.7 |
| Max tokens | 250 |
| Config | /phone-ai/vapi-config.json |
| Webhook | Growth Engine /api/vapi/webhook |
| Setup script | setup-vapi.js |

**Call flow:**
1. Inbound call hits VAPI
2. VAPI handles the conversation with GPT Realtime
3. End-of-call report webhook fires
4. AI parses transcript
5. Saves to `vapi_tasks` table
6. `taskExecutor.js` runs async follow-up tasks

---

## System 2: Pipecat + Twilio — Rivet Personal Assistant

Michael's daily briefing/debrief calls with Rivet. This is the COO on the phone.

| Setting | Value |
|---|---|
| Framework | Pipecat (Python real-time voice pipeline) |
| STT | Deepgram (Australian English, nova-2) |
| LLM | Claude Opus 4.5 (Anthropic) |
| TTS | ElevenLabs "Charlie" (ID: IKne3meq5aSn9XLyUdCD) |
| Transport | Twilio Media Streams → WebSocket |
| Phone | +61238205443 |
| WebSocket | Port 8765 on VPS |
| Service | rivet-voice.service (systemd) |
| Main script | /voice-assistant/voice_assistant.py |
| Outbound calls | /voice-assistant/make_call.py |
| Logs | /voice-assistant/logs/YYYY-MM-DD.log (7-day retention) |

**Call schedule:**
- **Morning (6:30 AM):** Site brief + daily priorities + hard questions
- **Evening (5:30 PM):** Business debrief + accountability
- **Sunday:** Weekly review

**Context:** Reads `todays-hard-questions.md` before each call
**Persona:** "You are Rivet, the COO system for RateRight..."
