AI Email Triage & Inbox Classifier with Drafts avatar

AI Email Triage & Inbox Classifier with Drafts

Pricing

from $5.00 / 1,000 email triageds

Go to Apify Store
AI Email Triage & Inbox Classifier with Drafts

AI Email Triage & Inbox Classifier with Drafts

Send a batch of emails and get each one classified with priority and Reply? yes/no, a one-line summary of what is asked, and drafts for greetings. Bulk mail filtered free. No mailbox login, never sends. Free preview, then pay per AI-classified email.

Pricing

from $5.00 / 1,000 email triageds

Rating

0.0

(0)

Developer

Turgay NANTA

Turgay NANTA

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Email Triage AI: Classify Your Inbox, Find Emails That Need a Reply, Draft Simple Replies

A busy inbox hides the three emails that matter between newsletters, promotions, automated notices and CC threads. Reading everything to find them costs an hour a day.

Send a batch of emails. The Actor sorts them for you: every email gets a category, a priority and a clear "Reply? Yes/No"; the ones waiting for your answer get a one-sentence summary of what is expected; greetings and invitations get a short draft reply in the same tone; and you get a daily digest and a visual report grouped by company and person.

  • No mailbox login. The Actor never connects to your mailbox and never asks for a password, IMAP or OAuth access. You pass the emails in; it returns a triage table.
  • Never sends anything. Drafts are suggestions you copy. Business-critical emails never get a draft, because you should answer them yourself.
  • Bulk mail filtered for free. Newsletters and promotions with a List-Unsubscribe header or clear unsubscribe and promo wording are sorted by rules, without the AI and without a charge.
  • Business emails are protected. Any email that mentions an invoice, quote, payment, contract, order, deadline and similar words always goes to the AI, never to the junk rules.
  • Knows when you are only CC'd, when an email comes from a no-reply address, when you are addressed by name, and which message is the newest in a thread.
  • Free preview, then $0.005 per email classified by the AI. Emails sorted by rules are free.

At a glance

InputA list of emails as JSON: from, subject, body, optional date, to, cc, list_unsubscribe
OutputTriage table (dataset), DRAFTS, DAILY_REPORT, TRIAGE_REPORT.html in the key-value store
CategoriesBusiness-Critical, Personal, Social, Promotional, Informational, General
PriorityHigh, Medium, Low, plus Reply? Yes/No
DraftsFor Social emails only (greetings, congratulations, invitations)
Mailbox accessNone. You supply the emails; the Actor does not log in anywhere and does not send
LanguagesSummaries and drafts in English, Turkish, German, Spanish or French
Pricing$0.005 per email classified by the AI; rule-filtered emails and the preview are free
Runs onApify Console, API, schedules, n8n, Make, Zapier, AI agents via MCP

Quick start

  1. Click Start with the default input. Three sample emails are loaded and you get a free preview: 3 emails, 1 that the rules can sort without the AI, 2 that need the AI. Nothing is charged.
  2. Tick Process (incurs charges) and start again. The two AI-classified samples cost 2 x $0.005 plus the $0.0001 start fee, $0.0101 in total.
  3. Replace the samples with your own emails (see Input). Add your email address and your name to get the CC and "addressed to you" checks.
  4. Open the Dataset tab for the triage table, and the Key-value store tab for TRIAGE_REPORT.html, DRAFTS and DAILY_REPORT.

What the triage table looks like

CompanyPersonSubjectCategoryPriorityReply?AddressedDraftConfidenceNote
Acme-corp(generic)Contract renewal, urgent decision neededBusiness-CriticalHighYes--HighApproval of renewal terms requested by Friday
Gmail(generic)Lunch next week?SocialMediumYes-YesHighInvitation from a friend
Shopnow(generic)48-hour FLASH SALE, 50% off everything!PromotionalLowNo--HighDeterministic pre-filter (high certainty)

This is the format for the three sample emails. The promotional row comes from the free rules; the other two rows come from the AI, so their wording, and sometimes the category of a borderline email, can differ in your run. Empty values are shown as a dash.


Your mailbox and your data

