๐Ÿ‡ Rabbithole โ† All lessons Work with us โ†’
Step 0 of 6
Day 13 of 30
Rabbithole ยท Learn ยท ~13 min read

AI Receptionist

A 24/7 front desk that answers customer questions straight from your own info: hours, services, policies.

Salons & spasDental & medical officesAuto shops RestaurantsGyms & studiosHome servicesProperty managers
โ˜…

Stop answering "what are your hours?" for the hundredth time

Half the messages a small business gets are the same handful of questions: hours, prices, do you take walk-ins, where do I park, what's your cancellation policy. They come in at 9pm, on weekends, while you're with a customer. Miss one and that person texts the next shop on their list.

This kit is a receptionist that already knows your business. You hand it your own documents (your FAQ, hours, service list, policies), and it answers customers only from those documents, showing you which part of which doc it used. When someone asks something the docs do not cover, it does not guess: it says "let me have someone follow up" and captures them as a lead so you can call back.

Plain-English glossary, once: This is RAG (retrieval-augmented generation) doing real work. Instead of letting the AI answer from memory, you retrieve the most relevant passages from your docs first, then ask Claude to answer using only those. The matching is powered by embeddings: a way to find the passage that means the same thing as the question, even when the words differ. The result is grounded in your docs, so it stays accurate and on-message.
1

Drop in your docs: the front-desk binder you own

What's happening: The receptionist is only as good as what it knows, and what it knows is your files. You drop plain documents into data/docs/: a hours-and-location note, a services-and-prices list, your FAQ, your policies (cancellation, deposits, refunds). Markdown or text, written in your own words. The kit reads only these. Nothing it says comes from anywhere else.
File in data/docs/What it holdsExample line
hours.mdhoursOpen Tue to Sat, 9am to 6pm. Closed Sun & Mon.
services.mdservicesWomen's haircut $55, men's cut $35, full color from $120.
policies.mdpolicyCancel at least 24 hours ahead or a 50% fee applies.
faq.mdfaqYes, we take walk-ins when a chair is open. Parking is free in the rear lot.
โ†ณ How retrieval works, in plain English โ†’
2

Index it: chunk the docs so the right line can be found

What's happening: You run npm run index once (and again whenever you edit a doc). The kit's indexer.js splits each document into small, overlapping chunks (a paragraph or two each) and builds a searchable index on disk. Why chunk? So a customer asking about parking gets the one paragraph about parking, not your whole policy manual. This is the "retrieval" half of RAG, and it is exactly what embeddings make possible.
npm run index    # chunk data/docs/ and build the on-disk index

Under the hood the kit scores each chunk against the question by similarity, then hands the top few to Claude. You never see this; you just get an answer that points back at the exact lines it used.

โ†ณ What an embedding actually is โ†’
3

Give it a brain: connect Claude

What's happening: Retrieval finds the right passages; Claude turns them into a friendly, correct answer. The kit asks Claude for a structured answer (a typed object: the reply text, whether it could answer from the docs, which chunks it cited, and whether a human is needed), never loose prose. It is instructed, in plain rules, to answer using only the retrieved passages.
  1. Go to console.anthropic.com and sign in.
  2. Open API Keys โ†’ Create Key.
  3. Copy the key (it starts with sk-ant-). The setup wizard saves it on your machine.
Default brain: claude-opus-4-8 (sharpest). High volume? Set claude-haiku-4-5 to cut cost.
4

Try it: ask a question, watch it retrieve and cite

What's happening: Ask the sample business anything. The kit retrieves the closest snippets from its knowledge base, then answers using only those snippets and shows you which one it used. If the docs do not cover your question, it tells you it is not sure and offers a follow-up instead of inventing an answer. This chat is live. Try it. It runs entirely in your browser, nothing is sent anywhere.
Front Desk ยท Bloom & Co. Salon (sample)

Tap a question, or write your own:

Pure in-browser dry run: no API call, no message sent, nothing saved.
5

When it does not know: capture a lead, never bluff

What's happening: A grounded receptionist is honest about its limits. If retrieval comes up empty, or the question is something only a person should handle ("can you fit me in for a wedding party of 8 next Saturday?"), the kit returns a fallback: "I am not sure on that one, let me have someone follow up." It then captures the question, name, and contact as a lead so you can call back. That is the same idea from Lesson 11: the Lead Catcher: a missed answer becomes a saved lead instead of a lost customer.
Three promises the kit keeps:
โ€ข It answers only from your docs and shows you what it cited. Grounding in your docs sharply reduces hallucination (it does not eliminate it: always sanity-check the docs and the wording).
โ€ข It never invents a policy or a price. No matching doc means a follow-up, not a guess.
โ€ข It does not give medical, legal, or financial advice as fact; it points those to a human.
6

Put it on a channel: chat or SMS

What's happening: The same grounded engine can sit behind a website chat widget, a text line, or a messaging app. The kit ships with a Telegram inbound handler you can run today, and it also runs as an MCP server so you (or Claude) can drive it as a tool, the same idea from Lesson 1. Wire it to whatever your customers already use.
npm run dryrun     # ask questions in your terminal, nothing sends
npm run index      # re-chunk docs after you edit them
npm start          # run the Telegram receptionist for real
npm run mcp        # expose it as an MCP server (drive it from Claude)
Grounded, with a kill switch: the kit ships with DRY_RUN on. In dry-run it drafts and plans but the mailer and any outbound channel are gated off, so you can watch it work before a single real reply leaves your machine.

Run it yourself: it's free and it's the real thing

The kit is a complete, runnable, MIT-licensed repo: drop in docs, npm run index to build a real on-disk retrieval index, and a grounded answer engine that cites its sources, captures leads, and refuses to guess. Runs on your machine, nothing crippled.

Get the free kit on GitHub โ†’
โ–ถ

Go live

With the kit downloaded:

npm install
npm run setup     # Claude key + docs path saved on YOUR machine
npm run index     # build the retrieval index from your docs
npm start         # run the receptionist

Edit your docs whenever the business changes, re-run npm run index, and the answers update. Prefer the command line first? npm run dryrun lets you ask questions and see the cited snippets without sending anything. The deeper background lives in Lesson on RAG and Lesson on embeddings.

Want it wired to your phone, your website, and your real docs?

This kit is the DIY taste. We connect it to your phone, website, and real docs, and route the handoffs so the questions it cannot answer reach the right person, and we keep the index fresh as your business changes.

Have Rabbithole build it โ†’ โ†ณ Pair it with the Lead Catcher