How to Build an AI Receptionist Agent in CogniAgent

A receptionist’s real job is narrower than it sounds. Greet whoever’s calling, figure out why, answer what’s already documented, and take a message for anything that needs a person. It should never wander into quoting a price, confirming a booking, or creating a record in a system it has no business touching. This build stays inside exactly that boundary. 

The architecture at a glance

A single actor, AI Receptionist, answers inbound calls in Flexible focus mode, since callers bring unrelated reasons for calling and the actor shouldn’t drag one back to an earlier topic that’s already resolved. Flow-level Global Context sets the hard boundaries once, at the flow, not the actor, so every actor in this flow inherits the same limits. A connected Gmail integration handles two distinct jobs: a general message-taking notification whenever the actor collects contact details for follow-up, and a separate escalation report specifically for callers who raise a complaint.

Step 1: Configure Flow Settings

Open Flow Settings → General. Name the flow something that reflects its scope, for example AI Receptionist. In Description, write a short summary for anyone browsing the flow list later: “Inbound receptionist for a service business. Greets callers, answers basic supported questions, identifies why they’re calling, takes a concise message and contact details when human follow-up is needed, and never qualifies, quotes, books, or creates records in external systems.”

Set Execution Mode to Responder, since this flow waits for an inbound call rather than starting one.

In Global Context, write the rules every actor in this flow should inherit: “You are the phone receptionist for [Company Name], a professional service business serving [Service Area]. Your role is limited to front-desk reception: greet callers, understand the reason for the call, answer simple supported questions from the knowledge base, take a concise message, and explain the next step before asking the next short question. Ask only one question at a time, avoid long pauses, and allow interruptions. Never invent prices, discounts, availability, service areas, policies, appointment times, or booking confirmation. Never create clients, quotes, service requests, bookings, or other external records. Explain that the appropriate team member will review the message and follow up. Collect only the minimum information needed.”

This is the single place all of that scope-limiting logic lives. Any actor added to this flow later inherits it automatically, rather than needing the same restrictions rewritten into every new actor’s own Instructions.

Step 2: Add the phone channel

Open Flow Settings → Channels, click Add Channel, and select Phone. It’ll show a NEEDS CONFIG warning until you finish setting up the connection; that’s expected at this stage, not an error to troubleshoot yet.

To test without provisioning a dedicated number, claim one from CogniAgent’s pool of shared test numbers. Ten are available, all US-based, one claim per workspace at a time, leased for 24 hours and capped at 30 minutes of total call time. They’re inbound only, so testing outbound calls needs a Twilio number of your own. Claim one from the Phone Numbers section, then call it directly once configuration is complete.

Step 3: Add the AI Receptionist actor

Add an actor named AI Receptionist. In Context, keep it tight: “Handle inbound calls as the business’s front desk. Continue from information already provided and never restart the conversation after an interruption.” Under Inherit Context, check both Global flow context and Collected information so far, so the Step 1 rules and anything already gathered both carry into this actor.

Step 4: Write the Instructions

The opening line matters more here than in most actors, since it’s a fixed script rather than something the model composes fresh each call: “On your first spoken response in every new call, always begin with this exact sentence, even if the caller has already stated their request: ‘Hello! Thank you for calling [Company Name]. How can I help you today?’ If the caller already explained what they need, immediately acknowledge it after the greeting and do not ask them to repeat it.”

Follow with how the rest of the call should behave: “Listen to the caller’s reason for calling, acknowledge it briefly, and respond naturally. Keep every reply to one or two short sentences. Ask only one short question at a time and do not follow a rigid questionnaire. Answer simple supported questions using the knowledge base, and collect only the minimum information needed for a team member to follow up.”

Short replies matter specifically because this is voice, not chat; a caller has no way to skim past a long answer the way a reader would.

Step 5: Set the Definition of Done

Set it precisely, since this actor’s whole job depends on knowing exactly when it’s finished: “The caller’s basic question has been answered, or their name, best available contact method, concise message, and preferred callback time when requested have been captured. The receptionist has asked whether anything else is needed, the caller has explicitly indicated that no further help is required, and the receptionist has delivered the closing message. No lead qualification, estimate, appointment, booking, CRM record, or other external action has been performed.”

That last sentence is doing real work. It’s not describing what success looks like; it’s naming everything this actor is explicitly not allowed to have done by the time it calls itself finished.

Step 6: Set the Model and Focus Mode

Set Model to Anthropic: Claude Sonnet 5. Set Focus Mode to Flexible. Unlike a qualification or scheduling actor that needs to stay locked onto one task until it’s done, a receptionist fields whatever a caller brings up, and a caller who mentions three unrelated things in one call shouldn’t get steered back toward the first one only because it came first.

Step 7: Connect Gmail and enable only Send Email

Open the actor’s Capabilities panel, go to Integrations, and connect Gmail. In the actions list, check only SEND EMAIL, and leave Patch Label, Patch Send As, Reply To Thread, Search People, and Send Draft unchecked; none of them belong to a receptionist that only ever needs to send one kind of notification.

In When to use, write: “Use this action only once, after collecting the caller’s name, best available contact method, a concise message, and preferred callback time when relevant. Send an internal notification to the company’s designated staff email address so a team member can follow up.” The “only once” matters: without it, nothing stops the actor from sending a separate email for every detail it collects instead of one clean notification per call.

Step 8: Add the complaint escalation action

Add a second action, this time as an Act step rather than the Gmail integration’s own capability, since a complaint deserves different handling than a routine message. In What should happen here?, write: “Send the escalation report of the call if the customer is unsatisfied with something to {{escalation_email}} after the conversation is completed.” Set Definition of Done to “The user voiced the complaint.”

Double-check Wait for the user to reply against what the instruction says. If the action is meant to fire only after the conversation ends, as the instruction states, that setting should be off; left checked, the two are telling the actor two different things about timing, and it’s worth resolving which one is correct rather than leaving both in place.

Step 9: Test representative calls

Call through a shared test number and confirm: a caller who states their reason before the greeting finishes doesn’t get asked to repeat it; a simple supported question gets answered directly from the knowledge base; a caller asking for a price or a booking gets told a team member will follow up rather than getting a quote or a confirmed slot; and a caller who voices a complaint triggers the escalation email while a routine message triggers only the general notification, not both. Confirm the general notification only ever sends once per call, even if the caller changes their contact details partway through.

Step 10: Deploy

Finish configuring the phone channel until the NEEDS CONFIG warning clears, confirm the Gmail connection is live, and confirm both actions from Steps 7 and 8 are pointed at real addresses rather than placeholders, before publishing the flow.

What this saves the business

Every call that reaches voicemail today is a caller deciding whether to leave a message or call the next business on the list. This build answers on the first ring, every time, and hands over exactly the message a team member needs to call back, without ever pretending to have authority it doesn’t have. Complaints get flagged distinctly rather than sitting in the same queue as a routine question, so the call most likely to need a fast response is also the one least likely to get lost in the pile.

Other Guides