Gmail Assistant — Un agente autonomo di triage e pianificazione della posta
Legge una casella monitorata, redige risposte contestuali con Claude Sonnet 4.6, negozia e prenota automaticamente riunioni sulla disponibilità reale del calendario e scrive due volte al giorno un recap ordinato per priorità — orchestrato come tre workflow n8n sincroni.
In breve
La maggior parte delle demo di assistenti per la posta si ferma a "scrivi una bozza di risposta". Questa chiude il cerchio: negozia anche un orario di riunione sulla disponibilità reale del calendario, prenota automaticamente lo slot confermato e scrive due volte al giorno un recap stabile della posta. La logica è divisa in un orchestratore più due sotto-workflow sincroni, così trigger, redazione/prenotazione e reportistica possono essere versionati e debuggati in modo indipendente.
Il problema
Quasi tutto ciò che arriva nella casella di un'organizzazione è routine, e niente di tutto ciò può essere ignorato. Un ufficio comunale, l'accettazione di un ambulatorio, un piccolo studio: richieste di appuntamento, domande sullo stato di una pratica, documenti inoltrati, conferme. Singolarmente banali, nell'insieme un lavoro a tempo pieno.
- La parte peggiore è fissare gli appuntamenti — una richiesta, una proposta di orari, una controproposta, una conferma. Quattro messaggi e due controlli sul calendario per una riunione di mezz'ora.
- I tempi di risposta si allungano, e per un ufficio pubblico la corrispondenza lenta non è un fastidio ma un disservizio che il cittadino subisce direttamente.
- Nessuno ha un quadro affidabile di ciò che è davvero in sospeso. Quello che resta da fare vive nella testa di qualcuno, o in un thread che nessuno è tornato a leggere.
- La soluzione ovvia — lasciare che sia il software a rispondere — è inaccettabile ovunque un messaggio in uscita sia un atto ufficiale con il nome di una persona sopra.
Come questo progetto aiuta
L'agente fa la preparazione e si ferma prima della decisione. Legge una casella monitorata, classifica che cosa chiede ogni messaggio, redige una bozza di risposta, calcola slot realmente liberi dai calendari in tempo reale, li propone, prenota quello che viene confermato e due volte al giorno scrive un riepilogo ordinato per priorità di tutto ciò che è arrivato.
- A inviare resta la persona. Ogni risposta viene creata come bozza Gmail e non viene mai inviata automaticamente. Sparisce il lavoro di comporre e di controllare i calendari; l'atto di rispondere resta a chi ne è responsabile.
- Fissare un appuntamento si riduce a una revisione. Gli slot liberi vengono calcolati su due calendari nei quattordici giorni successivi, proposti dentro la bozza, e quello confermato viene prenotato — il botta e risposta avviene senza occupare nessuno.
- Un quadro permanente della casella. Il riepilogo bigiornaliero assegna a ogni messaggio un punteggio da 1 a 5 con una riga di motivazione, così un responsabile vede che cosa richiede una risposta oggi senza leggere la casella.
- Sicuro da rieseguire. Un log degli ID dei messaggi già trattati rende il workflow idempotente: un crash, un nuovo tentativo o un'esecuzione manuale non producono mai bozze doppie né prenotazioni doppie.
- La residenza dei dati è una configurazione, non una riscrittura. Le chiamate al modello passano da nodi intercambiabili — oggi un modello ospitato, altrimenti un'istanza Ollama self-hosted, ovunque i dati non possano lasciare la sede.
Sull'ambito, con onestà: i volumi in questa pagina vengono da uno scope di test — i mittenti monitorati sono miei alias di posta, non corrispondenti terzi. I meccanismi e i dati operativi sono reali; il traffico non è ancora quello di un ufficio in esercizio.
Redazione & pianificazione
- Legge una whitelist di mittenti attivi da una data table n8n, ne costruisce una query di ricerca Gmail e recupera i messaggi non ancora elaborati degli ultimi 7 giorni.
- Salta tutto ciò che è già stato gestito consultando una seconda data table usata puramente come log di idempotenza — si può rieseguire senza doppie bozze o doppie prenotazioni.
- Classifica ogni email con Claude Sonnet 4.6 attraverso un output parser LangChain validato da schema: è la conferma di un orario già proposto, una nuova richiesta di appuntamento o nessuna delle due.
- Per una nuova richiesta di appuntamento legge due Google Calendar (uno personale più un calendario dedicato "Meetings"), calcola fino a tre slot liberi da 30 minuti nei 14 giorni successivi (giorni feriali, 09:00–18:00 Europe/Rome) e fa scrivere al modello una risposta che li propone.
- Per una conferma, prenota lo slot corrispondente direttamente su Google Calendar e segna il thread come confermato.
- Ogni risposta viene creata come bozza Gmail, mai inviata automaticamente — revisione e invio restano un passaggio manuale.
Il recap due volte al giorno
- Parte al termine della redazione, recuperando la posta delle ultime 12 ore più il log di idempotenza.
- Raggruppa le email (10 per chiamata) nello stesso modello, che assegna a ciascuna un'etichetta tematica libera e un punteggio di priorità da 1 a 5 — 5 per "azione entro un giorno", 1 per "ignora" — con una riga di motivazione e un riassunto di una frase.
- Formatta il risultato in un brief raggruppato per priorità e lo scrive in un nuovo Google Doc, con intestazioni di sezione in grassetto applicate tramite una chiamata diretta all'endpoint
batchUpdatedelle API Docs, dato che il nodo Google Docs di n8n non espone lo stile a livello di carattere.
Dati operativi
Estratti direttamente dal log di esecuzione di n8n e dalle data table del workflow da quando è iniziata la costruzione, il 30 ago 2026 — non simulati.
Nota sull'ambito: l'elenco dei mittenti monitorati contiene attualmente due alias della casella di posta di Marco usati per i test, non ancora corrispondenti reali. I meccanismi descritti qui sotto — redazione, negoziazione, prenotazione, recap — sono pienamente attivi; i volumi riflettono semplicemente un ambito di test e non traffico email di produzione.
Affidabilità & sicurezza
- Ogni risposta arriva come bozza Gmail, mai inviata automaticamente — una persona rivede sempre prima che qualcosa esca.
- Idempotente per costruzione: un log su data table degli ID dei messaggi elaborati fa sì che rieseguire il workflow, manualmente o dopo un crash, non produca mai bozze o prenotazioni doppie.
- Le letture del calendario hanno un percorso di fallback esplicito se uno dei due Google Calendar è temporaneamente irraggiungibile, così un errore transitorio dell'API degrada in modo controllato invece di far scrivere bozze su un'agenda ignota.
- Le chiamate LLM di classificazione, redazione e recap passano tutte da nodi modello intercambiabili. Anthropic Claude Sonnet 4.6 è il percorso attivo; OpenAI GPT-4.1-mini e un Ollama self-hosted (qwen3:32b) sono cablati come alternative disattivate per esigenze di costo o di residenza dei dati.
- Output strutturati e validati da schema ovunque tramite output parser LangChain, invece di interpretare risposte del modello in testo libero.