Problem
Scheduling meetings is tedious — it requires checking availability, back-and-forth messaging, and manual calendar management. There was no simple, conversational way to just say 'book a meeting next Tuesday' and have it done automatically.
Solution
Built Maya, an AI scheduling agent powered by Gemini 2.5 Flash that integrates directly with Google Calendar via OAuth2. Users can type or speak naturally to schedule, check, and manage events. The agent uses tool calling to check real availability, resolve conflicts, and create events — all in a stateful conversation with sub-800ms response times.
What I Built
- Designed and built Maya, a conversational AI agent that acts as a personal scheduling assistant
- Integrated Google Calendar API v3 with OAuth2 for real-time availability checking and event creation
- Implemented voice I/O using the Web Speech API for both speech-to-text input and text-to-speech responses
- Built three calendar tools for the LLM:
get_available_slots,create_calendar_event, andget_event_by_name - Engineered complex time parsing to handle natural language like “next Tuesday afternoon” or “sometime this week”
- Deployed to Vercel with stateful conversation context and fast API routes
Key Features
- Natural language scheduling — just say “schedule a 30-minute call with Sarah on Friday” and it handles the rest
- Voice input & output — hold the mic button to speak; Maya responds aloud
- Conflict resolution — checks existing events and suggests alternative times when there’s a clash
- Google Calendar sync — live read/write access to your actual calendar via OAuth
- Stateful conversations — remembers context throughout the conversation thread
- Sub-800ms responses — fast, fluid interaction powered by Gemini 2.5 Flash
Technical Implementation
- Next.js API routes for serverless backend handling calendar operations and LLM calls
- Gemini 2.5 Flash as the reasoning engine with structured tool-use for calendar actions
- Google Calendar API v3 for event CRUD operations and availability queries
- OAuth2 flow for secure, user-authorized calendar access
- Web Speech API for browser-native STT and TTS without third-party dependencies
- TypeScript throughout for type safety across the full stack
Takeaways
Building Maya pushed me deep into LLM tool-calling patterns — specifically how to design tool schemas that give the model enough context to make good scheduling decisions without hallucinating times or double-booking. The hardest part was handling ambiguous natural language (“sometime next week”) in a way that felt smart, not frustrating. I also learned a lot about OAuth flows for production apps where real user data is involved.