Skip to navigation

Appointment scheduling assistant

Build an AI receptionist that books, reschedules, and cancels appointments using Assistants and tools

Overview

Build an AI-powered appointment scheduling assistant that handles inbound calls for booking, rescheduling, and canceling appointments. This approach uses a single Assistant with tools for calendar availability, customer lookups, and confirmations.

Assistant Capabilities:

  • Real-time availability checks and booking
  • Reschedule and cancel with confirmation
  • Customer verification and data lookups
  • SMS/email confirmations via tools

What You’ll Build:

  • An assistant with a focused prompt for scheduling flows
  • Tools for calendar availability and booking
  • Optional CSV knowledge bases for customers/services
  • A phone number attached to your assistant

Prerequisites

1. Prepare data (optional)

Use sample CSVs for customers, services, and appointments during development.

2

Upload files (optional)

  1. Open the Vapi Dashboard, select Resources, then select Files.
  2. Select Upload file and choose one CSV. Repeat for the other two CSVs.
  3. Select each uploaded file and copy its id from the details panel.
Files page with Upload file button and an uploaded sample file

2. Create calendar tools

Use the Google Calendar integration for availability and booking, or your own API via a Function tool.


3. Create the assistant

1

Create assistant

  • In the Dashboard, select Assistants, then Create Assistant.
  • Select Edit next to the new assistant’s name and rename it Receptionist.
2

Configure system prompt

System Prompt
You are an AI receptionist for a barbershop. Your goals:
1) Verify the customer
2) Offer booking, rescheduling, or cancellation
3) Confirm details and send a confirmation
When needed, call tools: check_availability, book_appointment, reschedule_appointment, cancel_appointment.
Keep replies under 30 words. Confirm date/time clearly.
3

Attach tools

Add your scheduling tools to the assistant. Select Publish, review the changes, then select Next. Review the version and traffic settings, then select Publish.


4. Make calls

create web call
import { VapiClient } from "@vapi-ai/server-sdk";
const vapi = new VapiClient({ token: process.env.VAPI_API_KEY! });
await vapi.calls.create({
transport: { type: "web" },
assistant: { assistantId: "your-assistant-id" }
});
create phone call
await vapi.calls.create({
phoneNumberId: "your-phone-number-id",
customer: { number: "+15551234567" },
assistant: { assistantId: "your-assistant-id" }
});

5. Test and validate

Use sandbox calendar records and test identities. Don’t create, change, or cancel real customer appointments during testing.

CheckCoverage
EvalsCorrect booking arguments when all required details are known; ask when timezone is missing; don’t confirm after a tool error.
SimulationsA complete booking, an unavailable slot with an alternative, and rescheduling without losing the original appointment if the change fails.
Controlled callsListen for date and time clarity, and verify the intended changes actually exist in the sandbox calendar.

Repeat critical scenarios before release. A tool mock checks behavior under a supplied result, not the calendar integration. See plan test coverage.

1

Attach a phone number

Create a phone number and assign your assistant. See Phone calls quickstart.

2

Test scenarios

  • New booking → check availability → book → confirm
  • Reschedule existing appointment → confirm
  • Cancel appointment → confirm

Next steps