A modular and AI-powered appointment booking agent designed to streamline scheduling for businesses, starting with dental clinics. Built with LangGraph, Composio, and AI Telephony, this agent integrates Google Calendar and Gmail to manage appointments, send confirmations, and handle outbound phone calls.
Users can check available time slots, confirm bookings, and receive queue updates via email, call, or message. The system is highly customizable, supporting alternative CRM, mail services, and voice providers like Twilio or Vapi. Deployed on Vercel and LangGraph Cloud, with robust testing via LangSmith and LLM unit tests.
- Agent : LangGraph, Composio (Tools Library), Voice Orchestrator (Bland.com)
- LLMs: Gemini-2.0-flash-exp
- Interface (NextJS15)
- Deployment (Vercel, LangGraph Cloud)
- Tests (LangSmith, LLM Unit Tests Code.)
- Development (IDE: VS-Code/Cursor) + Google Collab + Docker
- SCM [GitHub] panaversity/learn-agentic-ai/AGENTIC_PROTOTYPES/appointments_agent (We will be actively develping it further here in this repo in live Agentic AI sessions.)
- CRM/Calendar/System [Google Calendar, Gmail]
- User Wants to Book an Appointment with Dentist Clinic
- Share available time schedule (i.e: Monday 09-06 PM)
- At what time can I come and my preferences are 4 PM DATE.
- User wants to know about Wait Time and Queue Number.
- User Booking Confirmation (email/phone call)
- Connect Google Calendar (Replaceable with any Calendar or CRM)
- Greet Users and Collect basic Info
- Check for Available Time Slots for the Dental Clinic (Can be any Business)
- Suggest TimeSlots and Confirm the final One with User
- Schedule Booking in Google Calendar
- Create a save a Draft Email in Gmail (Replaceable with any Mail Service)
- Confirmation Call after Booking Appointment using Bland API (Just replace the function call with any providor of your choice)
- Cron Job to schedule calls
- Change TimeZone from UTC to User Specific
- Add Voice Modality with providers (Twillio, Vapi, Bland)
[ ] Business Active Hours [ ] Queue Number and Wait Time Flow [ ] If email is invalid or if phone don't dials try again later -- If not confirmed priority customer can take slot.
- All prototyping notebooks are in the
prototypes
directory - All final agents live in the
src
directory
- Docker
- Composio, Google AI Studio and LangSmith API Key
- Setup the following either in Composio dashboard or through CLI/Jupyter Notebook:
composio add googlecalendar gmail composio triggers enable GMAIL_NEW_GMAIL_MESSAGE
-
Clone the repository:
git clone https://github.com/... cd ...
-
Create a
.env
file:cp .env.example .env
Update the environment variables as needed.
-
Run LangGraph Server:
- Install Docker Desktop
- Open Docker Desktop
- Run container:
docker compose up
- Or run in detached mode:
docker compose up -d
-
Access LangGraph Studio
- Open LangGraph Studio
Applying Changes:
- Stop the container:
docker compose down
- Restart the container:
Note: Changes outside the
docker compose up -d
src
directory require rebuilding the image.
-
Install uv package manager:
pip install uv
-
Create and activate virtual environment:
uv venv source .venv/bin/activate
-
Install packages from pyproject.toml:
uv run
-
Run LangGraph Server:
uv pip install langgraph-cli uv run langgraph up
Note: If you encounter errors, stop all containers, run
docker system prune
, and try again.
To switch models, update line 26 in configuration.py
:
# From:
default="openai/gpt-4o"
# To:
default="google_genai/gemini-1.5-flash"