Guide
Build a Recruiting Interview Coordinator
Scheduling an interview means lining up a candidate with three or four busy interviewers, and the back-and-forth eats a recruiter's day. An agent account automates the hardest part: finding a window that fits the whole panel. This guide builds a coordinator agent that intersects every panelist's calendar, emails the candidate a short list of real options, verifies the chosen slot is still open, and books the panel — one identity handling availability, email, and the calendar invite.
Written by Aaron de Mello Senior Engineering Manager
What is a recruiting interview coordinator?
A recruiting interview coordinator is an agent that schedules an interview across a candidate and a panel of interviewers without a human chasing calendars. It finds the times that work for everyone on the panel, presents a short list to the candidate, confirms the chosen slot is still free, and books a single event with the whole panel as attendees. On an agent account, the agent owns the inbox that talks to the candidate and the calendar tools that find and book the time.
The hard part of interview scheduling isn't the booking — it's the intersection. A 1:1 meeting needs one other person free; a panel interview needs several people free at the same time, and the more people on the panel the rarer that window. The coordinator's value is computing that intersection in one call instead of a thread of "does Tuesday work for you?" messages.
Why run interview scheduling on an agent account?
A scheduling agent should have its own identity, not borrow a recruiter's calendar. On an agent account, the coordinator owns the inbox the candidate replies to and books interviews on its own calendar, so a recruiter going on leave doesn't orphan a pipeline of scheduled interviews. The agent is the consistent point of contact from first email to booked event.
It also keeps candidate communication clean. Every message comes from one coordinator address, every invite carries the same identity, and the whole flow is attributable to the agent rather than scattered across recruiters' personal mailboxes. For the calendar capability this builds on, see giving your AI agent a managed calendar.
How does the agent find slots for the whole panel?
The key call is nylas calendar find-time with every panelist passed as a participant. The command intersects all of their working hours and returns slots that fit the entire group — the three-way intersection a recruiter would otherwise compute by hand. Pass each panelist's IANA timezone in the same order as the emails:
nylas calendar find-time \
--participants alice@company.com,bob@company.com,carol@company.com \
--timezones America/New_York,America/Chicago,Europe/London \
--duration 1h \
--days 10The output is a ranked list of up to 5 suggested times, each scored on how well it fits the group — a picker, not a JSON payload. The more panelists you add, the fewer slots survive the intersection, so widen --days for a large panel. The agent takes the top few options to present to the candidate.
How does the agent give the candidate options?
The candidate picks from a short list, not an open-ended "when are you free?" The agent emails the top options from the panel search and asks the candidate to reply with a choice. Sending from the agent account means the reply comes back to the coordinator's own inbox, where the agent reads it:
nylas email send \
--to candidate@example.com \
--subject "Interview scheduling — pick a time" \
--body "Here are three times that work for the panel:
1. Tue Jun 16, 10:00 AM ET
2. Wed Jun 17, 2:00 PM ET
3. Thu Jun 18, 11:00 AM ET
Reply with 1, 2, or 3 and I'll send the calendar invite."Offering a fixed list keeps the loop short and bounded: the candidate replies with a number, the agent maps it to a slot, and there's no free-text time to parse and misread. The agent reads the reply from its inbox with nylas email list --unread --json, the same inbound pattern used across the agent-account use cases.
How does the agent verify and book the panel?
Calendars change between the search and the candidate's reply, so the agent re-checks the chosen slot before booking. The nylas calendar availability check command confirms the whole panel is still free in that exact window, signaling the result through its exit code — 0 free, 2 busy, 1 error:
nylas calendar availability check "$NYLAS_GRANT_ID" \
--emails alice@company.com,bob@company.com,carol@company.com \
--start "2026-06-17T18:00:00Z" \
--end "2026-06-17T19:00:00Z" \
--jsonIf the panel is still free, the agent books the interview with nylas calendar events create, adding the candidate and every panelist as attendees so one RFC 5545 invite lands on all of their calendars. If the slot is no longer open, the agent falls back to the next option or re-runs the panel search:
nylas calendar events create "$NYLAS_GRANT_ID" \
--title "Interview: Backend Engineer" \
--start "2026-06-17T18:00:00Z" \
--end "2026-06-17T19:00:00Z" \
--participant candidate@example.com \
--participant alice@company.com \
--participant bob@company.com \
--participant carol@company.com \
--location "Google Meet" \
--jsonOne events create call invites the candidate and the full panel at once. The verify-before-book step is the same discipline as the booking guide, scaled to a multi-person panel — see building a meeting-booking assistant for the single-attendee version of this loop.
How do I keep the coordinator contained?
A coordinator emails candidates and books on a real calendar, so it should run inside the same guardrails as any agent. A candidate's reply is untrusted input — a malicious one could try to steer the agent into emailing someone it shouldn't. An outbound rule on the workspace blocks any unexpected recipient domain before the message reaches the send pipeline, so a prompt injection can't prompt its way past it:
nylas agent rule create \
--name "Block flagged coordinator outbound" \
--trigger outbound \
--condition recipient.domain,is,exfil.example \
--action blockPair the rule with a policy send cap so a loop bug can't blast candidates, and reconcile recipients against your candidate and panel lists in the agent's own code. The full trigger and policy reference is in Agent Rules and Policies, and the containment pattern is in Stop Your AI Agent From Going Rogue.
Next steps
- Give Your AI Agent a Managed Calendar — the availability, find-time, and event-booking capability behind this loop
- Build a Meeting-Booking Assistant Agent — the single-attendee version of the verify-then-book flow
- Check Calendar Availability from the CLI — free/busy and find-time across many participants in depth
- Build a Human-in-the-Loop Email Agent — let a recruiter confirm before an invite goes out
- Agent Rules and Policies — the outbound rules and send caps that contain the coordinator
- Full command reference — every
nylas calendarandnylas emailflag - Nylas v3 Calendar API documentation — the API surface behind these commands