Telephone
Outbound voice-AI platform — an agent that places and holds live phone calls on a user's behalf, with verified caller ID and a blocking compliance engine in the call path.
Overview
An AI agent that places and holds live outbound calls on a user’s behalf — multi-market, at human-conversation latency. The launch use case is personal-assistant calls: the agent rings a restaurant, a clinic, a courier, and holds the conversation for you.
Voice AI that dials real phone numbers is an easy place to build something harmful, so the platform is designed compliance-first: trusted identity via verified caller ID (never spoofing), safe identity via self-consented voice, and a blocking Compliance Engine in the call path that can refuse any call before it originates.
Status: driving G0 — a no-op call runs end-to-end while every real market stays kill-switched off until its per-market compliance config is proven.
Technical highlights
Blocking compliance engine — authorize() sits in the call path, not beside it. Every outbound call is checked against per-market rules before origination; a refusal is a hard stop, not a log line.
Two origination modes — a platform-provisioned number, or BYON: the user’s own verified number, with branded calling where the market allows it. Verification, never spoofing, is the identity model.
Contract spine — the system is five planes (origination, conversation, compliance, telephony, observability) implemented behind typed interfaces: Pydantic models + Python Protocols in a dedicated contracts/ package, so planes can be swapped without touching each other.
Kill-switch registry and per-market config — every market is a config entry with its own kill switch, routing, and data-residency rules. Nothing goes live by default.
Docs-sync CI gate — a CI check fails the build if the architecture docs drift from the code, keeping the mermaid diagrams and decision records honest.
Agent-built, spec-driven — the codebase is developed through a documented agent build loop (canonical spec, invariants, gates, and ADRs), with research sub-agents feeding the main loop.
Stack
Python, Pydantic, Protocol-based contracts, pytest, Ruff, per-market TOML config, mermaid-documented architecture with ADRs