Looking at this for procurement or compliance? Read AI calls — privacy & data flow — the egress matrix, operator obligations and regulatory anchors in one place.
Voice AI · Real-time

Programmable, sovereign, carrier-independent Voice AI — not just an AI receptionist.

Point a phone number at CodeB and a real-time voice AI answers it. It speaks any language, follows the script you wrote, takes messages, transfers to a human SIP phone when the caller asks for one, and emails you a transcript when it hangs up. No call centre, no IVR tree, no “press 1 for reservations”. Pluggable real-time AI Voice Engine, dispatched per virtual number, runs inside your own deployment.

Live demo · talks back in your browser
Hear the AI receptionist for yourself.

One click opens a browser call to our public demo line. Say hello in any language — the model picks up, replies in sub-second latency, and follows the script. No sign-in, no install.

Try the AI receptionist — call now

Already shipping — configure on the virtual numbers page. Pick a real-time voice Mode on any number you own, paste a system prompt, save. The next inbound call is answered by the AI.

Why "platform", not "receptionist"

An AI receptionist is a checkbox. A Voice AI platform is what your team will actually use to build differentiated voice products. The 11 capabilities below are what separates the two — and what most "AI receptionist" SaaS vendors don't ship.

1 · Separate persona & prompt per number

Every virtual number runs its own system prompt, voice, language, transfer policy and toolset. One install hosts a sales receptionist, an after-hours support line, a campaign caller and a multilingual concierge as four separate personalities.

2 · Real-time multilingual conversations

Sub-second latency in any language the underlying engine supports. Caller switches language mid-sentence; the agent follows. Per-persona language hint; auto-detect fallback.

3 · Human SIP transfer mid-call — smart internal routing

When the caller asks for a colleague, the agent decides who to reach via a structured tool call. Before touching the carrier, the bridge checks whether the destination is one of your registered phones — hardphone, browser softphone or mobile softphone — and dials that endpoint directly over the local TLS or WebSocket link. The PSTN trunk is only used when the target really is an external number. Internal handovers stay on-net (faster, no per-minute charge, no carrier hop); external handovers ride your existing SIP trunk under the per-tenant whitelist. The original AI session closes cleanly either way, no awkward bridge.

4 · Outbound scheduled campaigns

A CSV or REST trigger fires the AI to dial a list — appointment reminders, satisfaction surveys, debt notifications, lead qualification. Time-windowed, rate-limited, with consent and opt-out tracking.

5 · Conditional retries

Per-campaign retry rules — only retry if no-answer, never if voicemail-reached, escalate to SMS after 3 fails. The platform handles call-state classification; you write the policy.

6 · Transcript and summary delivery

Every call produces a signed transcript (text + JSON) and an LLM-generated summary, delivered to email, webhook or CRM. Signed with an ECDSA-P256 sidecar so a third party can prove the AI said what it said.

7 · REST initiation

A single REST call dials a number, runs the agent, returns the call ID. Your CRM, your booking system, your monitoring tool can place AI calls programmatically without touching SIP.

8 · HMAC-signed webhooks

Call events (started, transferred, ended, dtmf, transcript-ready) post to your endpoint with HMAC-SHA256 signatures and replay protection. Your backend can react to live calls without polling.

9 · Pluggable AI engine

The Voice AI engine is a swappable component. Run it cloud-hosted by default, or pin it to an on-premise model deployment for sovereignty. Per-tenant engine choice — one persona on cloud, another on local, same call routing.

10 · Local TTS fallback

If the live engine is unreachable (cloud outage, quota hit, latency spike), the platform falls back to a local TTS prompt — "we are temporarily routing you to a teammate" — and bridges to a backup human extension. Calls don't drop on engine failures.

11 · BYO SIP carrier

No vendor-locked telephony. Bring your own SIP trunk — Sipgate, Pembroke, OVH Voip, your in-house carrier, your existing Teams Direct Routing — and the AI rides on it. Carrier-independent by design.

What it does

Real-time, not record-and-respond

Full-duplex audio over the same SIP leg the caller dialled. The model hears the caller as they speak, can be interrupted mid-sentence, and replies with sub-second latency. No “please wait while I think”.

Real-time voice

Any language, on the fly

The model detects the caller’s language and replies in kind. Switches mid-call if the caller switches. Your script can pin a default (“always greet in German, switch only if asked”) or let the model choose.

Multilingual

One persona per number

