Project Overview and Business Context
The client was a recruitment technology company building productivity tools for in-house recruiting teams. Their primary user, a recruiter managing 15-20 open roles simultaneously, spent an estimated 6-8 hours per week on interview scheduling logistics: finding slots that worked across multiple interviewer calendars, emailing candidates with options, handling inevitable rescheduling requests, and chasing confirmed attendees with reminders. The brief was to automate as much of this coordination as possible, reducing recruiter scheduling effort to under 30 minutes per week per active role. The product needed to: collect interviewer availability from Google and Outlook calendar integrations, surface available interview slots to candidates via a booking link, automatically generate and send confirmation and reminder emails in the recruiter's tone of voice, handle rescheduling requests with a natural language interface, and present the interview pipeline status in a single dashboard without requiring recruiter input to update it. GPT-4o contributes to two parts of the product: generating personalised email communications in the recruiter's configured tone, and interpreting natural language rescheduling requests from candidates to determine intent and appropriate action. The scheduling logic itself is deterministic: calendar slot availability is computed without AI involvement, as this is a precision task where LLM unpredictability is a liability.
Technical Architecture and Stack Decisions
The application is built on Next.js with Supabase for authentication and scheduling data, deployed on Vercel. The calendar integration layer uses Google Calendar API (OAuth2) and Microsoft Graph API for Outlook calendar integration, allowing the tool to read interviewer free/busy information without exposing calendar details to the recruiter or candidate. The availability aggregation engine is a server-side function that takes the list of interviewers for a role, their calendar access tokens, the interview duration, and any blackout periods (lunchtime, outside office hours), and computes available interview slots for the next 14 days. Slots are ranked by preference: earlier dates, core business hours, and slots that avoid back-to-back interviews for any interviewer. The candidate booking flow generates a unique booking link per candidate. Clicking the link presents available slots in the candidate's detected timezone (from browser locale), allows slot selection, and triggers automatic calendar invites to all interviewers and the candidate. Confirmation and reminder emails are generated by GPT-4o per candidate, using the recruiter's configured tone settings and the specific role and candidate context. Rescheduling requests arrive via a candidate reply link that opens a short natural language input. GPT-4o classifies the request intent (reschedule to specific date, reschedule to first available, cancel) and passes structured intent to the scheduling engine, which automatically finds and offers new slots without recruiter involvement. Supabase stores all scheduling records, email logs, and status data, feeding the recruiter dashboard.
Key AI and ML Components
GPT-4o contributes to two specific functions. Email generation: the system prompt configures the recruiter's communication tone (formal, conversational, brand voice) and provides role and candidate context. GPT-4o generates a personalised confirmation or reminder email that includes the interview details, preparation guidance, and a link to the rescheduling portal. Generated emails are reviewed by the recruiter in the dashboard before sending, unless the recruiter has enabled automatic sending for confirmations. Rescheduling intent classification: when a candidate submits a natural language rescheduling request, GPT-4o classifies the intent into structured categories and extracts any date or time preferences mentioned. The output feeds the scheduling engine, which acts on the intent. The classification handles ambiguous requests gracefully: if the intent is unclear, the system sends a short clarification response to the candidate rather than taking an incorrect action. The calendar integration and slot computation are entirely deterministic. Computing availability from calendar free/busy data and ranking slots by preference is a precision task where AI involvement would introduce unreliability. The AI layer is used only where language understanding and generation add genuine value.
Challenges Solved and How
Calendar integration reliability is the most technically challenging aspect of the build. OAuth token refresh, API rate limiting, and differences between Google and Microsoft Graph API behaviours required careful handling. The integration layer implements token refresh before expiry, exponential backoff on rate limit responses, and a graceful fallback where the recruiter is notified if calendar access fails and asked to manually confirm availability. Timezone management is a common source of scheduling errors in interview coordination tools. The system stores all times in UTC and converts to the user's timezone for display, with explicit timezone labelling on all calendar invites and booking confirmations. The candidate booking page detects the browser timezone and presents slots in local time with the UTC offset shown. Email generation quality required calibration. Early versions of the email generation produced email that sounded generically AI-written. The system prompt was refined with specific instructions on sentence length, vocabulary level, and the specific personalisation elements to include (candidate name, role title, interview panel names, preparation notes). Recruiter feedback on generated emails during the pilot informed prompt refinement.
Outcome and Measurable Results
The client deployed the tool to a team of eight recruiters managing 60 active roles across three employer clients. Recruiter scheduling time fell from an average of 7.2 hours per week to 1.1 hours per week across the team, a reduction of 85%. The 1.1 hours remaining was primarily reviewing and approving AI-generated emails and handling edge-case rescheduling requests that the system escalated for manual resolution. Candidate experience scores on the scheduling process improved significantly: post-interview candidate surveys showed scheduling satisfaction scores of 4.6/5 compared to 3.8/5 before the tool, attributed primarily to faster response times and the self-service rescheduling capability. Rescheduling requests handled entirely automatically (without recruiter involvement) were 73% of all rescheduling events in the first month. The 27% that required human review were primarily complex requests involving room bookings, panel changes, or multi-round schedule restructuring.
Lessons for Similar Projects
Separate scheduling logic from AI logic. Calendar availability computation, slot ranking, and invite generation are precision tasks. Do not use an LLM where a deterministic algorithm is more reliable. Use GPT-4o for what it does well: generating natural language communications and interpreting ambiguous natural language input. Build robust OAuth token management from day one. Calendar integrations that rely on expired tokens degrade silently, creating scheduling gaps that take time to diagnose. Automated token refresh and proactive notification of access failures are essential. Test across time zones with real calendar data early. Timezone bugs in scheduling tools are common and often invisible in testing environments where all users share the same timezone. Use the recruiter's communication tone configuration. Interview scheduling emails represent the employer brand. A one-size-fits-all email template creates a worse candidate experience than a personalised email, and GPT-4o generation makes personalisation cheap.