AI coordinates schedules across candidates and interviewers, handles timezones, and sends prep materials. Recruiters stay informed without being the bottleneck.
Coordinating interviews across multiple interviewers, candidates, and timezones is a logistical nightmare. A single interview loop with four panelists can take 15-20 emails to schedule. During this time, top candidates may accept competing offers. Recruiters spend more time scheduling than sourcing, and every day of delay increases the risk of losing the candidate.
MultiMail's AI agent handles the entire interview scheduling workflow via email. It collects availability from interviewers and candidates, finds overlapping slots with timezone awareness, and sends confirmations with prep materials. Monitored oversight lets recruiters review the communications log while the AI handles the coordination autonomously.
When a candidate advances to the interview stage, the AI agent is triggered with the candidate's details, role, and required interviewer panel.
The agent emails interviewers to collect availability or queries their calendars directly. It also coordinates with the candidate via email to understand their scheduling preferences and timezone.
The AI cross-references all calendars to find overlapping availability, handling timezone conversions and buffer times between interviews automatically.
Once a time is confirmed, the agent sends detailed confirmations to all parties with the interview format, prep materials, and video conferencing links.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def schedule_interview(candidate: dict, panel: list):
"cm"># Get interviewer availability from calendar API
available_slots = find_overlapping_slots(
[get_calendar(p["email"]) for p in panel],
duration_minutes=60,
buffer_minutes=15
)
"cm"># Convert to candidate's timezone
candidate_tz = candidate.get("timezone", "America/New_York")
formatted_slots = [
format_time(slot, candidate_tz) for slot in available_slots[:3]
]
body = (
f"Hi {candidate[&"cm">#039;name']},\n\n"
f"We&"cm">#039;d love to schedule your interview for the "
f"{candidate[&"cm">#039;role']} position. Here are some available times:\n\n"
+ "\n".join(f"- {s}" for s in formatted_slots) +
f"\n\nAll times shown in {candidate_tz}. "
f"Please reply with your preferred option or suggest "
f"an alternative.\n\nLooking forward to speaking with you!"
)
requests.post(
f"{API}/send",
headers=HEADERS,
json={
"from": "[email protected]",
"to": candidate["email"],
"subject": f"Interview scheduling: {candidate[&"cm">#039;role']} at YourCompany",
"text_body": body
}
)Collect availability and propose interview times to the candidate.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def confirm_interview(candidate: dict, panel: list, slot: dict):
"cm"># Send candidate confirmation
candidate_body = (
f"Hi {candidate[&"cm">#039;name']},\n\n"
f"Your interview is confirmed!\n\n"
f"Role: {candidate[&"cm">#039;role']}\n"
f"Date/Time: {slot[&"cm">#039;formatted_time']}\n"
f"Format: {slot[&"cm">#039;format']}\n"
f"Video link: {slot[&"cm">#039;meeting_url']}\n\n"
f"You&"cm">#039;ll be meeting with:\n"
+ "\n".join(f"- {p[&"cm">#039;name']}, {p['title']}" for p in panel) +
f"\n\nPrep tips: {slot[&"cm">#039;prep_url']}"
)
requests.post(
f"{API}/send",
headers=HEADERS,
json={
"from": "[email protected]",
"to": candidate["email"],
"subject": f"Interview confirmed: {candidate[&"cm">#039;role']} - {slot['formatted_time']}",
"text_body": candidate_body
}
)
"cm"># Send interviewer briefings
for interviewer in panel:
send_interviewer_brief(interviewer, candidate, slot)Confirm the interview and send preparation materials to all participants.
"cm">// Using MultiMail MCP tools for interview scheduling
async function scheduleInterview(
candidate: Candidate,
panel: Interviewer[]
) {
const slots = findOverlappingSlots(panel, 60);
const candidateTz = candidate.timezone || "America/New_York";
"cm">// Propose times to candidate
await mcp.send_email({
to: candidate.email,
subject: `Interview scheduling: ${candidate.role} at YourCompany`,
text_body: [
`Hi ${candidate.name},`,
``,
`Available interview times:`,
...slots.slice(0, 3).map(s => ` - ${formatTime(s, candidateTz)}`),
``,
`All times in ${candidateTz}. Reply with your preference.`
].join("\n")
});
"cm">// Track in contacts
await mcp.add_contact({
email: candidate.email,
name: candidate.name,
metadata: {
role: candidate.role,
stage: "scheduling",
panel: panel.map(p => p.name).join(", ")
}
});
}Manage interview scheduling using MultiMail MCP tools.
The AI coordinates across all participants simultaneously instead of sequentially. What takes a recruiter 2-3 days of back-and-forth is resolved in a few hours.
No more timezone confusion when scheduling with remote candidates. The AI converts all times to each participant's local timezone automatically.
Fast, professional scheduling with clear confirmations and prep materials shows candidates you're organized and respect their time.
Recruiters spend time sourcing and evaluating candidates instead of playing calendar Tetris. The AI handles the logistics while recruiters focus on relationship building.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.