What you're actually building
The tools in the ai-receptionist-basics guide (see /guides/ai-receptionist-basics) are turnkey: sign up, pay monthly, done. This is the other path: building the same thing from two pieces. Twilio owns the phone number and carries the call. Vapi sits in the middle, turns the caller's speech into text, runs it through an AI model, and turns the answer back into speech. You write the instructions, own both accounts, and pay for usage instead of a flat fee.
Do this if you want control over exactly how it talks and don't mind clicking through two dashboards and reading error messages. Skip it if you want something working by Friday, a packaged tool gets you there faster, and you can always rebuild it this way later once you know what you actually need.
Budget an afternoon for the first working version, then a few evenings fixing what only shows up once real callers hit it.
Get a phone number on Twilio
Sign up at twilio.com. New accounts start in trial mode, which caps who you can call and stamps a warning message on every call, so add a payment method and upgrade to a paid account before testing with real numbers.
In the Twilio Console, go to Phone Numbers > Manage > Buy a number. Search by Wisconsin area code (262, 414, 608, 715, 920), filter for Voice capability, and buy one. Numbers run about a dollar a month. Do not port your existing business number into this yet. Build and test on a brand new number first, then decide later whether to route your real line to it.
Twilio's own voice usage is billed per minute on top of whatever Vapi charges you, typically a cent or two a minute for the call leg itself. It is a second, smaller line item on your bill, not a separate subscription.
Set up Vapi and connect the number
Create an account at vapi.ai. In the dashboard, go to Phone Numbers > Import and connect your Twilio number using the Account SID and Auth Token from the Twilio Console home page. Vapi now controls what happens when that number rings.
Next, build an Assistant. This is the actual agent: a language model (GPT-4o-mini and similar smaller models keep the per-minute cost down; the flagship models sound a little more natural but cost more per minute), a text-to-speech voice (Vapi ships several, and cloned or premium voices from ElevenLabs cost more per minute than the stock ones), and a system prompt, which is the instructions block. Assign the assistant to your phone number and every call now runs through it.
As of mid-2026, budget roughly 10 to 25 cents per minute all-in on Vapi's standard tier once you add a decent voice and model, on top of Twilio's per-minute call cost. Check current pricing before you commit; both companies adjust rates and Vapi in particular has changed its plan structure more than once.
Write the system prompt
This box is the entire business. Everything the ai-receptionist-basics guide says about instructions applies here too, but here you're writing it from scratch with no template underneath. Structure it in plain sections, not clever prose.
- Identity and hours: business name, cities served, hours, licensed-and-insured line.
- Services offered in plain words, and what you don't do, so it declines cleanly.
- Pricing rule: only the service call or diagnostic fee, if you have a flat one. Every other job gets "that depends on what we find, let's get you on the schedule."
- Emergency definition and action: what counts (burst pipe, no heat below freezing, active flooding) and where it routes, usually a warm transfer to your cell.
- Booking behavior: what calendar it can see (see the next section), typical job length per service type, and how much buffer to leave.
- The fallback: if it doesn't know, take name, number, and a one-line problem description, and say someone will call back. A clean punt beats a confident wrong answer.
Starter prompt block: "You are the phone assistant for Badger Plumbing, serving Waukesha County, Monday to Friday 7am-5pm. Services: drain cleaning, water heaters, sump pumps, general repair. No new construction, no commercial. Service call fee is $89, state this if asked, never quote any other price. If a caller describes active flooding, a burst pipe, or no heat below freezing, say you're connecting them now and transfer to (262) 555-0134. Otherwise offer to book the next open slot. If you're unsure of anything, take their name, number, and a short description of the problem and say someone will call back within the hour."
Give it a calendar and a way to text you
A voice that just talks isn't a receptionist, it needs to actually do something. Vapi supports function calls and tool integrations that let the assistant hit an outside system mid-call. The two you need: checking and writing to a calendar (Cal.com and Google Calendar both have documented paths), and sending an SMS summary to your phone after each call so you're not relying on the caller to have understood correctly.
This is where most DIY builds stall. Wiring a function call means reading Vapi's docs on tool definitions, getting the API scopes right on the calendar side, and testing the handoff between "the model decided to book something" and "the appointment actually appeared." Budget real time here, not the fifteen minutes it looks like in the docs.
If you don't want to build calendar integration yet, ship version one without it: the assistant answers, qualifies the call, and texts you the details to book by hand. That alone beats voicemail, and you can add the calendar function later once the conversation flow is solid.
Test it against a mean caller, then read every transcript
Call your new Twilio number from a different phone and try to break it. Mumble. Interrupt mid-sentence. Ask for a price on a job you told it never to quote. Say a fake address wrong twice. Every place it stumbles is a line you add to the prompt, and you will rewrite this prompt a dozen times before it holds up.
Vapi logs a transcript and recording of every call under Calls in the dashboard. Read every one for the first two weeks, not just the ones that seem to have gone wrong. You'll find real questions customers ask that never occurred to you to put in the prompt.
Two failure modes show up constantly. Voicemail detection: if you forward a busy line's overflow here, make sure it isn't leaving a full script into a customer's own voicemail box. Most platforms have an answering-machine-detection setting, turn it on and verify it. Transfer logic: test the actual warm transfer to your cell under real conditions, including what happens if you don't pick up, because a transfer that rings into nothing is worse than none at all.
Watch the bill and know when to walk away from it
Per-minute pricing means cost scales with call volume and call length, unlike a flat monthly tool. A slow, chatty assistant that takes ninety seconds to book what should take thirty costs three times as much per call. Tighten the prompt to be efficient, not just accurate.
Check Vapi's usage dashboard weekly for the first month against what the calls are actually worth: leads captured times your close rate times your average ticket. If the DIY build costs more in your time than a $50 to $150 a month packaged tool would cost in cash, that's a real reason to stop building and buy the finished version instead.