← All projects AI agents / n8n

Gmail Assistant — An Autonomous Email Triage & Scheduling Agent

Reads a tracked inbox, drafts context-aware replies with Claude Sonnet 4.6, negotiates and auto-books meetings against live calendar availability, and writes a twice-daily priority-ranked recap — orchestrated as three synchronous n8n workflows.

Role
Sole author
Context
n8n automation demo · consulting lead-gen
Core stack
n8n · Claude Sonnet 4.6 · Gmail & Calendar APIs
Schedule
Manual · 07:00 & 19:00 daily (Europe/Rome)

At a glance

Most inbox-assistant demos stop at "draft a reply." This one closes the loop: it also negotiates a meeting time against live calendar availability, auto-books the confirmed slot, and writes a standing recap of the inbox twice a day. The logic is split into an orchestrator plus two synchronous sub-workflows, so triggers, drafting/booking, and reporting can be versioned and debugged independently.

Triggers (manual · 07:00 · 19:00) Drafting sub-workflow (26 nodes) Recap sub-workflow (14 nodes) Priority-ranked Google Doc Gmail draft + Calendar event (draft always · event if confirmed)
The orchestrator only holds the three triggers and two "Execute Workflow" calls; the sender whitelist, drafting/booking logic, and recap logic each live in their own sub-workflow.

The problem

Most of what arrives in an organization's inbox is routine, and none of it can be ignored. A municipal office, a clinic reception, a small practice: appointment requests, status questions, forwarded documents, confirmations. Individually trivial, collectively a full-time job.

How this helps

The agent does the preparation and stops short of the decision. It reads a tracked inbox, classifies what each message is asking for, drafts a reply, computes genuinely free slots from live calendars, proposes them, books the one that gets confirmed, and twice a day writes a priority-ranked brief of everything that came in.

Scope, honestly: the volumes on this page come from a test scope — the tracked senders are my own mailbox aliases, not third-party correspondents. The mechanics and the operational data are real; the traffic is not yet that of a working office.

Drafting & scheduling

The twice-daily recap

Operational data

Pulled directly from n8n's execution log and the workflow's own data tables since the build started on 30 Aug 2026 — not simulated.

Scope note: the tracked-sender list currently holds two of Marco's own mailbox aliases used for testing, not real third-party correspondents yet. The mechanics below — drafting, negotiation, booking, recap — are fully live; the volumes just reflect a test scope rather than production email traffic.

