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?

Book a demo