π« Classify Gmail emails with OpenAI and Telegram feedback
β‘ 25 views Β· π« Ticket Management & Triage
Description
An AI-powered Gmail assistant built with n8n that automatically labels emails, learns from your decisions, and safely improves over time using human-in-the-loop training.
This workflow combines:
- Gmail
- OpenAI
- Telegram
- n8n Data Tables
to create a trainable AI inbox workflow that behaves more like an executive assistant than a traditional spam filter.
Features
β AI-powered Gmail classification β Dynamic Gmail label discovery β Human-in-the-loop review system β Trainable via Telegram β Historical learning from previous decisions β Gmail-safe architecture (labels first, no auto-delete) β Backfill support for older emails β Configurable confidence thresholds
How It Works
The system uses a simple but powerful workflow:
New Email β AI analyzes email β Apply labels if confident β If uncertain β send for review β User teaches AI through Telegram β Future emails become easier to classify
The workflow dynamically loads all your labels but it filters for sub-labels under the parent label AI.
Screenshot 20260518 at 7.22.12β―PM.png
IMPORTANT Gmail Setup
Create a parent Gmail label named:
AI
Then create sub-labels underneath it.
Becuase the system dynamically fetches your labels:
- you can customize your own labels
- the AI only uses valid existing labels
- labels stay synchronized with Gmail automatically
Whatβs happening underneath the hood?
Every processed email receives the AI parent label so emails are not repeatedly reprocessed.
The workflow uses a configurable confidence threshold.
// Example
item
.json.confidenceThreshold = .9;
| Threshold | Result |
|---|---|
| 0.95 | Very conservative |
| 0.90 | Recommended |
| 0.80 | More automation |
| 0.70 | Aggressive automation |
If confidence is:
ABOVE threshold β labels are applied automatically BELOW threshold β email enters review queue
Human-in-the-Loop Training
When the AI is uncertain the email is tagged and a rule is added to the data table for review. Once you trigger the training flow, Telegram asks the user how future emails should be handled.
For each email rule, the user can:
- choose which label should apply
- reject the classification
- add additional instructions for more nuanced behavior
Historical Learning
Before asking the user for help, the AI searches previous decisions from the same sender.
If previous reviewed decisions exist:
- confidence may increase
- historical labels may be reused
- automation becomes more accurate over time
Pending/unreviewed decisions are treated as weak references only.
Data Table Setup
Create an n8n Data Table named:
Email Rules
Recommended columns:
| Column | Type |
|---|---|
| emailId | string |
| threadId | string |
| fromEmail | string |
| fromName | string |
| subject | string |
| snippet | string |
| confidence | number |
| labelsApplied | string |
| reason | string |
| userQuestion | string |
| ruleSuggestion | string |
| isPending | boolean |
| recommendedAction | string |
Suggested Improvements
Ideas for future upgrades:
- broad email provider support
- Notion-based rule management
- AI-generated email drafts
- Daily review digests
- Multi-user support
- Chat-based rule revision
- Web dashboard
- Safe-deletion
Requirements
- Gmail (with sub-labels under
AI) - OpenAI API Key
- Telegram Chatbot
π Nodes Used
Telegram, Gmail, Gmail Trigger, Execute Workflow Trigger, Filter, AI Agent
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File