ProductAI Receptionist
AI Receptionist
An AI that answers the inbound line, in a live voice conversation, holding a fixed set of tools you choose. What it may do to your CRM while the caller is still on the phone is decided per tool, not per conversation, and most of what it can do is off until you turn it on.
What it can do, and what is on by default
The receptionist is given a tool list rather than a free hand. Twelve actions are built in, and five of them are enabled on a new configuration: transferring the call, capturing a message, scheduling a callback, looking up a returned call, and hanging up. The rest are opt-in.
- transfer_call
- On by default. Warm transfer of a qualified or urgent caller to a human queue.
- capture_message
- On by default. Record a callback message when no human owner is available.
- schedule_callback
- On by default. Record the caller's requested day and time as a due item on the team's callbacks list. It never dials: a person places the call.
- lookup_returned_call_number
- On by default. When a caller says you called me, match the number they were reached on against recent outbound dials and the CRM, so the greeting starts from what is already known.
- hangup_call
- On by default. End a resolved, abusive or caller-requested disconnect cleanly.
- book_meeting
- Off until enabled. Books a real meeting on the calendar and creates an inbound-call lead.
- answer_question
- Off until enabled. Answers product and support questions from the workspace knowledge base.
- research_company
- Off until enabled. Looks up a live summary of the caller's company mid-call, grounded with sources.
- create_note
- Off until enabled. Creates a follow-up note for the workspace after the call.
- send_verification_code, check_verification_code
- Off until enabled. A one-time SMS code to the caller's on-file number, and the check of the code they read back, so identity is verified before any account detail is discussed.
- diagnose_account
- Off until enabled, and only after the caller is verified. A read-only summary of what is wrong with their account.
A workspace can also define its own actions. A customer action carries a JSON-schema parameter block and a signed webhook binding, and compiles into the same tool list as the built-ins. The built-ins always come from code, so a database problem can only ever remove customer actions, never grant one and never mute the receptionist.
What it may write while the caller is on the line
Every action is classified by what it does to the world, and the classification is what the approval gate keys on.
- none
- Returns information into the call and creates nothing durable for a human to act on. Transferring, hanging up, answering from the knowledge base, researching the company, the verification pair and the account diagnosis are all in this class.
- autonomous
- Commits during the call, under a cap. Booking a meeting, capturing a message, scheduling a callback and creating a note are in this class.
- proposal
- Never commits live. It writes a row a rep approves afterwards.
A single call may make at most ten autonomous CRM writes. A refusal does not spend the budget, so a caller cannot exhaust the cap by asking for things the receptionist declines.
Recording, and when a disclosure is spoken
An inbound session can transcribe and store the caller's audio, which in an all-party consent state is a recording decision rather than a preference. The caller's state is resolved from the number they are calling from, using the same jurisdiction authority the outbound dialer uses; there is no second classification to drift from the first.
The gate fails closed in the only safe direction. Recording proceeds when the state is a known one-party state, or when the disclosure will actually be spoken. An unknown or unresolved jurisdiction counts as all-party. If a disclosure is required and cannot be guaranteed to be spoken, the capture mode is downgraded rather than the recording proceeding silently.
When it cannot take the call
By the time the application decides whether to run a receptionist session, the phone system has already answered and a human being is listening. So every refusal carries an instruction for what the caller hears: a transfer to the route's non-AI fallback where one exists, and otherwise a spoken apology before the line drops.
The refusal is still a refusal. Nothing is relaxed to keep the call alive, and the caller never hears an internal billing or entitlement message. What changed is that the caller no longer hears silence.
Behaviour on this page is read from
- src/lib/voice/receptionist-options.ts
- src/lib/voice/action-catalog.ts
- src/lib/voice/ai-agent-tool-dispatch.ts
- src/lib/voice/inbound-recording-disclosure.ts
- src/lib/dialer/recording-jurisdiction.ts
- src/lib/voice/inbound-degrade.ts
Was this page helpful?