Overview
Reception AI is an AI receptionist for small businesses. It answers phone calls and website chat. It greets callers and answers questions using the facts you give it. It books appointments against real opening hours, takes messages and captures leads. When a person should take over, it hands the caller on. Every conversation, booking and lead is kept in one workspace.
You get the full source code. Run it for one business, or sell it as a SaaS product: plans, Stripe billing and a platform admin panel are included. It suits salons, clinics, dental and veterinary practices, restaurants, hotels, gyms, tuition centres, trades, real-estate offices, and law and accounting firms.
Features
For business owners
- Guided setup. A nine-step checklist takes a new workspace from sign-up to a live line. It is worked out from what already exists, so it never asks for a step you have finished.
- Dashboard. Calls this week, bookings, new enquiries, minutes of conversation, recent activity and your receptionists.
- Conversations inbox. Full transcripts with outcomes and the tool calls made. Filter by open, booked, needs you or done.
- Call history. Inbound and outbound calls, plus the call lists for each campaign.
- Bookings and follow-ups. Bookings, leads and tickets in one view.
- Insights. Volume, outcomes, channels and languages over 7, 14, 30 or 90 days, with CSV export.
- Quick CRM board. Captured leads move through new, qualified, won and lost.
- Appointments diary. Built from your opening hours. Regenerating it never deletes a booking. You can also add open times by hand.
Building a receptionist
- 18 trade templates. Clinic, restaurant, salon, dental, veterinary, hotel, real estate, home services, legal and accounting, and more. Each comes with a greeting, prompt, tools and sample knowledge. You can also start blank.
- AI setup assistant. Describe your business in a chat and get a draft receptionist. An "improve instructions" helper rewrites your prompt.
- Prompt brain. Set the personality, greeting, tagline, language, model, temperature and your own rules.
- Workflow brain. A visual call-flow canvas with conversation, action, condition, transfer, text (SMS) and hang-up nodes.
- Guardrails. Nine preset boundaries, such as never giving medical advice, plus your own rules.
- 25 named voices. Ten OpenAI Realtime voices plus 15 named personas that play through those ten voices. Each has a portrait and a preview in the app.
- 10 languages. English, Spanish, French, Hindi, German, Portuguese, Japanese, Korean, Chinese and Arabic.
- Business knowledge. Upload PDF, DOCX, TXT, Markdown, CSV, JSON or HTML files. You can also paste notes or pull in a web page. Knowledge is searched with server-side full-text search. Web pages older than 14 days are flagged as stale. One library can serve several receptionists. You can ask the library a test question to check an answer.
- Opening hours. Weekly hours and a timezone for each receptionist, with suggested hours taken from the template.
- Built-in actions. List open slots, book appointments, capture leads, create tickets, look up orders, search the catalogue, hand off to a person, send an SMS, call an API, and search the web or X.
- Rehearsal and simulation. Run scripted test callers against a receptionist and see which checks pass. Simulate an inbound call, or talk to the receptionist in the browser.
Channels and telephony
- Live phone voice. OpenAI Realtime runs over a WebSocket relay that passes μ-law audio through without transcoding. If
APP_URL is missing, Twilio calls fall back to a slower turn-by-turn path.
- Bring your own carrier. Import and check numbers from Twilio, Plivo, Vonage or Telnyx, or add a SIP trunk. The app can point Twilio and Plivo webhooks at itself for you.
- Test numbers. Simulator-only numbers and SIP addresses let you try the full flow without a carrier.
- Inbound and outbound. Set a direction for each receptionist. After hours it can take a voicemail, play a message and hang up, or just hang up. You can add a transfer number, a caller ID override and an outbound first line.
- Website widget. Embed it with a script tag or an iframe. It offers live browser voice with a typed fallback. You can set your own headline, logo and accent colour, and hide the product branding.
- Public forms. Build intake forms with text, email, phone, long-text and select fields. Share them as a public link.
Outbound campaigns
- Contacts. Import from CSV, TSV or Excel using a downloadable template, and export to CSV.
- Campaigns. Each campaign has calling windows, a timezone, a maximum number of attempts and a voicemail behaviour. A background job queue works through the list.
- Compliance tools. Every outbound greeting starts with an AI disclosure. Callers who ask not to be called again are added to a suppression list during the call. Do-not-call contacts are skipped, and consent can be recorded.
Integrations
- 20 working connectors. Gmail, Google Calendar, Google Sheets, Outlook, Slack, HubSpot, Salesforce, Shopify, Stripe, Zendesk, Notion, Calendly and any MCP server. Voice and model providers are listed below. A receptionist reads and writes to these services while it talks.
- MCP servers. The receptionist finds a server's tools and calls them by name.
- OAuth with token refresh. Google, Microsoft and Salesforce connections sign in with OAuth and refresh their tokens automatically.
- Provider routing. Connect OpenAI, Anthropic, Together AI or OpenRouter for chat. Connect ElevenLabs or Cartesia for speech, or Deepgram for transcription. xAI Grok is the default.
- Signed webhooks. Events for appointment booked, lead created, form submitted and call completed. Each is signed with HMAC-SHA256 and retried from the job queue.
- Google Sheets export. Bookings, form submissions and leads are added as rows automatically.
- WhatsApp and email channel setup. Store WhatsApp Business and Gmail sending details and send a test message.
SaaS and platform admin
- Plans. Create, edit and hide plans with limits on minutes, receptionists and numbers. Studio, Scale and Enterprise are seeded to start with. Limits are enforced when a receptionist is created or published, when a number is imported and on every answered call.
- Usage metering. Usage is counted in voice-equivalent minutes. Admins can change the rates for live minutes, fallback phone turns and text exchanges without a deploy.
- Stripe billing. Customers upgrade through Stripe Checkout and manage billing in the customer portal. Webhooks keep each workspace's plan in sync.
- Admin panel. Screens for overview, accounts, plans, finance, service health, configuration and audit log. Admins are either support (read-only) or super.
- Finance. Provider cost rates, fixed monthly costs, payments received, month-by-month totals and profitability per customer.
- Service health. Failure rates for each provider over 1 hour, 24 hours or 7 days.
- Configuration. Branding, support address, SEO, Google Analytics or Plausible, terms and privacy URLs, provider keys, and switches for sign-ups, outbound calling and the widget.
- Demo mode. One-click business-owner and admin accounts, a seeded live receptionist, and all changes blocked on the server.
Security and operations
- Authentication. Better Auth with email and password, plus optional Google sign-in. The first admin is set with
ADMIN_EMAILS.
- Encrypted credentials. Stored credentials use AES-256-GCM, and each one is tied to the account and row that owns it.
- Request verification. Twilio, Plivo and OpenAI webhook signatures are checked. Public endpoints are rate-limited using Postgres. Non-admins get a "not found" page at the admin URL.
- Account data. Each workspace can export its data or delete itself.
- Health check. The health endpoint does a real database round trip.
- Job queue. A Postgres queue is drained every minute inside the app.
- Interface. Dark theme by default, with light and system themes. Responsive down to phone width, with an installable app manifest.
Tech stack
- TanStack Start, React 19, TypeScript, Vite 8, Nitro on Node.js 22
- Postgres (any host), or embedded PGLite for evaluation
- Better Auth, Tailwind CSS v4, Radix UI, TanStack Query and Table, Recharts, Zod
- OpenAI Realtime over WebRTC (browser) and WebSocket (phone)
- Node test runner (400+ unit tests), ESLint, Prettier
What's included
- Full, unobfuscated TypeScript source: marketing site, workspace, admin panel and call relay
- Documentation site served at
/docs, covering the user guide, architecture, environment variables, install, deploy, HTTP API, admin and troubleshooting
- README, DEPLOY guide (Fly.io and Railway), CHANGELOG, and
.env.example documenting every variable
- 29 SQL migrations and a migration runner you can safely re-run
- Starter data: 18 templates with sample knowledge, a sample intake form, sample conversations and demo-mode seeding
- Dockerfile and a Railway infrastructure-as-code file
- Command-line scripts for granting admins, encrypting credentials, backfilling costs and opening a local tunnel
Requirements and third-party costs
You need Node.js 22 and a host that keeps one Node process running all the time. Calls hold WebSockets open, so serverless functions will not work. Real calls also need a public HTTPS URL.
- Hosting (required). An always-on container or VM, such as Fly.io, Railway or any Docker host.
- Postgres (required for production). Any provider. PGLite is for evaluation only and is wiped on restart.
- OpenAI API (required for live voice). Used for phone calls and the browser voice demo.
- xAI API (required for typed chat and the AI helpers). Used for browser chat, the phone fallback path and the setup assistant. Workspaces can also send chat to OpenAI, Anthropic, Together AI or OpenRouter.
- Phone carrier (required for real calls). Twilio, Plivo, Vonage, Telnyx or a SIP provider, with a phone number.
- Stripe (optional). For selling paid plans.
- Google, Microsoft and Salesforce app registrations (optional). For Google sign-in and those connectors.
- Connected services (optional). Slack, HubSpot, Shopify, Zendesk, Notion, Calendly, ElevenLabs, Cartesia, Deepgram and WhatsApp Business all use your own accounts.
- QStash (optional). Only needed if you run the job queue from a serverless host.
The purchase covers the source code only. Fees for these services are billed by their providers.