Case study: FirstReply

An AI receptionist that answers the phone, not a chatbot that answers a form.

FirstReply is the technology behind our AI voice receptionists: it answers a real phone line, checks the caller against CRM, books into a calendar mid-call, and creates a contact record only when a human taps to confirm it. We run it on our own office line, and we build a version of it for other small businesses (law firms, contractors, clinics), tailored to their own CRM, telephony and calendar. It is a reference build, not a subscription you sign up for on this page.

The numbers, and how to check them

From the review of the live codebase and production system, 2026-09-18. The marketing page and browser demo are public; the operator dashboard is not.

233

automated tests, run live in 5.23 seconds

pytest tests -q

47

HTTP routes on the operator dashboard

grep -c "@app\.\(get\|post\|put\|delete\)" main.py

9

Postgres tables: clients, calls, live call state, blocked callers, and more

grep -n "CREATE TABLE" db.py

1

real phone number, live since June 2026, still receiving calls today

+1 (916) 618-0502

What it actually does

  1. Authentication and roles. Login and password for the operator dashboard. Administrator and client are separate roles behind separate authentication: each business sees its own calls, and only the administrator provisions numbers and assistants.
  2. Telephony. Each line can run ring-first: the business's own phone rings first, and the AI assistant picks up only if nobody answers within a set timeout. Or the assistant answers on the first ring. It is a per-client setting, chosen during the build.
  3. CRM. Every call checks the caller's number against our own CRM before the conversation starts, so a known contact gets recognized instead of treated as a stranger. A new contact record is created only when the operator taps a confirmation button in Telegram, never automatically from a heuristic.
  4. Real time. While a call is in progress, the transcript streams live into a Telegram message as the conversation happens, with a "hang up" button next to it. The system polls the telephony provider directly, because a webhook can lag or get lost mid-call.
  5. Calendar. A real availability check and booking against the business's own calendar happens mid-call, not as a follow-up email.
  6. Consent and recording. California requires two-party consent to record a call. A single setting turns on the spoken notice and the recording together. There is no way to enable recording without the notice, closed at the code level and pinned by an automated test.
  7. Security. A spam gate screens calls, a blocklist stops repeat abusive numbers, and the dashboard carries CSRF protection and rate limits on login and sign-up.

What it is not

The part that makes the rest of this page checkable.

Not a subscription you sign up for here

This page is not a pricing page. FirstReply is a reference build we adapt per client to their own CRM, telephony provider and calendar. Talk to us about your business, not a plan.

We built on a telephony platform, not from scratch

The voice pipeline (speech-to-text, the model, text-to-speech) runs on a single telephony provider's AI voice product, not a hand-assembled stack. Our engineering went into provisioning, routing, CRM, and everything that happens before and after the call.

The operator dashboard is not open for a public login

The browser voice demo on the marketing page is the public way to hear it work; the dashboard behind it carries real client data and stays behind authentication.

Engineering decisions worth explaining

  1. Ring-first, when a business wants a human to answer first. With it on, the client's own number rings their softphone before the assistant connects. It solves a specific telephony engineering problem too: a call that just exited a bridged transfer behaves differently from a call starting fresh, and the routing logic accounts for that difference deliberately.
  2. Consent is a closed gate, not a checkbox. An earlier version could technically record a call without the spoken notice. The fix removed that possibility at the code level: one setting drives both the notice and the recording, checked through a single function every time, never through the raw setting directly, and it is pinned by its own test so it cannot regress silently.
  3. CRM doesn't grow itself. A number that just had a real conversation looks like both a new customer and a robocall to a heuristic. We chose the boring answer: a contact is created only when a person taps confirm in Telegram. Not every decision belongs to the model.

Why this matters if you are hiring us

We ran FirstReply on our own phone number before building one for anyone else: the number on this site is the same number Sophie, our own receptionist, answers. When we build your AI for calls and chat, it inherits the same decisions: a human can get the first chance to answer, consent is closed at the code level rather than left to a checkbox, and nothing gets added to your CRM without a person confirming it.

Tell us what's slowing you down.

We reply the same business day.