Each virtual number gets its own system prompt, voice, opening line, and warm-up delay. A hotel can run +356 ... 100 as the front desk, ... 101 as the restaurant, ... 102 as the spa — same AI engine, three personalities.

Per-number config

Transfer to a human

The receptionist decides when to transfer using a structured tool call — not a brittle phrase match. It can transfer to any registered SoftPhone (internal extension) and, when the operator has added the number to the per-tenant whitelist, to any external phone. Off-list numbers are refused fail-closed. The AI says it’s connecting you and drops out.

Whitelisted hand-off

Knows when to hang up

A second tool lets the receptionist end the call itself once the caller is done. The reason it gives (“caller said goodbye”, “rude / abusive”, “voicemail loop detected”) lands in the transcript and the CDR so you can see why each call ended.

Self-terminate

One room per caller

Set the room to random and every browser call mints a fresh isolated room name. Two visitors landing on the same dial-in URL never end up in the same room, so the AI never accidentally hears the previous caller’s conversation.

Per-session isolation

Transcript + summary by email

Every call ends with a full transcript and a one-paragraph summary in your inbox. Recipients are configured per virtual number; the format reads like a human took notes. Nothing else is retained on the server by default.

No silent recordings

Drops into your existing PBX

CodeB doesn’t replace your phone system — it complements it. Route a single DID (or a single internal extension) to the bridge and the AI receptionist is online; the rest of your numbers stay on whatever you already have.

SIP-friendly

Works for office and SIP phone too

Inbound from the PSTN, inbound from a registered SIP phone, inbound from a CodeB Webphone web user — all three reach the same AI. Same script, same voice, same transcript.

Three answer paths

Tenant-isolated

Each tenant points at its own appsettings file, brings its own provider credentials, gets its own transcripts. A hotel chain running on a shared CodeB host keeps each property’s receptionist separate.

Multi-tenant

Fall-back to TTS

If the configured provider credentials are missing or the model is unreachable, the bridge falls back to a server-side TTS auto-reply so the caller never hits dead silence. The transcript records the fallback so you know it happened.

Always answers

Sample industry: hospitality

Hotels, restaurants, spas, vacation rentals, B&Bs — anywhere a small team has to answer the phone in any language at any hour. The AI receptionist takes the obvious calls so the human team handles the ones that matter.

Three numbers at a Mediterranean hotel

NumberPersonaWhat it handles
+356 ... 100 Front desk Room availability, check-in / check-out times, late arrival, lost keys, “is the pool open?”. Books from the rate sheet you paste into the prompt. Anything booking-system-related — transfer to the duty manager.
+356 ... 101 Restaurant Table reservations, menu questions, dietary restrictions, opening hours. Reads back the booking, emails the maître d’ the transcript.
+356 ... 102 Spa & concierge Treatment availability, prices, taxi bookings, “where’s the nearest pharmacy?”. Transfers to concierge for anything off-script.

All three personas live in the same deployment, share the same staff SIP phones for transfers, and roll up into one transcript folder. No per-seat licensing, no per-minute AI billing surcharge from a third party — the bridge talks directly to the provider with your own credentials.

Front desk in three languages, 24 hours a day, that never forgets to email me the booking. The night manager finally gets to do night-manager things. — What we’re hearing from boutique hotel buyers

Configuring a number

Open virtual numbers in the admin, add a row, pick the real-time voice mode, paste your prompt. Save and dial it. That’s the whole setup.

# Front desk — Hotel Casa Mediterraneo Number: +356 ... 100 Mode: ai-receptionist Voice: aoede # warm, female, multilingual Warm-up: 1500 ms # jitter buffer before first audio Greeting: "Casa Mediterraneo, good evening — how can I help?" Transcripts to: manager@hotel.example, reception@hotel.example System prompt: You are the front-desk receptionist at Casa Mediterraneo, a 38-room boutique hotel on the north coast of Malta. Always greet first in English, switch to the caller's language if they reply in another one. You CAN answer: check-in (15:00) and check-out (11:00) times, room types and indicative prices, breakfast hours (07:30–10:30), pool and beach access, parking (free, gated), late arrival procedure, lost key replacement, taxi bookings via concierge. You CANNOT confirm a booking yourself — always offer to transfer to the duty manager (say "I'll put you through to a colleague who can finalise that") and the system will hand the call over. Be brief. Speak naturally. If the caller is in distress, transfer immediately.

How it’s wired

Six moving parts; each is replaceable.