This is the first question most people ask, so here is exactly what the code does.

  • No credentials. There is no login, IMAP, POP3, Gmail or Outlook connection in this Actor. It cannot read your mailbox on its own.
  • You decide what goes in. Only the emails you put in the emails input are processed.
  • What leaves Apify. Emails that the free rules cannot sort are sent to Anthropic's API (a Claude model) for classification: sender, subject and the first 600 characters of the body. Emails sorted by the rules are never sent to the AI.
  • Where results live. The table, drafts and reports are stored in your own Apify storage for the run.
  • Nothing is sent to your contacts. The Actor has no sending function. Drafts are text for you to copy.

How to get your emails into the Actor without giving it your password: use the email step of your automation tool. The Gmail, Outlook or IMAP nodes in n8n, Make or Zapier read your mailbox with the credentials you store in that tool, and you map from, subject, body (and optionally to, cc, date) into this Actor's input. Your credentials stay in your automation tool. You can also export emails from your mail client and convert them to the JSON format below; the Actor does not read .eml or .mbox files directly.


Why people use it

  1. The reply list is short. Out of a large batch you see which emails wait for your answer, each with one sentence on what is expected.
  2. Bulk mail costs nothing. The rules sort clear newsletters and promotions before any AI call, and only AI-classified emails are charged.
  3. Business emails are never thrown away. A long list of business words (invoice, quote, payment, contract, order, delivery, deadline, approval, signature and their Turkish equivalents) blocks the junk rules.
  4. Context rules on top of the AI. CC-only emails are marked FYI; no-reply senders cannot be answered, so they are marked "action required" if they ask you to verify, pay or sign, or informational otherwise; a real person writing your name is raised to High.
  5. Threads are collapsed. Several emails with the same subject (after removing Re:, Fwd: and similar prefixes) show the newest one as active and mark older ones as duplicates.
  6. A readable report. TRIAGE_REPORT.html groups emails by company and person, shows totals, and ends with a summary of every email waiting for a reply.

Inbox filters vs. this Actor

Mail client rulesThis Actor
Needs rules written by youYesNo
Understands "is a reply expected?"NoYes
One-sentence summary of what is askedNoYes, for reply-needed emails
Draft replyNoFor greetings and invitations
CC, no-reply and thread handlingPartlyBuilt in
Access to your mailboxFullNone

Use cases

Founders and small business owners

Run yesterday's emails every morning and read only the Reply = Yes rows and the summary at the bottom of the HTML report.

Executive and virtual assistants

Triage a manager's inbox export, hand over the reply list with summaries, and send the social drafts after a quick check.

Sales and account managers

Surface quotes, orders and contract emails from customers first, grouped by company, so no deal-related email waits.

Support and shared inbox teams

Separate automated notices and bulk mail from customer emails before a person starts reading. Action-required notices (verification, payment, account issues) are marked so they are not missed.

Freelancers and consultants

Catch client emails that address you by name and keep newsletters out of the way.

Automation builders

Add a triage step to an n8n, Make or Zapier flow: read new emails, run the Actor, send High priority rows to Slack and write the rest to a sheet.


How it works

  1. Normalise. Each email is reduced to sender, subject, body, date, To, Cc and List-Unsubscribe. Emails with an empty body are skipped. A plain string is also accepted as a body.
  2. Preview (free). The Actor counts emails and how many the rules can sort, stores PREVIEW, and stops here if Process is off.
  3. Free rules. An email without business words is sorted by rules when it has a List-Unsubscribe header (Promotional or Informational), or promo words plus unsubscribe wording (Promotional), or unsubscribe wording alone (Informational).
  4. AI classification. The rest go to a Claude model in groups of 10. The model returns category, reply needed, a short reason, a one-sentence summary for reply-needed emails, and a draft for Social emails only. If a response is cut off, the group is split and retried.
  5. Adjustments. CC-only emails lose the reply flag and drop from High to Medium; a real sender using your name raises the email to Business-Critical and High; no-reply senders lose the reply flag and are marked action required or informational; thread rules mark older messages as duplicates.
  6. Output. The table is grouped by company (companies with the most urgent email first), then sorted by priority and person. Drafts, the daily digest and the HTML report go to the key-value store.
  7. Charge. Only emails the AI actually classified are charged. Emails whose AI step failed are shown with Low confidence and not charged.

Input

