# I automated my inbox triage with n8n + GPT-4o-mini (copy the exact workflow)

> Source: <https://dev.to/haopengai/i-automated-my-inbox-triage-with-n8n-gpt-4o-mini-copy-the-exact-workflow-5ef6>
> Published: 2026-10-06 00:06:45+00:00

You don't need an empty inbox. You need to know which 12 of your 200 unread emails actually need you today — and which ones can die quietly.

I got tired of scanning my inbox every morning, so I built a small **n8n + GPT-4o-mini** workflow that reads new mail, sorts every message into one of four buckets, and drafts a reply for the ones that need one. It runs on a schedule, costs pennies, and takes about 15 minutes to set up.

Here's the whole thing — plus the one design decision that made it actually usable.

The first version I built asked the model "is this email important?" It was useless. Every email came back "somewhat important."

The fix was to stop asking for a judgement and start asking for a **single label from a fixed taxonomy**. Four buckets, no hedge, no score:

One label per email. That's it.

You are an inbox triage assistant. Read the email below and return **exactly one** of these labels on the first line: `REPLY_TODAY`, `TASK_LATER`, `READ_LATER`, `NOISE`.

Rules:

- Only use
`REPLY_TODAY` if a specific person is blocked on your answer.- Marketing, cold sales, and automated notifications are always
`NOISE`.- If you choose
`REPLY_TODAY` or `TASK_LATER`, write a one-sentence draft reply (max 40 words) on the second line, in the sender's language, in a friendly professional tone.
Subject: {{ $json.subject }}

From: {{ $json.from }}

Body:

{{ $json.snippet }}

Two things matter here: **the label set is closed**, and the draft is only generated for the two buckets that need one. That keeps token usage (and cost) low.

`in:inbox is:unread newer_than:1d`.` REPLY_TODAY` gets starred + draft attached; `TASK_LATER` gets appended to a Google Sheet; the rest get labeled and archived.
That's a real workflow, not a toy. The router is just a `Switch` node on the first line of the model's output.

Rebuilding this from scratch (Gmail OAuth, the filter, the parser, the router) is the boring part. I packaged the polished version as a ready-to-import n8n template:

Triage your inbox once, and you'll never go back to scanning.