ComponentWhat it does
Virtual number Admin record that says “when this number is dialled, dispatch the call to handler X with config Y”. Stored per-tenant in App_Data/<tenant>/appsettings.json.
InboundDispatcher Routes the inbound INVITE to the right handler based on the virtual-number record. Same dispatcher handles AI mode, TTS auto-reply, room join, and SIP-extension fan-out — one place to add new modes.
VoiceHandler Owns the call for its lifetime. Answers the SIP leg, opens a websocket to the configured real-time voice provider, streams audio both directions, watches for transfer intent, writes the transcript when the call ends.
Audio pipeline G.711 µ-law on the SIP side (RFC 3551 baseline, every carrier supports it), PCM 16 kHz on the model side, with proper resampling so voice pitch is preserved at every conversion boundary.
Transcript writer Per-call JSONL in App_Data/<tenant>/transcripts/, optional email via your existing SMTP pickup directory. Nothing is sent to a third party.
CDR Same call detail record as any other CodeB call — disposition (answered / transferred / fallback-tts), duration, language detected, transfer target if any. Visible on cdr.html.

Privacy posture

Two facts to know:

What’s in scope, what’s not

In scope todayNot (yet)
Live inbound voice answering with sub-second latency Native CRM push-back for outbound campaign results (planned)
Outbound AI campaigns — scheduled dial, retry on no-answer, transfer to staff, per-call transcripts (see use cases) Real-time integration with third-party PMS / booking engines (planned)
Multilingual on-the-fly Speaker sentiment / mood scoring across a call (planned)
Per-number persona, voice, warm-up Voice cloning of a specific staff member
Transfer to staff SIP phone on intent Multi-party conferencing the AI into an existing call
Per-call transcript + email summary Long-term call memory across separate sessions (next phase)

Other industries it fits

Dental & medical clinics

Appointment reschedules, opening hours, “is Dr X in today?”, prescription pickup status. Transfer to reception on intent.

Property management

After-hours maintenance triage. Asks for property, issue, urgency, transfers to the on-call agent or takes a message.

Legal / accounting

New-client intake. Takes name, matter type, callback number; emails the partner a summary; books a 15-minute slot.

Trades & services

Plumber, electrician, locksmith. Captures address, problem, urgency. Sends an SMS-style summary to the technician’s WhatsApp via your usual integration.

FAQ

Whose API key does it use? Yours. The bridge reads provider credentials from per-tenant settings; you bill the provider directly, no markup. Invalid credentials fall back to the TTS auto-reply path so the caller still gets a useful response.
What happens if the voice provider is down? The bridge auto-falls back to the per-virtual-number TTS auto-reply. The caller still gets a useful response and your transcript records the fallback.
Can I A/B two prompts? Yes — run them on two different virtual numbers and compare transcripts. The bridge tracks each prompt’s call count + duration + transfer rate in the CDR.
What audio quality? G.711 µ-law (8 kHz, PCMU payload 0) on the SIP leg — the safest baseline that every carrier and SIP client accepts. The configured model receives 16-bit PCM at the rate it expects, with proper resampling: voice pitch is preserved at every sample-rate boundary.
Will it disconnect after 32 seconds like cheap SIP gateways? No. We removed the early 180 Ringing that triggered the carrier-side Timer C 32-second drop. Sessions stay up for as long as the caller and the AI want to talk.
How do transfers work? The model uses a structured transfer_to_user tool. The bridge looks up the username against the SIP registrar first — if it’s a registered SoftPhone, the AI’s SIP leg gets a SIP REFER to that contact and drops out. If the username looks like a phone number, the bridge checks the per-tenant whitelist and (if allowed) loops the call back through the public listener for outbound PSTN dialling. Non-allow-listed numbers are refused; the receptionist tells the caller and offers to take a message.
How does it know when to hang up? A second hangup tool gives the model an explicit way to end the call with a reason (e.g. caller said goodbye, abusive, voicemail loop). The reason lands in the transcript and the CDR so you can spot patterns later.
What stops the receptionist dialling +1-900 premium-rate numbers? Two gates. (1) The per-tenant whitelist — only numbers an admin explicitly added can be reached. (2) The bridge’s FraudGuard runs independently on the loopback INVITE, so even if the model somehow asked for an off-list number, the trunk would refuse it.
Can the caller tell it’s an AI? If they listen carefully, eventually yes. Many won’t. The honest answer in your script is the right one; we recommend disclosing on first contact (“Casa Mediterraneo, our virtual assistant speaking”) — this is what callers prefer and what the EU AI Act explicitly requires from August 2026 onwards (transparency obligations: individuals must be aware when they are interacting with an AI system).

