Every interview generates five emails — candidate confirmation, panel invites, prep materials, a day-before reminder, and the reschedule scramble when someone cancels. This playbook drives all of them from one tracking sheet with a Zapier flow that drafts each message for a coordinator's approval, so scheduling stops eating your recruiting week.
Workflow area: Automation · Tier: Core · Hands-on time: ~40 minutes
Interview comms are the perfect automation candidate: high volume, rigid structure, and painful when dropped — a candidate who never got the video link, a panelist who got no prep brief, are self-inflicted process wounds that cost real candidates. The design mirrors pb-36: the machine watches the sheet and drafts every message the moment a row changes; a human approves sends. Candidates are judging your company through these emails, which is exactly why they should be consistently excellent and human-checked.
Build the tracking sheet — the single source of truth. One row per interview in Google Sheets: candidate_name, candidate_email, role, stage (e.g. screen/panel/final), interview_datetime, duration, format (video/in-person + link or address), panelists (names), panelist_emails, status, comms_log. The status column drives everything: scheduled → confirmed_sent → reminded → done, plus rescheduled and cancelled.
Draft the message set once, in ChatGPT, before wiring. Five templates, one pass:
Draft our interview communication set. Company: [NAME, ONE-LINE
DESCRIPTION]. Tone: warm, organized, respectful of everyone's
time — we want candidates to feel expected, not processed.
Use {{placeholders}} for: candidate_name, role, stage,
interview_datetime (with timezone), duration, format_details,
panelist_names, recruiter_name.
1. CANDIDATE CONFIRMATION: what to expect at this stage, who
they'll meet (names + roles), format and joining details, what
to prepare (nothing surprising), who to contact for changes.
Under 150 words.
2. PANEL INVITE NOTE: goes with the calendar invite — role,
stage, what this round assesses, link to the question bank
section they own [SEE PB-30], and the rule: score
independently before the debrief. Under 120 words.
3. CANDIDATE DAY-BEFORE REMINDER: brief, warm, joining details
again, "we're looking forward to meeting you". Under 80 words.
4. RESCHEDULE (CANDIDATE-INITIATED): gracious, zero guilt, next
steps to rebook. Under 80 words.
5. RESCHEDULE (OUR SIDE): apologetic without groveling, concrete
new options, acknowledges their time. Under 90 words.
Rules: no jargon ("loop", "onsite" unexplained), no false
urgency, nothing that promises an outcome or timeline for a
decision unless placeholdered as {{decision_timeline}}.
Edit until they sound like your best coordinator on a good day. These frozen templates go into the Zap — freezing them (rather than generating fresh per candidate) keeps quality consistent and review fast; the AI step personalizes only the variable details.
Wire the Zaps — two small ones beat one giant one.
Zap A — new/changed interview: Trigger: Google Sheets New or Updated Row where status = scheduled. Action: ChatGPT step — "Fill these two templates with this row's details; flag CONFLICT if any field is missing or the datetime is in the past" (paste templates 1–2). Action: Gmail — Create Draft to candidate; second draft to panelists. Action: update status = confirmed_sent, append to comms_log.
Zap B — day-before reminder: Trigger: Schedule, daily 8 a.m. Action: Sheets lookup — rows where interview_datetime is tomorrow and status = confirmed_sent. Action: fill template 3 → Create Draft. Action: status = reminded.
Reschedules stay semi-manual by design: change the row, set status = scheduled again, and Zap A re-drafts — you pick reschedule template 4 or 5 in the draft pass.
Test with a fake candidate. Add a row for "Test Candidate" interviewing tomorrow with you and a colleague as panel. Run both Zaps. Verify: names and times correct including timezone, joining link present, panel note references the right stage, drafts created (not sent), the status column advanced, and a row with a missing field produced a CONFLICT flag rather than a confident blank. A good confirmation draft reads specific, not templated — check candidate name against email address match especially; mismatched merge fields are this flow's classic failure.
Run the daily approval pass. Ten minutes each morning: open the drafts, check each against the sheet and calendar (did the panelist accept? did the candidate already email a change?), personalize one line where you know something ("Saw your question about the team — Priya will cover that"), send, done. The pass is also your error net: any draft that looks wrong means a sheet row is wrong — fix the row, not just the draft.
offer_stage comms and generate templates 6–7 (offer call follow-up, gentle check-in) — same flow, extended pipeline.format column value switch.comms_log.Candidate names and emails are personal data — keep the tracking sheet access-restricted, run AI steps through your organization's account with training disabled, and keep evaluations, scores, salary discussions, and background-check details OUT of this sheet entirely. The scheduling flow should be boring even if leaked.
Add a source_of_delay note whenever an interview reschedules. After a month the pattern is usually one panelist's calendar or one stage's slot logic — fix that upstream and the automation gets 30% fewer reschedule drafts to write.