Skip to content
Skip to main content

How to build an interview scheduling pipeline

Interview scheduling is a coordination nightmare. Recruiters spend hours cross-referencing interviewer calendars, candidates wait days for a confirmed time slot, and when the call finally happens, nobody records it consistently. The debrief devolves into “I think they said something about distributed systems” because the notes are incomplete or missing entirely.

This tutorial builds a pipeline that eliminates all of that. Candidates pick their own slot from a scheduling page, Nylas distributes interviews across your team using round-robin, conferencing links are generated automatically, and Notetaker joins every call to record and transcribe. After the interview, you get a structured transcript, summary, and action items through a webhook. The recruiter never touches a calendar.

By the end of this tutorial, you will have a working interview scheduling pipeline with these components:

  • A Scheduler Configuration with round-robin distribution across multiple interviewers
  • Automatic conferencing (Google Meet, Microsoft Teams, or Zoom) attached to every booking
  • Notetaker integration that joins each interview and generates a transcript, summary, and action items
  • A scheduling page (Nylas-hosted or embedded in your careers site) where candidates book their own slot
  • Webhook handlers that notify your ATS when bookings happen and when recordings are ready

The flow is straightforward. A candidate visits the scheduling page, picks a time, and confirms. Scheduler checks all interviewer calendars, picks the interviewer who was booked least recently, and creates the event. Notetaker joins the call at the scheduled time, records everything, and delivers the processed media afterward.

Make sure you have the following before starting this tutorial:

  • A Nylas account with an active application
  • A valid API key from your Nylas Dashboard
  • At least one connected grant (an authenticated user account) for the provider you want to work with
  • Node.js 18+ or Python 3.8+ installed (depending on which code samples you follow)

You also need the following for this tutorial:

  • Connected grants for each interviewer on your hiring panel, each with calendar access
  • A conferencing provider configured for at least one grant (Google Meet, Microsoft Teams, or Zoom). See Adding conferencing to bookings for setup.
  • Notetaker enabled on your Nylas plan
  • A publicly accessible HTTPS endpoint to receive webhook notifications (use VS Code port forwarding or Hookdeck for local development)

Create a round-robin scheduling configuration

Section titled “Create a round-robin scheduling configuration”

Create a Configuration that defines your interview panel, meeting duration, and round-robin distribution method.

A few things to note:

  • availability_method: "max-fairness" distributes interviews evenly. Scheduler assigns candidates to whichever interviewer was booked least recently. If Sarah conducted the last two interviews, Marcus or Priya gets the next one.
  • {{invitee_name}} is a template variable. Scheduler replaces it with the candidate’s name from the booking form, so events show “Interview with Dana Chen” instead of a generic title.
  • Each participant needs both availability.calendar_ids (calendars to check for conflicts) and booking.calendar_id (calendar to create the event on).

Choose between max-fairness and max-availability

Section titled “Choose between max-fairness and max-availability”

Scheduler offers two round-robin strategies:

  • max-fairness keeps the interview count balanced. Good for teams where equal distribution matters. The tradeoff is fewer time slots shown to candidates, because Scheduler only offers times when the least-booked interviewer is free.
  • max-availability shows the most possible time slots by assigning the interview to whichever interviewer is free at the chosen time. High-volume recruiting teams tend to prefer this because candidates see more options and book faster.

To switch, change availability_method to "max-availability".

Update the Configuration to attach automatic conferencing and enable Notetaker.

The custom instructions make a real difference for hiring workflows. Generic summaries are too vague for interview debriefs. By telling Notetaker to focus on technical skills and follow-up items, you get output that maps directly to your hiring scorecard.

With the Configuration ready, give candidates a way to book. Nylas supports two approaches.

Add a slug to your Configuration and Nylas hosts the page at book.nylas.com/<slug>. No frontend work required.

Your scheduling page is now live at https://book.nylas.com/interview-engineering-team. Drop that link into recruiter emails, your careers page, or your ATS’s candidate communication templates.

Embed the scheduling UI directly in your careers site using the <nylas-scheduling> web component.

The component handles date selection, time slots, the booking form, and confirmation. Notetaker consent and round-robin settings apply automatically. For styling options, see Customize Scheduler.

Subscribe to booking.created, booking.cancelled, and notetaker.media so your system tracks the full interview lifecycle.

When a candidate books, Nylas sends a booking.created notification with the event details:

Build a handler that routes booking events to your ATS:

Retrieve interview recordings and transcripts

Section titled “Retrieve interview recordings and transcripts”

After each interview ends, Notetaker processes the recording and sends a notetaker.media webhook. The payload includes download URLs for the recording, transcript, summary, and action items.

Add a notetaker.media handler to the same webhook server:

Here are practical considerations for running this pipeline in production.

Round-robin does not guarantee strict alternation

Section titled “Round-robin does not guarantee strict alternation”

Max-fairness distributes interviews based on booking count for a given Configuration. It does not track assignments across Configurations. If Sarah is in two interview panels, her total load could still be uneven. Also, if one interviewer blocks out every Friday, candidates who book on Fridays never get assigned to them. Encourage interviewers to keep calendars accurate.

Scheduler displays time slots in the candidate’s local timezone, detected from their browser. The Configuration’s default_open_hours are defined in a specific timezone, so set these to match your team’s working hours. If your interviewers span multiple timezones, use participant-level open_hours instead. See Managing availability for details.

Notetaker joins as a non-signed-in participant. If nobody admits the bot within 10 minutes, it times out with a failed_entry state and you lose the recording. For fully automated pipelines:

  • Google Meet: Set meetings to “Anyone with the link can join”
  • Microsoft Teams: Enable “Anonymous users can join a meeting” in Teams admin
  • Zoom: Disable the waiting room for Scheduler-created meetings

Nylas deletes media files after 14 days. Hiring cycles often run longer. Build an automated download pipeline that triggers on the notetaker.media webhook and stores files in your own infrastructure. Do not rely on Nylas-hosted URLs for long-term access.

When a candidate cancels, Scheduler fires a booking.cancelled webhook and removes the calendar event. There is no in-place reschedule — candidates cancel and rebook. Build your ATS integration to handle both, and link records by the candidate’s email address to maintain an audit trail.

The scheduling page shows a consent message if show_ui_consent_message is true, and the bot sends a chat message shortly after joining. That said, recording laws vary by jurisdiction. Some require explicit opt-in consent before recording starts. Review the requirements for your jurisdiction. The messages Notetaker sends are informational, not legal consent mechanisms.

If you use Zoom with round-robin under a single grant, restrictive Zoom settings can prevent participants from joining meetings created by a different account. See the Zoom troubleshooting documentation for workarounds.

You now have a working pipeline where candidates self-schedule, interviewers are assigned automatically, and every conversation is recorded and transcribed. Here are ways to extend it: