This page requires JavaScript to display.
The Nolan Scott Team Sells and buys businesses from $1M to $15M+, and advises on the real estate that comes with them. nolanscottteam.com →
Example 06 / 18 · a sample from our Rolodex of 100+ automations n8n
Automation Breakdown · n8n Workflow

Inbox Labeler & Reply Assistant

An hourly Gmail triage engine. It guarantees the label system exists, has Claude classify every new email, files and archives accordingly, pre-drafts replies for anything that needs one, and once a day, sweeps aged Awaiting Reply threads to close them out or draft a nudge.

31 nodes
2 triggers · hourly + manual
3 Claude calls
3 stages
True AI automation isn’t one clever workflow. It takes 20 to 40 workflows working together to make a real impact on a business. That’s what we do: a Rolodex of 100+ automations across different CRMs and platforms, ready to be custom-built for your specific CRM and software stack.
The Workflow
Scroll sideways · click any node for its explanation
true
false
true
loop
true
loop
true
false
Inbox Labeler & Reply Assistant
What it does (hourly): ensures all labels exist, classifies new mail with Claude, applies labels, archives noise, drafts replies.
Two modes, one toggle
simple: Needs Reply · Needs Review · Not Important. detailed: full taxonomy + the daily sweep.
Awaiting Reply sweep (detailed mode only)
Runs once a day at sweepHour: closes out replied threads, drafts a nudge for silent ones.
▶
Manual Test Trigger
◔
Hourly Schedule Trigger
{ }
Setup Config
set variables
M
Fetch Existing Labels
getAll: label
{ }
Compute Missing Labels
diff vs config
⇄
Has Missing Labels?
if
{ }
Split Missing Labels
one item each
M
Create Missing Label
create: label
{ }
After Label Creation
merge back
M
Fetch Label Map
getAll: label
{ }
Build Label Map
name → id
M
Fetch New Emails
getAll: message
{ }
Prepare Classification
build prompt
A\
Classify Emails
message: text
{ }
Parse Classifications
JSON → items
M
Apply Labels
addLabels: message
⇄
Should Archive?
if
M
Archive Email
removeLabels: message
{ }
Filter Draft Candidates
needs reply only
↻
Loop Draft Candidates
batch of 1
A\
Draft Reply
message: text
{ }
Extract Draft Body
clean text
M
Create Reply Draft
create: draft
{ }
Should Run Sweep?
check hour + mode
⇄
Run Sweep?
if
M
Fetch Aged Awaiting Reply
getAll: message
{ }
Unique Threads
dedupe
↻
Loop Threads
batch of 1
M
Get Thread
get: thread
{ }
Assess Thread
who spoke last?
⇄
Thread Replied?
if
M
Remove Awaiting Reply
removeLabels: thread
M
Mark Actioned
addLabels: thread
A\
Draft Nudge
message: text
{ }
Extract Nudge Body
clean text
M
Create Nudge Draft
create: draft
M
Mark Nudged
addLabels: thread
◈
The workflow at a glance
Click any node on the canvas to see exactly what it does. The flow reads left to right: label guarantee, then Claude classification, then the daily Awaiting-Reply sweep.
Gmail operation
Code / transform
Branch (if)
Claude (AI)
Loop
Trigger
How It Works

Three stages, every hour

01 · Label Guarantee
Setup & label map

Both triggers land in Setup Config, which holds the mode toggle and settings. The flow fetches every existing Gmail label, diffs it against the required set, and, only if any are missing, splits them out and creates each one. It then re-fetches labels and builds a name → labelId map every downstream node uses.

02 · Classify & Triage
Claude sorts the inbox

New emails are fetched and batched into one Classify Emails prompt. Parsed results fan out three ways: Apply Labels tags every message; Should Archive? pulls noise out of the inbox; and draft candidates loop through a second Claude call that writes a reply, saved as a Gmail draft on the thread, never auto-sent.

03 · Awaiting-Reply Sweep
Nothing slips through

Once a day (detailed mode only), the sweep pulls threads still labeled Awaiting Reply past the age threshold. Each thread is re-read and assessed: if the other side replied, the label is removed and the thread marked actioned; if not, Claude drafts a polite follow-up nudge and the thread is marked nudged so it isn't nudged twice.

Two modes · one toggle

simple keeps three labels, Needs Reply · Needs Review · Not Important. detailed expands the taxonomy and unlocks the daily Awaiting-Reply sweep. One value in Setup Config switches everything.

Safety rails

The assistant never sends mail, every reply and nudge lands as a draft for human review. Archiving only removes the INBOX label; nothing is deleted. Marker labels (Actioned, Nudged) make every run idempotent.

Next example: Gmail Daily Digest →
AI · nolan scott team
Unpacking...