What they did
The poster built an n8n workflow that triggers on unread Gmail, filtered to a test sender. A Text Classifier node sorts each email into lead, support, newsletter or other, a label is applied per branch, and a Gemini node writes a reply that Gmail saves as a draft on the same thread. Nothing is sent automatically. He switched to the classifier after another community member suggested it in place of string matching, which he says removed that problem.
How it went
Every execution came back green, but reading the drafts turned up four problems. One offered a 15% discount nobody had approved. Every draft was signed with a placeholder name. The recipient field was empty on all of them, because he had picked the wrong to-email option. One manual run produced two different drafts for the same customer. He fixed them with explicit rules in the writer's prompt, no discounts, no promises and the real name in the sign-off, the correct recipient setting, an AI Processed label, and marking each email read so it is not picked up twice.
Worth knowing
A green run says nothing about what the model wrote, so someone has to read the drafts. A reply on the thread argued for splitting the checks: reject a missing recipient or a leftover placeholder mechanically before the draft is made, and check offers against the approved policy data rather than asking a second model whether it looks fine, testing with paraphrases such as waiving part of a fee. The workflow JSON is on GitHub.