Set up on a virtual number → virtual-numbers.html · Browse the live directory → virtual-numbers-overview.html · want the rest? All features →

Want this on your inbound DID?

Twenty-minute demo, dedicated number, your own prompt. Replies inside one business day.

Replies within one business day · email lands with humans, not a queue.

Frequently asked questions

What is the CodeB AI Digital Receptionist?

The CodeB AI Digital Receptionist is a real-time voice AI that answers calls to any phone number you point at CodeB. The receptionist speaks any language the underlying engine supports, follows the script you wrote, takes messages, transfers to a human SIP phone when the caller asks for one, and emails you a transcript when the call ends. It runs inside your own CodeB Sovereign Communications deployment, with a pluggable real-time AI Voice Engine dispatched per virtual number.

How is the CodeB Voice AI platform different from a typical AI receptionist service?

CodeB is built as a programmable Voice AI platform rather than a single AI receptionist feature. On top of answering calls, CodeB provides a separate persona and prompt per number, scheduled outbound campaigns with conditional retries, REST call initiation, HMAC-signed webhooks, a pluggable AI engine, a local TTS fallback and bring-your-own SIP carrier. The platform is self-hosted on your own tenant.

How do I set up the AI receptionist on a phone number?

Open the virtual numbers page in the CodeB admin, add a row, pick the real-time voice mode and paste your system prompt. After you save, the next inbound call to that number is answered by the AI. Each number can also have its own voice, greeting, warm-up delay and transcript recipients.

Which languages does the CodeB AI receptionist speak?

The CodeB AI receptionist works in any language the underlying real-time voice engine supports. The model detects the caller's language, replies in kind and follows along if the caller switches language mid-call. Your script can pin a default language, for example always greeting in German, or let the model choose.

Does the CodeB AI receptionist replace my existing phone system?

No. CodeB complements an existing PBX rather than replacing it: you route a single DID or a single internal extension to the bridge and the AI receptionist is online, while the rest of your numbers stay on your current system. Callers can reach the same AI from the PSTN, from a registered SIP phone or from a CodeB Webphone web user.

Can I use my own SIP carrier with the CodeB Voice AI?

Yes. CodeB Voice AI is carrier-independent, so you bring your own SIP trunk, such as Sipgate, Pembroke, OVH Voip, an in-house carrier or an existing Teams Direct Routing setup, and the AI runs over it. There is no vendor-locked telephony.

Is the CodeB AI receptionist self-hosted and GDPR-friendly?

The CodeB AI receptionist runs self-hosted on your own tenant and is described as aligned with NIS2, GDPR and EU AI Act transparency requirements. Call audio streams only to the real-time voice provider you configure, which is the only third party in the loop. Transcripts are stored in App_Data/<tenant>/transcripts/ on your own machine and sent to the inboxes you nominate, and no call audio recordings are kept by default.

Is there a per-minute AI surcharge from CodeB?

No. The CodeB bridge talks directly to the voice AI provider with your own credentials, so the provider bills you directly with no markup, and there is no per-seat licensing. Phone minutes run over your own SIP trunk. If the credentials are invalid, the call falls back to the TTS auto-reply path.

Can the CodeB AI receptionist make outbound calls?

Yes. A CSV or REST trigger lets the AI dial a list for appointment reminders, satisfaction surveys, debt notifications or lead qualification. Campaigns are time-windowed and rate-limited, with consent and opt-out tracking and per-campaign retry rules.

What do I receive after each AI call?

Every CodeB AI call produces a transcript and an LLM-generated summary, delivered by email or webhook and signed with an ECDSA-P256 sidecar. The call detail record shows the disposition (answered, transferred or fallback-tts), duration, detected language and any transfer target.

What can the CodeB AI receptionist not do yet?

The CodeB AI receptionist does not clone the voice of a specific staff member and cannot be conferenced into an existing multi-party call. Long-term call memory across separate sessions is listed as the next phase. Native CRM push-back for campaign results, real-time PMS or booking-engine integration and sentiment scoring are listed as planned.

Can I try the CodeB AI receptionist before committing?

Yes. The live demo on the AI receptionist page opens a browser call to the public demo line with no sign-in and no install. You can also request a twenty-minute demo with a dedicated number and your own prompt; replies come within one business day.