by RejectMail (LX AI)

Last updated: 2026-09-16

What RejectMail is for

RejectMail drafts polite, professional rejection emails for screening or final-stage candidates — tone-matched notes that stay empathetic without burning bridges.

Decision-support only — confirm before you publish or act.

How I built the rejection‑email flow

Input capture

When a user opens the RejectMail dashboard they see a simple form with three fields: candidate name, role or opportunity title, and stage selector (application, proposal, intro). The form validates that the name field contains at least two characters and that the role field is not empty. I store the entered values temporarily in the browser’s session storage so the user can navigate away and return without losing data.

Prompt assembly

Once the user clicks “Generate draft”, I combine the supplied data with a stage‑specific template stored as a JSON object. Each template contains placeholders for the candidate name, role, and a conditional slot for the keep‑the‑door‑open line. I also inject the tone selector value (warm or neutral) which determines which phrasing library is consulted. The final prompt is a plain‑text string that looks like: “Write a short rejection note for {name} applying for {role} at the {stage} stage, using a {tone} tone, and include a polite line that leaves the door open for future contact.”

Model call and safety check

The assembled prompt is sent to the hosted LLM endpoint via an HTTPS POST with a JSON body that includes the prompt, temperature set to 0.3, and a max token limit of 150. The response is streamed back and concatenated into a single string. Before showing the draft to the user I run a deterministic profanity filter and a length check (must be between 40 and 180 characters). If either check fails I return a generic safe fallback and log the event for review.

Stage‑aware copy details

Application rejections

For candidates who have submitted a job application but have not yet been interviewed, the copy focuses on thanking them for their interest, noting that many strong applications were received, and expressing that their profile will be kept in the talent pool for future openings that match their skill set.

Proposal rejections

When declining a business proposal or partnership request, the tone emphasizes appreciation for the effort put into the proposal, outlines that the current strategic direction does not allow for the proposed collaboration, and invites the proposer to stay in touch for areas where interests may converge later.

Intro rejections

For introductory messages where a third party has connected two parties and one side wishes to decline further conversation, the copy acknowledges the introducer, states that the recipient’s current priorities prevent engagement, and thanks the introducer for the gesture while suggesting they may be helpful for other topics.

Tone options and how they are applied

Warm tone

Warm language uses contractions, friendly adjectives, and a slightly more personal cadence. Examples include “I’m glad you reached out”, “Thanks a lot”, and “I hope we can stay in touch”. The warm setting adds a sentence like “I enjoyed learning about your background” when the stage is application, or “Your proposal showed thoughtful research” for proposal rejections.

Neutral tone

Neutral language avoids contractions, keeps sentences declarative, and sticks to factual statements. Phrases such as “Thank you for your application”, “We have completed our review”, and “We will keep your information on file” are typical. The neutral setting omits any subjective praise and focuses solely on the outcome and next steps.

Keeping the door open – phrasing library

Every draft includes a pre‑selected line that signals openness to future interaction without promising anything specific. I curated a small library of ten variations and rotate them based on the stage and tone to avoid repetition.

The library is stored as a plain array in the front‑end code. When the tone is warm I select from the first three items; when neutral I select from the last two. The middle four are used interchangeably.

Decision‑support workflow – review before sending

RejectMail never sends an email automatically. After the draft appears on screen the user must explicitly approve it. The workflow is designed to give a final safety gate where the user can edit, copy, or discard the text.

  1. Read the generated draft in the preview pane.
  2. Optionally click inside the pane to adjust wording or add a personal note.
  3. Press the “Confirm and copy” button to place the final text on the clipboard.
  4. Paste the copied text into your email client or ATS and send it manually.
  5. If the draft does not fit, press “Discard and retry” to generate a new version with the same inputs.

I log each confirmation action (timestamp, stage, tone) for internal analytics but never store the actual email content.

What this is NOT

I want to be clear about the limits of the tool so you can set realistic expectations.

Security and risk alignment

OWASP LLM Top 10 considerations

I reviewed the OWASP LLM Top 10 document to identify relevant risks for a text‑generation micro‑SaaS. The most pertinent items are prompt injection, data leakage, and insecure output handling. To mitigate prompt injection I sanitize user inputs by escaping angle brackets and limiting length before they enter the prompt template. Data leakage is prevented by never storing the raw candidate name or role after the session ends; only anonymized usage counts are kept in an aggregated database. Insecure output handling is addressed by the deterministic profanity filter and length check described earlier, plus by escaping any HTML characters before rendering the draft in the browser.

For reference see: OWASP LLM Top 10

NIST AI Risk Management Framework

The NIST AI RMF provides a structured way to govern, map, measure, and manage AI risks. I mapped each of the four functions to concrete actions in RejectMail:

RMF Function RejectMail action
Govern Documented model card, versioned prompt templates, and a clear data‑retention policy.
Map Identified stakeholders (HR recruiters, hiring managers) and defined the context of use (candidate communication).
Measure Tracked generation latency, filter trigger rate, and user confirmation rate via internal logs.
Manage Implemented input sanitization, output filtering, and a manual approval step before any external communication.

For reference see: NIST AI RMF

References

Frequently asked questions

What is RejectMail?

RejectMail drafts polite, stage-aware rejection emails for applications, proposals, and intros.

Which stages does RejectMail cover?

Application, proposal, and intro rejections, with copy matched to the stage.

Can I choose the tone?

Yes — warm or neutral; both keep the door open for later re-engagement.

Is there a free tier?

Free includes 5 emails per month; Pro is $15/mo for more.

Does it burn the relationship?

No — every draft includes a keep-the-door-open line so you can re-engage later.

What RejectMail actually outputs

RejectMail writes polite rejection emails for every stage of a pipeline — application, proposal, or intro. Copy is stage-aware, warm or neutral in tone, keeps the door open, and stays short and respectful.

References

Want to try the product? RejectMail

Generated 2026-09-17 · primary sources only · no fabricated traffic metrics