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 your Vapi Dashboard → Files
  2. Upload the three CSVs and note their file IDs

2. Create calendar tools

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


3. Create the assistant

1

Create assistant

  • Go to Assistants → Create Assistant → Blank template
  • Name 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 and 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