DashboardSign inStart your trial

Triage Inbound Email

Classify inbound mail with AI, draft a reply, and route it to a human before anything sends, using sender authentication as a trust gate.

Turn a shared inbox into a triaged queue. Every email that arrives at the workflow’s address is classified, a reply is drafted, and a person approves or edits it before it goes out, with unverified senders held for a closer look.

Node chain: Inbound Email trigger → AI (classify, JSON) → Condition (on category) → Human Review (approve/edit the reply) → Send Email.

#What you need

  • Nothing to connect. The Inbound Email trigger provisions its own address, and the Send Email node sends without a third-party email service.
  • To reply from your own branded domain to people outside your workspace, verify a sender domain first (Professional and higher). You don’t need one to reply to authenticated senders; see Cost and sending rules below.

#Build it

#1. Add the Inbound Email trigger

Drop an Inbound Email trigger on the canvas. There’s nothing to configure; the address is assigned when you publish. Each message arrives as trigger data: {{trigger.from}}, {{trigger.subject}}, {{trigger.textBody}}, and the {{trigger.authenticated}} trust flag.

#2. Classify with an AI node

Add an AI node. Set the output mode to JSON so the next steps can branch on specific fields, and give it a schema with three fields: category, urgency, and suggestedReply.

A workable prompt:

You are triaging an inbound support email.

From: {{trigger.from}}
Subject: {{trigger.subject}}
Body: {{trigger.textBody}}

Classify it and draft a reply. Return JSON:
- category: one of "support", "sales", "billing", "spam"
- urgency: one of "low", "normal", "high"
- suggestedReply: a complete, ready-to-send reply in our voice

Leave Workspace context on (the default) so the draft matches how your company talks without you re-explaining it in the prompt. A Haiku- or GPT-4.1-class model handles classification cheaply; reach for a bigger model only if the replies need heavier reasoning.

#3. Branch on category with a Condition

Add a Condition node reading {{ai.category}}. Route spam to a dead end (or a Data node that logs it), and send everything else on to review. You can add branches per category if support, sales, and billing should go to different reviewers or reply from different addresses.

#4. Gate unverified senders

From headers are trivially forged, so treat {{trigger.authenticated}} as your trust signal. Add a Condition (or a branch on the one above) on {{trigger.authenticated}}:

  • Authenticated mail is safe to reply to; continue to review.
  • Unauthenticated mail still started the run, but don’t auto-act on it. Route it to the same Human Review step with a note, or drop it, before anything sends. Never let an unverified sender drive an automatic reply.

#5. Review the draft

Add a Human Review node, type Approve / Reject (the default). The reviewer sees the classification and the drafted reply as context and can Edit the reply before approving, changing wording, fixing a fact, softening the tone. Approve sends the edited version; reject stops the run and records why.

#6. Send the reply

Add a Send Email node after the review. Set To to {{trigger.from}}, the Subject to Re: {{trigger.subject}}, and the Body to the approved reply ({{ai.suggestedReply}}, or the edited value the review passes downstream).

Because the run was started by an authenticated inbound email , a Send Email node may reply to that sender even on the default @rills.ai address (no verified domain required), because Rills trusts the reply target. To reply from your own domain instead, verify it and set the From field.

Publish the workflow, then share the trigger’s assigned address (shown in its config after publish) as the inbox people or forwarding rules send to.

#Make it learn

Start the Human Review node in Always ask so every drafted reply reaches you. Read the drafts, edit the ones that miss, reject the bad ones. Each decision feeds confidence scoring , which learns what a good reply looks like to you per category.

Once you’ve worked through a few dozen and the drafts are consistently landing, switch the node to Confidence gated. High-confidence replies to authenticated senders start auto-approving; anything below your bar, or anything that trips a validation, anomaly, or containment gate, still comes to you. Keep the unverified-sender branch in Always ask; that’s exactly the case you never want auto-approving. Rills also spot-checks about 1 in 10 auto-approvals so you keep eyes on the autonomous path.

#Cost

  • Inbound Email trigger and the Condition nodes: free.
  • AI classification: bills AI Credits by token cost, a small model on a short email is around 1 credit.
  • Human Review: free, always. The workflow pauses at no cost while it waits.
  • Send Email: 1 Workflow Credit per send.

So a triaged, human-approved reply costs roughly one AI Credit plus one Workflow Credit, and every rejection costs nothing.

  • Triggers : the Inbound Email trigger and sender authentication in full
  • Email : the Send Email node, sending rules, and verified domains
  • AI Nodes : JSON output mode and workspace context
  • Modes & Confidence : moving a step from Always ask to Confidence gated