How kirklandsig/aireceptionist works
AI Receptionist is a self-hosted, multi-business phone agent: a caller enters through telephony, has a voice conversation, and may receive answers, a transfer, a message-taking flow, an intake, or an appointment booking. The agent coordinates configuration, prompts, and voice authentication; call lifecycle handling captures transcripts and recordings and dispatches follow-up messages. The README documents Realtime voice, FAQs, transfers, after-hours behavior, and SIP integrations. Source-index references support the principal internal links; unsampled subsystems are included where documented, with uncertain wiring omitted.
Main entry points: agent.py Receptionist agent · lifecycle.py Call lifecycle · dispatcher.py Message dispatcher · booking.py Appointment booking
Components 25
Voice conversation
- Receptionist agent
receptionist/agent.py - Prompts and FAQs
receptionist/prompts.py - Voice authentication
receptionist/voice_auth.py
Booking and intake
- Appointment booking
receptionist/booking/booking.py - Availability lookup
receptionist/booking/availability.py - Keypad intake capture
receptionist/intakes/dtmf_capture.py - Intake storage
receptionist/intakes/storage.py - Information packets
receptionist/info_packets.py
Call records
- Call lifecycle
receptionist/lifecycle.py - Transcript capture
receptionist/transcript/capture.py - Transcript writer
receptionist/transcript/writer.py - Recording egress
receptionist/recording/egress.py - Retention sweeper
receptionist/retention/sweeper.py
Message delivery
- Message dispatcher
receptionist/messaging/dispatcher.py - File channel
receptionist/messaging/channels/file.py - Webhook channel
receptionist/messaging/channels/webhook.py - Email channel
receptionist/messaging/channels/email.py - Email templates
receptionist/email/templates.py - Email sender
receptionist/email/sender.py
Configuration
- Business configuration
receptionist/config.py
Other components
- Caller
- SIP / LiveKit
- OpenAI Realtime
- Google Calendar
- Configured webhook
Connections 27
- Caller → SIP / LiveKit: calls
- SIP / LiveKit → Receptionist agent: routes calls
- Receptionist agent → OpenAI Realtime: voice conversation
- Receptionist agent → Business configuration: loads settings
receptionist/agent.py - Receptionist agent → Prompts and FAQs: uses prompts
receptionist/agent.py - Receptionist agent → Voice authentication: gets credentials
receptionist/agent.py - Receptionist agent → Call lifecycle: starts lifecycle
receptionist/agent.py - Receptionist agent → Availability lookup: checks availability
receptionist/agent.py - Receptionist agent → Appointment booking: books appointments
receptionist/agent.py - Receptionist agent → Keypad intake capture: captures keypad input
receptionist/agent.py - Receptionist agent → Intake storage: stores intake
receptionist/agent.py - Receptionist agent → Message dispatcher: dispatches messages
receptionist/agent.py - Receptionist agent → Information packets: sends information
receptionist/agent.py - Appointment booking → Google Calendar: creates events
- Appointment booking → Availability lookup: checks slots
- Call lifecycle → Transcript capture: captures transcript
receptionist/lifecycle.py - Call lifecycle → Transcript writer: writes transcript
receptionist/lifecycle.py - Call lifecycle → Recording egress: starts recording
receptionist/lifecycle.py - Call lifecycle → Message dispatcher: dispatches call updates
receptionist/lifecycle.py - Call lifecycle → Business configuration: uses settings
receptionist/lifecycle.py - Retention sweeper → Business configuration: reads policy
receptionist/retention/sweeper.py - Message dispatcher → File channel: dispatches to
receptionist/messaging/dispatcher.py - Message dispatcher → Webhook channel: dispatches to
receptionist/messaging/dispatcher.py - Message dispatcher → Email channel: dispatches to
receptionist/messaging/dispatcher.py - Webhook channel → Configured webhook: posts message
receptionist/messaging/channels/webhook.py - Email channel → Email templates: builds email
receptionist/messaging/channels/email.py - Email channel → Email sender: sends email
receptionist/messaging/channels/email.py