Executions logged
65
Success rate
84.6%
Emails → drafts
19
Meetings auto-booked
4
1s 10s 100s Aug 30, 07:24 CEST Aug 31, 19:00 CEST Run 1113 — error — Aug 30, 09:24 CEST — 8.9s Run 1114 — error — Aug 30, 09:27 CEST — 7.1s Run 1115 — success — Aug 30, 09:30 CEST — 14.1s Run 1116 — success — Aug 30, 09:32 CEST — 14.1s Run 1117 — success — Aug 30, 09:34 CEST — 0.7s Run 1119 — success — Aug 30, 09:37 CEST — 0.7s Run 1120 — success — Aug 30, 09:40 CEST — 0.2s Run 1122 — success — Aug 30, 10:08 CEST — 3.2s Run 1123 — error — Aug 30, 10:10 CEST — 4.3s Run 1124 — success — Aug 30, 10:10 CEST — 3.6s Run 1126 — success — Aug 30, 10:13 CEST — 30.0s Run 1128 — success — Aug 30, 10:21 CEST — 5.6s Run 1130 — success — Aug 30, 10:34 CEST — 0.2s Run 1131 — success — Aug 30, 10:38 CEST — 6.0s Run 1132 — error — Aug 30, 10:40 CEST — 3.9s Run 1133 — error — Aug 30, 10:41 CEST — 4.7s Run 1134 — error — Aug 30, 10:42 CEST — 3.8s Run 1135 — error — Aug 30, 10:55 CEST — 3.8s Run 1136 — error — Aug 30, 10:57 CEST — 4.0s Run 1137 — error — Aug 30, 11:10 CEST — 4.2s Run 1138 — success — Aug 30, 11:14 CEST — 5.2s Run 1139 — success — Aug 30, 11:16 CEST — 0.4s Run 1140 — success — Aug 30, 11:17 CEST — 0.5s Run 1141 — success — Aug 30, 11:20 CEST — 0.4s Run 1142 — success — Aug 30, 11:20 CEST — 0.3s Run 1143 — success — Aug 30, 11:20 CEST — 0.5s Run 1144 — success — Aug 30, 11:20 CEST — 0.3s Run 1145 — success — Aug 30, 11:20 CEST — 0.3s Run 1146 — success — Aug 30, 11:21 CEST — 0.3s Run 1147 — success — Aug 30, 11:22 CEST — 0.3s Run 1148 — success — Aug 30, 11:22 CEST — 0.3s Run 1149 — success — Aug 30, 11:22 CEST — 0.3s Run 1150 — success — Aug 30, 11:22 CEST — 0.4s Run 1151 — success — Aug 30, 11:22 CEST — 0.3s Run 1152 — success — Aug 30, 11:24 CEST — 0.2s Run 1153 — success — Aug 30, 11:25 CEST — 0.5s Run 1154 — success — Aug 30, 11:27 CEST — 0.4s Run 1155 — success — Aug 30, 11:29 CEST — 20.3s Run 1156 — success — Aug 30, 11:34 CEST — 0.5s Run 1158 — success — Aug 30, 11:43 CEST — 0.4s Run 1159 — success — Aug 30, 11:46 CEST — 11.6s Run 1161 — error — Aug 30, 11:57 CEST — 2.6s Run 1162 — success — Aug 30, 11:58 CEST — 15.3s Run 1163 — success — Aug 30, 11:59 CEST — 0.5s Run 1164 — success — Aug 30, 12:01 CEST — 0.5s Run 1165 — success — Aug 30, 12:01 CEST — 0.5s Run 1166 — success — Aug 30, 12:06 CEST — 9.3s Run 1167 — success — Aug 30, 12:10 CEST — 5.2s Run 1168 — success — Aug 30, 12:11 CEST — 3.1s Run 1169 — success — Aug 30, 12:12 CEST — 0.7s Run 1170 — success — Aug 30, 12:14 CEST — 3.3s Run 1171 — success — Aug 30, 12:15 CEST — 0.7s Run 1172 — success — Aug 30, 12:18 CEST — 0.9s Run 1173 — success — Aug 30, 12:19 CEST — 0.7s Run 1174 — success — Aug 30, 12:49 CEST — 15.5s Run 1175 — success — Aug 30, 12:55 CEST — 14.8s Run 1176 — success — Aug 30, 13:00 CEST — 15.0s Run 1177 — success — Aug 30, 14:06 CEST — 9.0s Run 1178 — success — Aug 30, 14:08 CEST — 7.1s Run 1180 — success — Aug 31, 17:25 CEST — 280.0s Run 1181 — success — Aug 31, 17:39 CEST — 293.1s Run 1182 — success — Aug 31, 17:43 CEST — 294.3s Run 1183 — success — Aug 31, 17:52 CEST — 112.3s Run 1184 — success — Aug 31, 18:09 CEST — 2.3s Run 1186 — success — Aug 31, 19:00 CEST — 3.6s
Success (55) Error (10)
Every run, plotted by start time and wall-clock duration (log scale; hover a point for the exact run). The 10 errors are all within a single 2.5-hour window on 30 Aug (09:24–11:57 CEST) while the classification prompt and the appointment-negotiation branch were being debugged — none recurred after. The 27-hour gap after 14:08 CEST is simply idle time; the four runs after it (17:25–17:52 CEST) were still on the pre-refactor, single-workflow version, hence the 112–294s durations. The two runs after the orchestrator/sub-workflow split — one manual, one the scheduled 19:00 trigger — finished in 2–4s; the unprocessed-email backlog was also largely cleared by then, so the split itself and the shrinking backlog are both plausible contributors and this data doesn't isolate which mattered more.
Direct reply drafted 13 Slot proposed, awaiting confirmation 2 Confirmed & booked to calendar 4
Of the 19 emails processed, 13 got a direct reply with no scheduling involved. 6 entered the appointment-negotiation branch — 4 of those (two-thirds, on this small sample) were confirmed and auto-booked to Google Calendar; the other 2 are still waiting on the recipient.

Reliability & safety

Stack

n8n Claude Sonnet 4.6 Gmail API Google Calendar API Google Docs API LangChain output parsers n8n Data Tables
← Small-Model Fine-Tuning Ablations T-Rax →