2026-09-26 · MailPilot team
If you run an e-commerce support inbox, you know the shape of the day: two hundred emails before lunch, and eighty percent of them are the same five things. Someone asks where their order is. Someone got a cracked screen and wants a refund now. Someone ordered the wrong size. Someone wants a wholesale price. And three emails are crypto spam.
We built MailPilot around that reality. Not as an auto-responder that talks to your customers unsupervised — as a drafting-and-routing layer that does the first pass so a human can do the last pass.
Every incoming message is run through a transparent rule engine that looks for signal words. The engine does not call a hidden model; it checks a short list of tokens and assigns exactly one label.
| Category | Signal example | Draft placeholder |
|---|---|---|
| Inquiry | “When will my order ship?” | Hi {{customer_name}}, your order #{{order_id}} is scheduled to ship on {{ship_date}}. You’ll get a tracking link when the carrier scans it. |
| Complaint | “The screen arrived cracked.” | Hi {{customer_name}}, I’m sorry to hear about the damage. Please reply with a photo of the issue and we’ll start a replacement. |
| Return / exchange | “I need a size M instead of L.” | Hi {{customer_name}}, let’s swap that item. Reply with the return authorization number we’ll generate for you. |
| Partnership | “Do you offer wholesale pricing?” | Hi {{customer_name}}, I’ve attached our wholesale sheet. Let me know if you’d like to set up a call. |
| Spam | “You’ve won $1 000 000!” | (No draft – message moved to spam folder) |
Rule sets are easy to audit. You can see exactly which word triggered the label. If a new phrase appears, you add it to the list and the change is visible in the log. This keeps the system predictable and lets you explain decisions to teammates or auditors.
We compute a sentiment value from −1 to +1. Negative values indicate frustration, positive values indicate cheer. The score comes from a lexicon that weights words like “happy”, “thank you”, “angry”, “disappointed”. Each token adds or subtracts a small amount; the sum is clamped to the range.
Urgency runs from 0 to 10. Time‑sensitive tokens such as “now”, “asap”, “today”, “immediately” add 2 points each. Refund or chargeback language adds 3 points. If the message mentions a legal threat, we add 4 points. The total is capped at 10.
When urgency reaches 7 or higher, or sentiment drops below −0.4, or the category is Complaint, the email is flagged for human review. An internal note is attached that lists the exact signals that pushed the score over the line. Everything is stored in the audit log, so you can replay why a message was escalated.
Our scoring method follows the suggestions in the AI Risk Management Framework from NIST (https://www.nist.gov/itl/ai-risk-management-framework) and the LLM Top 10 from OWASP (https://owasp.org/www-project-top-10-for-large-language-model-applications). These sources help us keep the model transparent and the risk low.
If the email does not meet any threshold, we generate a draft using the category‑specific template. The draft contains only variables and factual placeholders; we never insert invented details. The draft sits in the queue where a support agent can review, edit, and send.
The drafting engine checks each sentence against a list of forbidden patterns. If a pattern matches, the engine stops output and returns a placeholder that asks the agent to verify the fact. For example, if the template tries to say “Your refund will be processed in 2 days”, the engine sees the unverified timeline flag and replaces the sentence with “Please verify the refund timeline before sending.”
Public failures of auto‑reply tools usually come from over‑promising. By blocking those phrases at the source we keep the agent in the loop for any statement that could affect a customer’s rights or expectations. The agent can still add a guarantee after checking the order system, but the tool will never insert it on its own.
MailPilot never sends a message without a human pressing send. It is a drafting aid, not a bot that talks to customers on its own.
The tool reduces repetitive typing, but it does not promise that every draft will be flawless. Agents still need to read and adjust.
Decisions that require policy interpretation, goodwill gestures, or legal nuance stay with the support team. The tool only handles the first pass of categorization and drafting.
All scoring, rule matches, and template choices are logged. You can export the log and see exactly why a message was routed a certain way.
Before MailPilot, a team of three agents spent roughly 2.5 hours each morning reading the same five question types, copying template text, and typing personal notes. That work was repetitive and prone to fatigue.
With the drafting layer in place, the same team now spends about 45 minutes on triage. The remaining two hours are used for complex cases, quality checks, and proactive outreach.
Because the templates are shared, the language used for order status, return instructions, and wholesale inquiries stays uniform across shifts. Customers notice the steady tone.
The free tier allows up to 20 drafted replies per day. No account is needed. If you need more volume, the paid plans start at 150 drafts per day and include API access for helpdesk integration.
I keep a written checklist next to every release that touches this topic. The list is boring on purpose: name the owner, name the evidence artifact, and name the rollback. If a step cannot produce a file, a ticket, or a log line, it is not a step — it is a wish.
| Signal | What to record | Stop-ship? |
|---|---|---|
| Unexpected write or send | Tool name, args, identity | Yes until gated |
| Missing confirmation on destructive action | Call path and bypass | Yes |
| Untrusted text treated as instruction | Source surface and resulting action | Yes for agent reach |
| Scanner clean, judgment open | Deferred items + owner | Only if core path safe |
mailpilot helps with the measurable first pass. Architecture choices, legal sign-off, and customer-facing claims still need a human owner. Treat every checklist row as decision support, not a certificate.
When a prospect asks whether the product "covers everything," I answer with the boundary: automated checks catch known patterns; novel chains and policy judgment still need review. That honesty keeps support load down and keeps the blog aligned with what the product actually does.
If you need a second opinion, pair this write-up with the references below and with your own staging reproduction. Do not skip the reproduction step just because a model wrote a confident summary.
Every incoming email is classified into exactly one of five types by a transparent signal-word rule engine — never a hidden model:
Two numbers decide what happens next. Sentiment runs from −1 (furious) to +1 (delighted). Urgency runs 0–10: time words like "now" and "asap" add weight, refund and chargeback language adds more. When urgency hits 7, or sentiment drops below −0.4, or the category is a complaint, the email is escalated to a human with an internal note explaining why. Everything is auditable — you can see exactly which signal words fired.
Auto-reply tooling fails publicly when it over-promises. MailPilot's drafting rules forbid guarantees: no promised refund timelines it cannot verify, no "100% satisfaction", no fabricated order statuses. Drafts use {{customer_name}} -style variables and stop where verification is needed.
Not your helpdesk — the first pass your team does manually today. Teams at 200+ emails/day typically spend 2–4 hours just triaging and re-typing the same answers. That is the layer MailPilot automates; judgment calls still route to people.
The free interactive demo runs the real classification and scoring engine on any email you paste — no signup. The free tier drafts 20 replies a day.