Two related builds. A chatbot that answers from your own documents through retrieval rather than guessing, and a voice agent that picks up the calls nobody gets to and books them. Both end the conversation by writing a contact, a transcript and a tag into your CRM.
A chatbot that answers confidently and wrongly is worse than no chatbot. The difference between the two outcomes is not the model, it is whether the assistant is made to look something up before it speaks.
Retrieval-augmented generation is that mechanism: your handbook, price list, service pages or policies get chunked into a vector store, the question finds the relevant passages, and the model answers from those passages with a clear instruction to say it does not know when they do not cover the question. The same grounding applies on the phone, where a wrong answer costs an appointment.
Chatbot and voice builds share the same three layers: the knowledge, the conversation design, and the write-back into your systems. Only the interface differs.
| Layer | What gets built |
|---|---|
| Knowledge base | Document ingestion, chunking and embedding into a Supabase vector store, with a re-index path for updates |
| Grounding | Retrieval step, system prompt with scope limits, and an explicit refusal behaviour for unknowns |
| Conversation design | Greeting, qualifying questions, objection paths, and a defined handoff to a human |
| Voice layer | Vapi agent with phone number, voice selection, call recording, and after-hours routing rules |
| Booking | Live calendar availability check and appointment creation inside the conversation |
| Post-call analysis | Transcript parsed for intent and outcome, then tagged and routed to the right pipeline stage |
| CRM write-back | Contact created or matched, transcript logged as a note, tags and opportunity set |
| Handover | Prompt documentation, escalation rules, and instructions for updating the knowledge base yourself |
Answers HR policy questions in English or Tagalog from a Supabase vector store built on the company handbook.
Voice · dentalA 24/7 voice agent taking booking calls for a dental clinic, checking real availability before confirming.
Post-call routingTranscripts analysed after each call, then tagged and routed into the correct CRM pipeline stage automatically.
RAG assistant on your documents, embedded on your site or in a chat channel, with refusal behaviour tested.
1–2 weeksPhone agent with booking, after-hours routing, escalation to a human, and CRM write-back.
2–3 weeksBoth, sharing one knowledge base, plus post-call analysis feeding your follow-up workflows.
3–5 weeksNote that AI agents carry running costs beyond the build — model usage, voice minutes, and phone numbers. Those are yours directly, on your own accounts, and get estimated during scoping. The maths on whether a voice agent pays for itself walks through the missed-call arithmetic.
Book a free 15-minute call. Bring roughly how many calls go unanswered, or the document people keep asking you to explain, and I will tell you which of these two builds actually helps.
Book a free 15-minute call →Retrieval-augmented generation means the assistant searches your own documents for the relevant passage before answering, then answers from it. Without retrieval, a chatbot answers from general training data and invents details about your business.
Current voice models are convincing on short, structured calls: taking a booking, answering opening hours, capturing a callback. They still handle interruptions and unusual requests worse than a person, which is why every build includes an escalation path to a human.
Yes. I have built a bilingual English and Tagalog HR assistant that detects the language of the question and answers in the same one, from the same document store.
Three things: retrieval so it answers from your documents rather than memory, a system prompt that requires it to say it does not know instead of guessing, and a defined handoff for questions outside its scope.
That is usually the point. A conversation ends with a contact created or updated, a transcript logged as a note, tags applied based on what the caller wanted, and an opportunity opened in the right pipeline stage.