FieldTypeDefaultDescription
emailsarray3 sample emailsEmails to triage. Each item: from, subject, body, and optionally date, to, cc, list_unsubscribe.
kullanici_isimlerilistemptyYour first name, last name or nickname (3+ letters) for "addressed to you" detection.
kullanici_epostastringemptyYour email address, used to tell To from Cc.
languageselectEnglishLanguage of reasons, summaries and drafts: English, Türkçe, Deutsch, Español, Français.
modelselectclaude-haiku-4-5-20251001The fast default, or claude-sonnet-4-6 for more consistent results. The price per email is the same.
processbooleanfalseOff: free preview. On: classify and charge per AI-classified email.

Example

{
"emails": [
{
"from": "Maria Lopez <maria@northwind.com>",
"to": "you@yourcompany.com",
"subject": "Re: Q4 order confirmation",
"body": "Hi Alex, can you confirm the delivery date for PO 4471 by Thursday?",
"date": "2026-09-28T08:12:00Z"
},
{
"from": "Newsletter <news@industryweekly.com>",
"to": "you@yourcompany.com",
"subject": "This week in logistics",
"body": "Top stories ... Unsubscribe here.",
"list_unsubscribe": "<mailto:unsubscribe@industryweekly.com>"
}
],
"kullanici_isimleri": ["Alex"],
"kullanici_eposta": "you@yourcompany.com",
"language": "English",
"process": true
}

The first email is addressed to Alex by name, from a real person, with business words: it will be Business-Critical and High. The second has a List-Unsubscribe header and no business words: it is sorted by the free rules as Informational and not charged.


Output

Dataset: the triage table

ColumnContent
CompanyFrom the sender's display name or domain
PersonSender's name, or (generic) for addresses without a personal name
SubjectSubject, or the start of the body
CategoryBusiness-Critical, Personal, Social, Promotional, Informational, General
PriorityHigh, Medium, Low
Reply?Yes when your answer is expected
AddressedYes when a real person used your name
SummaryOne sentence on what is expected, for reply-needed emails
DraftYes when a draft is in DRAFTS
ConfidenceHigh, or Low when the AI step failed or the category was uncertain
NoteThe reason, for example CC only, duplicate in a thread, automated notice, or rule-based sorting

Key-value store

KeyContent
TRIAGE_REPORT.htmlVisual report: totals (reviewed, awaiting reply, action required, deprioritized), emails grouped by company and person, and a summary of every reply-needed email
DRAFTSList of Company, Person, Subject, Draft for Social emails
DAILY_REPORTtotal_emails, category_distribution, needs_reply, drafts_prepared, deterministic_filtered_no_llm, llm_processed, low_confidence, focus
PREVIEWemail_count, deterministically_filterable, llm_needed, sample

Pricing

This Actor charges per event. Current prices are on the Pricing tab; at the time of writing:

EventWhenPrice
actor-startOnce per run, only when Process is on$0.0001
emails-processedPer email classified by the AI$0.005

Emails sorted by the free rules, emails whose AI step failed, and preview runs are not charged.

BatchSorted by rules (free)Classified by AICost
3 sample emails12$0.0101
100 emails4060$0.3001
500 emails200300$1.5001
1,000 emails, none sortable by rules01,000$5.0001

A daily routine: 150 emails a day with 60 sorted by rules leaves 90 AI-classified emails, $0.4501 per day, or $13.503 over 30 days. The share sorted by rules depends on how much bulk mail you receive; the free preview shows it before you pay.


What the statuses in the HTML report mean

Status or markerMeaningWhat to do
Awaiting ReplyYour answer is expected (Reply? = Yes)Answer, starting with High
Action RequiredAn automated notice asks you to verify, pay, sign, upload or fix an account issue; it cannot be replied toDo the action in the relevant service
DuplicateAn older message in a thread that has a newer oneRead the newest message instead
FYI (CC)You were only in CcRead when you have time
Addressed to youA real person used your nameTreat as High

Worked example: a Monday morning inbox

An account manager comes back to 180 emails after a long weekend.

  1. Preview. Her n8n flow collects the emails and runs the Actor with Process off. PREVIEW shows 180 emails, 75 sortable by the free rules and 105 that need the AI. Cost: nothing.
  2. Process. The same input with Process on costs 105 x $0.005 + $0.0001 = $0.5251.
  3. Read the summary. The bottom of TRIAGE_REPORT.html lists the reply-needed emails, each with one sentence, for example a customer asking to confirm a delivery date and a supplier waiting for a price approval.
  4. Clear the notices. Two Action Required rows point to a password reset and an unpaid invoice reminder from a no-reply address.
  5. Send the easy ones. Three Social emails (a congratulation and two invitations) have drafts in DRAFTS; she edits and sends them from her own mail client.
  6. Skip the rest. Duplicates, CC-only threads, promotions and newsletters stay at the bottom.

