AI drafts personalized rejection emails with genuine feedback. Recruiters verify EEOC compliance before sending.
Most companies ghost rejected candidates, damaging employer brand and reducing future applicant quality. Writing thoughtful, personalized rejections for every candidate is time-consuming. When rejections are sent, they're often cold form letters that leave candidates feeling disrespected despite their investment in the process.
MultiMail's AI agent drafts respectful, personalized rejection emails that acknowledge each candidate's specific strengths and interview contributions. With gated_send oversight, recruiters verify the language is EEOC-compliant and the feedback is appropriate before any candidate receives the decision.
When the hiring team decides not to move forward with a candidate, the AI agent receives the decision along with interview notes and feedback.
The AI composes a rejection that acknowledges the candidate's specific strengths, thanks them for their time investment, and when appropriate, encourages them to apply for future roles that might be a better fit.
With gated_send, the recruiter reviews the rejection for EEOC compliance — ensuring no language could be interpreted as discriminatory and any feedback provided is job-related.
Approved rejections are sent promptly. Timely, respectful rejections maintain candidate relationships for future openings and protect employer brand.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def send_rejection(candidate: dict, role: dict, feedback: dict):
body = (
f"Dear {candidate[&"cm">#039;name']},\n\n"
f"Thank you for your interest in the {role[&"cm">#039;title']} position "
f"at {role[&"cm">#039;company']} and the time you invested in our "
f"interview process.\n\n"
f"After careful consideration, we&"cm">#039;ve decided to move forward "
f"with another candidate whose experience more closely aligns "
f"with our current needs.\n\n"
)
if feedback.get("strengths"):
body += (
f"We were genuinely impressed by {feedback[&"cm">#039;strengths']}. "
)
if feedback.get("encourage_future"):
body += (
f"We&"cm">#039;d welcome your application for future roles that "
f"may be a stronger match for your background.\n\n"
)
body += (
f"We wish you the best in your career search.\n\n"
f"Regards,\n{role[&"cm">#039;recruiter_name']}"
)
return requests.post(
f"{API}/send",
headers=HEADERS,
json={
"from": f"recruiting@{role[&"cm">#039;domain']}",
"to": candidate["email"],
"subject": f"Update on your application for {role[&"cm">#039;title']}",
"text_body": body
}
).json()Draft and send a rejection email that acknowledges the candidate's strengths and interview effort.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def process_rejections(candidates: list, role: dict):
for candidate in candidates:
feedback = get_interview_feedback(candidate["id"])
send_rejection(candidate, role, feedback)
"cm"># Tag candidate for future reference
requests.post(
f"{API}/contacts",
headers=HEADERS,
json={
"email": candidate["email"],
"name": candidate["name"],
"tags": ["candidate", "rejected", f"role-{role[&"cm">#039;id']}",
"consider-for-future" if feedback.get("encourage_future") else "declined"]
}
)
print(f"Processed {len(candidates)} rejections for {role[&"cm">#039;title']}")Send rejection emails to all candidates who were not selected after a hiring round.
"cm">// Candidate rejection via MCP
"cm">// 1. Send personalized rejection
await mcp.send_email({
from: "[email protected]",
to: candidate.email,
subject: `Update on your application for ${role.title}`,
text_body: `Dear ${candidate.name}, thank you for your interest in the ${role.title} role. After careful consideration, we've decided to move forward with another candidate. We were impressed by your ${feedback.strengths}...`
});
"cm">// 2. Tag for future consideration
await mcp.add_contact({
email: candidate.email,
name: candidate.name,
tags: ["candidate", "rejected", "consider-for-future"]
});Use MultiMail MCP tools for candidate rejection workflows.
Timely, respectful rejections leave candidates with a positive impression of your company even when the answer is no. They tell friends, leave Glassdoor reviews, and may apply again.
AI references specific interview strengths and contributions, making each rejection feel personal rather than mass-generated.
Recruiter review via gated_send ensures rejection language is job-related and non-discriminatory, protecting the organization from employment discrimination claims.
Tag rejected candidates who were strong but not the right fit for future role matching, building a warm talent pipeline.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.