Respectful Rejections That Protect Your Employer Brand

AI drafts personalized rejection emails with genuine feedback. Recruiters verify EEOC compliance before sending.


Why this matters

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.


How MultiMail solves this

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.

1

Receive Rejection 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.

2

Draft Personalized Rejection

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.

3

Recruiter Reviews for Compliance

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.

4

Send With Care

Approved rejections are sent promptly. Timely, respectful rejections maintain candidate relationships for future openings and protect employer brand.


Implementation

Send Personalized Rejection
python
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.

Batch Process Rejections
python
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.

MCP Tool Integration
typescript
"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.


What you get

Protect Employer Brand

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.

Personalized Beyond Form Letters

AI references specific interview strengths and contributions, making each rejection feel personal rather than mass-generated.

EEOC Compliance

Recruiter review via gated_send ensures rejection language is job-related and non-discriminatory, protecting the organization from employment discrimination claims.

Future Talent Pipeline

Tag rejected candidates who were strong but not the right fit for future role matching, building a warm talent pipeline.


Recommended oversight mode

Recommended
gated_send
Rejection emails carry EEOC compliance requirements. Any language that could be interpreted as discriminatory — even unintentionally — creates legal risk. Recruiters must verify that feedback is job-related and the messaging is appropriate before candidates receive the decision.

Common questions

Should rejection emails include specific feedback?
Include general strengths observed during the interview process, but avoid specific reasons for rejection that could be challenged. Phrases like "your experience with X was impressive" are safe. Avoid "you lacked Y" which could be interpreted as discriminatory.
How quickly should rejections go out?
Within 1-2 business days of the decision. Candidates who invested time in interviews deserve a prompt response. Delays signal disrespect and damage employer brand. AI drafting makes prompt delivery feasible even at high volume.
Why not use autonomous mode for rejections?
Employment communications carry legal risk. EEOC regulations require that rejection language is job-related and non-discriminatory. A recruiter must verify every rejection email before it reaches the candidate, even if the content is largely templated.
How do I track candidates for future opportunities?
Tag rejected candidates with their skills, interview strengths, and suitability for future roles using add_contact. When new positions open, search your tagged candidate pool before posting externally.

Explore more use cases

The only agent email with a verifiable sender

Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.