The numbers in this example are illustrative; your preview shows your own split before you pay.


Integrations

API

curl -X POST "https://api.apify.com/v2/acts/enezli~mail-triage/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"emails":[{"from":"Maria <maria@northwind.com>","subject":"PO 4471","body":"Can you confirm the delivery date by Thursday?"}],"process":true}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("enezli/mail-triage").call(run_input={
"emails": emails, "kullanici_eposta": "you@yourcompany.com", "process": True})
rows = client.dataset(run["defaultDatasetId"]).list_items().items
for r in rows:
if r.get("Reply?") == "Yes":
print(r["Priority"], r["Company"], r["Subject"], "-", r.get("Summary"))

n8n, Make, Zapier

Gmail, Outlook or IMAP trigger (credentials stay in your automation tool), collect the new emails, map them to from, subject, body, to, cc, date, run the Actor, then send High priority rows to Slack or email and store everything in a sheet.

Schedules

Schedule your automation once or twice a day so the triage table and the HTML report are ready when you start work. The Actor itself only processes the emails it receives in each run.

AI agents (MCP)

Through the Apify MCP server an assistant can pass a batch of emails and answer "what do I need to reply to today?" from the returned rows.


Tips for better results

  • Include to and cc and fill in your address, so CC-only emails are separated.
  • Include list_unsubscribe when your source provides the header; it is the most reliable free filter.
  • Include date so the newest message of a thread is chosen correctly.
  • Add your name (and nickname) so emails that address you personally are raised.
  • Run the preview first to see how many emails the free rules will sort.
  • Pick the output language your team works in; the categories stay English so filters keep working.

Limitations

  • No mailbox connection and no sending. Getting emails in and sending replies are up to you or your automation tool.
  • Only the first 600 characters of each body are sent to the AI. Very long emails are judged by their start.
  • Drafts only for Social emails. Business and personal emails get a summary, not a draft.
  • Threads are grouped by subject. Different conversations with an identical subject are treated as one thread.
  • Name detection needs names of at least 3 letters and looks at the subject and the first 400 characters of the body.
  • Rule words cover English and Turkish; other languages are handled by the AI step.
  • AI results can vary between runs for borderline emails. Low confidence rows show when something went wrong.

Troubleshooting

SymptomLikely causeFix
One row saying "PREVIEW: ... Turn on 'process'"Process is offTick Process (incurs charges)
"No valid emails (empty input)"Empty list, or every email had an empty bodyMap the body text into body
No CC detectionkullanici_eposta, to or cc missingAdd your address and the headers
Every newsletter goes to the AINo list_unsubscribe and no unsubscribe wording in the bodyPass the List-Unsubscribe header
Rows with Low confidence and not_processed or truncated_responseThe AI step failed for that groupRun those emails again; they were not charged
Company shows a mail provider such as GmailPersonal address without a company domainExpected; the Person column shows the name when the display name has a first and last name

FAQ

Do I have to give my email password or connect my Gmail account? No. The Actor has no mailbox connection. You provide the emails, for example from an n8n, Make or Zapier email step that holds your credentials.

Does it ever send an email? No. It has no sending function. Drafts are stored as text.

Which emails are sent to the AI? Only those the free rules cannot sort, with sender, subject and the first 600 characters of the body, to Anthropic's API.

Can a business email end up as junk? The free rules never sort an email that contains business words. Those always go to the AI, which is instructed to use General with reply needed when unsure.

Why no draft for business emails? Quotes, payments and contracts need your own answer. The Actor gives you a one-sentence summary instead.

What languages does it read? The AI reads emails in many languages. Reasons, summaries and drafts follow the language setting.

How many emails per run? There is no fixed limit in the Actor; the AI works in groups of 10. Very large batches take longer, so split them into daily runs.

Is the preview really free? Yes. With Process off nothing is sent to the AI and nothing is charged.

Can I use the result in Excel? Yes. Export the dataset as Excel or CSV from Apify Console.


Trademarks

This Actor is not affiliated with, endorsed by, or connected to Google, Microsoft, Anthropic, n8n, Make or Zapier. Gmail and Outlook are trademarks of their respective owners.