TL;DR Un'azienda metalmeccanica umbra riceve gli ordini dei clienti come PDF allegati alle email. Un workflow n8n scarta senza chiamare l'AI le email che non sono ordini, stima il costo di ogni allegato prima di analizzarlo e fa compilare al modello il template Excel che il gestionale importa. L'Excel finisce su Google Drive; un operatore lo importa nel gestionale e conferma da Telegram. In sei mesi: 723 email ricevute, 504 scartate senza chiamare il modello, 219 ordini, 300 allegati analizzati a circa 0,03 $ l'uno.

Ordini da PDF al gestionale: l'AI compila un template, il resto lo fanno le regole

Doinel Atanasiu
Doinel Atanasiu10 minuti di lettura

Un'azienda metalmeccanica umbra riceve gli ordini dei propri clienti come PDF allegati alle email. Ho costruito in n8n il workflow che li trasforma in file Excel pronti per il gestionale: filtra le email, stima quanto costerà analizzare ogni allegato, fa estrarre l'ordine a un modello AI dentro un template deciso dall'azienda, archivia tutto su Google Drive e avvisa l'amministratore su Telegram. È in produzione dal 1° aprile 2026.

Questa pagina spiega come è fatto e perché, con i numeri dei primi sei mesi. Il modello fa solo la parte che nessuna regola sa fare: leggere un PDF scritto da qualcun altro e compilare il formato che l'azienda ha deciso. Il resto sono regole, e le regole le configura l'amministratore senza passare da me. Cosa sia cambiato per l'azienda (tempi, costi, tempo di costruzione) lo racconto invece nell'articolo su quanto costa automatizzare l'inserimento degli ordini da PDF.

Il problema

Ogni cliente manda l'ordine a modo suo, con impaginazione e unità di misura diverse. Il gestionale dell'azienda, Danea Easyfatt, importa invece un formato preciso.

Prima, l'amministratore scaricava ogni PDF sul PC, lo caricava su ChatGPT, si faceva generare un Excel e lo ricontrollava, perché spesso qualcosa era sbagliato. Erano circa 3-4 minuti per allegato, secondo la sua stima.

L'AI era già nel processo. Mancava il processo intorno: un formato di uscita fisso, una regola per le unità di misura, un archivio e un registro di cosa era arrivato e cosa era stato fatto.

Un vincolo ha guidato la scelta degli strumenti: l'azienda ha già delle licenze software, tra cui Google Workspace, e la soluzione doveva adattarsi a quelle. Per questo email, archivio e configurazione stanno su Gmail e Google Drive, gli strumenti che l'azienda già usa.

Ogni filtro prima dell'AI costa zero

In sei mesi sono arrivate 723 email all'indirizzo monitorato. Gli ordini veri erano 219. Se il primo passo fosse stato chiedere al modello se un'email è un ordine, avrei pagato una chiamata AI per ognuna delle altre 504.

Prima del modello girano tre controlli deterministici:

  1. Blacklist dei mittenti. Gli indirizzi da ignorare stanno in una lista che l'amministratore modifica da solo. Scartate: 22.
  2. Allegati e parola chiave di attivazione. Un'email è un ordine se ha allegati e se l'oggetto contiene una delle parole chiave di attivazione, che imposta l'amministrazione. Scartate: 482.
  3. Duplicati. Prima di analizzare un allegato controllo se un file con lo stesso nome è già presente nella cartella di quel cliente per l'anno in corso. Scartati: 0.

Nessuno di questi controlli chiama un modello: il 70% delle email (504 su 723) si ferma qui, a costo zero.

La parola chiave nell'oggetto ha un rovescio che ho accettato: un ordine vero con un oggetto senza parola chiave viene trattato come non ordine. L'errore resta visibile, perché ogni email scartata riceve un'etichetta Gmail (ne parlo più sotto).

Il limite di spesa si decide prima di spendere

Un limite di spesa per allegato è una soglia in dollari, fissata dall'amministratore, che il costo stimato di un'analisi non può superare: se la supera, il documento non arriva al modello e una persona decide se autorizzarlo.

Un'estrazione AI si paga a token, e i token dipendono dalla dimensione del PDF. Un ordine di una pagina e un PDF di molte pagine non costano uguale.

Prima di ogni analisi il sistema conta i token in ingresso dell'allegato con l'endpoint di conteggio del fornitore e aggiunge il massimo di token in uscita che la chiamata può produrre, cioè il tetto impostato sulla risposta. Converte il totale in dollari con i prezzi del modello e lo confronta con la spesa massima per allegato che l'amministratore imposta su Drive. Se la stima supera la soglia, quell'allegato non viene analizzato.

Contare il massimo in uscita rende la stima prudente: nel caso peggiore l'analisi costa quanto stimato.

La soglia vale per allegato, non per email. Se un'email ha più PDF e solo alcuni superano la soglia, gli altri vengono processati e l'email prende l'etichetta "Parz. costoso". In sei mesi il limite ha fermato 13 email su 219, in tutto o in parte.

Il limite si può superare in modo esplicito. Per ogni email fermata l'amministratore autorizza quell'email (non il mittente) e la reinoltra, e il sistema la riprocessa senza applicare il limite. Se l'email era solo in parte costosa, il riprocessamento tocca gli allegati saltati la prima volta. Tutte e 13 sono state autorizzate e riprocessate. Il limite garantisce che nessuna spesa fuori scala parta senza che una persona l'abbia vista.

Lo considero necessario in qualunque strumento che chiami un modello su input che non controllo: un PDF molto lungo costa di più ed è anche il più probabile a produrre risultati anomali, e conviene saperlo prima di pagare.

Prima il processo, poi l'AI

Prima di automatizzare qualcosa ho standardizzato il processo con l'azienda. Il vecchio flusso lasciava a ChatGPT la scelta del formato: a ogni PDF decideva da solo quali colonne produrre, in che ordine e con quali unità.

Ne sono usciti due oggetti:

  • un template dell'ordine: il formato Excel che Easyfatt importa, con colonne e tipi fissi;
  • una mappa delle unità di misura: per ogni unità che compare negli ordini dei clienti, come l'azienda la gestisce internamente.

Il modello riceve entrambi a ogni estrazione. Compila il formato dell'azienda e converte le unità con una tabella che non ha scritto lui.

Secondo l'amministratore, in sei mesi non ha dovuto correggere a mano nessun ordine. È una sua dichiarazione, non un dato del sistema (ne riparlo in fondo). Lo attribuisco a come abbiamo lavorato: prima standardizzare i flussi, poi automatizzarli con l'AI.

Il modello è GPT-5.4 di OpenAI. Ho confrontato sugli stessi ordini modelli di più fornitori: al momento dei test era quello con il miglior rapporto tra qualità dell'estrazione e prezzo.

Lo stato vive dove l'operatore già guarda

Un'automazione che non si mostra lascia sempre la stessa domanda: "quell'ordine è arrivato?". Invece di costruire una dashboard ho messo lo stato di ogni email in due posti che l'azienda usa già.

Su Gmail, come etichette. Ci sono etichette generiche (errore, blacklist) e un'etichetta per ogni cliente, con sotto-etichette che seguono il ciclo di vita dell'ordine:

  • 1 - In attesa
  • 2 - Processato
  • 3 - Inserito
  • 4 - Non ordine
  • 5 - No allegati ordine
  • 6 - Parz. costoso
  • 7 - Costoso

I numeri davanti ai nomi tengono le sotto-etichette nell'ordine del percorso di un ordine, nella barra laterale di Gmail. L'operatore vede in tempo reale a che punto è ogni email e perché una si è fermata.

Se qualcosa va storto, l'email prende l'etichetta "errore" e vengono avvisati l'amministratore e io. In sei mesi non l'ho mai vista scattare.

Su Google Drive, come archivio e come registro. Ogni ordine estratto viene salvato come Excel insieme al PDF che lo ha generato, in una struttura cliente / anno / mese. Il nome della cartella cliente è configurabile. Accanto, un file Excel di tracciamento registra ogni email ricevuta: se è stata processata, e se no perché (blacklist, non ordine, troppo costosa, errore), il costo di ogni allegato e gli eventuali errori.

L'ultimo passo resta umano, perché il gestionale non ha API

Danea Easyfatt non si può comandare via API. Il vincolo viene dal gestionale, e ha deciso la forma dell'ultimo passo: l'importazione la fa una persona.

Per accorciare quel passaggio ho costruito un bot Telegram. Quando un'email è stata processata riceve l'etichetta "Processato", e subito dopo n8n manda all'amministratore un messaggio con tutti gli ordini estratti da quell'email. Ogni riga ha due pulsanti:

  • Apri, che apre l'Excel su Google Drive;
  • Scarica, che scarica il file sul PC e poi cambia etichetta per dire che è stato scaricato.

In fondo al messaggio un terzo pulsante conferma che gli ordini di quell'email sono stati inseriti nel gestionale. Anche questo cambia etichetta dopo il clic.

Dietro i pulsanti ci sono due flussi n8n separati. Uno consegna il file quando l'operatore preme Scarica. L'altro, alla conferma, porta l'etichetta Gmail dell'email da "Processato" a "Inserito". Un clic aggiorna quindi sia il messaggio Telegram sia la casella di posta, senza un secondo strumento da tenere aggiornato.

Chi conosce i clienti non deve chiamare uno sviluppatore

Tutto ciò che cambia con la vita dell'azienda sta in file di configurazione su Google Drive, che l'amministratore modifica da solo:

  • la blacklist dei mittenti;
  • le parole chiave di attivazione nell'oggetto;
  • la spesa massima per allegato;
  • la mappa delle unità di misura;
  • i nomi delle cartelle cliente.

Se arriva un cliente con un'unità di misura mai vista, si aggiunge una riga alla mappa. Se un mittente non deve più essere processato, va nella blacklist. Nessuna di queste modifiche passa da me o richiede di toccare il workflow.

Il modello è un nodo

Nel workflow il modello vive in un solo nodo. Cambiarlo richiede tre interventi circoscritti:

  1. sostituire il nodo AI con quello del nuovo fornitore;
  2. aggiornare le costanti con il nome del modello e i prezzi dei token in input e in output;
  3. puntare la stima dei costi all'endpoint di conteggio token del nuovo fornitore.

I filtri, il limite di spesa, il template, l'archivio e le notifiche non cambiano. Il template e la mappa delle unità non dipendono da GPT-5.4, quindi restano quelli.

Cosa ho accettato di perdere

I falsi negativi della parola chiave. Un ordine con un oggetto che non contiene nessuna delle parole chiave viene trattato come non ordine. Ho preferito questo rischio, visibile tramite le etichette Gmail, a pagare una classificazione AI su 482 email che ordini non erano.

I duplicati riconosciuti per nome file. Il controllo regge se i clienti danno ai file nomi diversi tra un ordine e l'altro. Se lo stesso ordine arriva con un nome diverso, non viene riconosciuto; se un cliente riusa sempre lo stesso nome per ordini diversi, il secondo viene scambiato per un duplicato. Sei mesi senza duplicati segnalati non dimostrano che nessuno dei due casi sia successo. Il passo successivo sarebbe confrontare il numero d'ordine estratto invece del nome del file, pagando però l'estrazione prima di scoprire il duplicato.

La misura delle correzioni. Il pulsante di conferma su Telegram registra che un ordine è stato inserito, non se è stato modificato prima. Lo "zero correzioni" è quindi la parola dell'amministratore, non un dato del sistema. Per misurarlo servirebbe un secondo pulsante accanto a quello di conferma.

I numeri, al 28 settembre 2026

DatoValore
In produzione da1 aprile 2026
Email ricevute723
Scartate: blacklist22
Scartate: non ordine482
Email d'ordine219
di cui fermate dal limite di spesa13 (in tutto o in parte, tutte riprocessate)
Allegati analizzati300
Errori / duplicati0 / 0
Costo medio per allegato~0,03 $
Consumo API in produzione~10 $
Consumo API per sviluppo e collaudo~10 $ (prima della produzione)

Il 70% delle email si è fermato ai controlli deterministici senza costare nulla. Il restante 30%, gli ordini, ha portato 300 allegati analizzati a circa 3 centesimi l'uno: circa 10 $ in sei mesi. Altri 10 $ circa erano stati spesi prima della messa in produzione, per sviluppo e collaudo. Il workflow è arrivato in produzione già collaudato, ed è così che spiego zero errori e zero duplicati.

Lo stack

n8n per il workflow. Gmail come canale in ingresso e le sue etichette come stato visibile. GPT-5.4 di OpenAI per l'estrazione, con l'endpoint di conteggio token del fornitore per la stima dei costi. Google Drive per archivio, registro e configurazione. Un bot Telegram per l'ultimo passo verso Danea Easyfatt.

FAQ

Domande e risposte frequenti
L'AI legge tutte le email che arrivano?
No. Prima del modello girano solo controlli deterministici e gratuiti: mittente in blacklist, presenza di allegati, parola chiave di attivazione nell'oggetto, file già presente su Drive. In sei mesi 504 email su 723 sono state scartate così, senza spendere nulla in API.
Come si evita che un PDF molto lungo faccia esplodere i costi?
Prima di analizzare un allegato il sistema ne conta i token in ingresso, aggiunge il massimo di token in uscita consentito, converte il totale in dollari e lo confronta con la spesa massima per allegato fissata dall'amministratore. Se la supera, l'allegato non viene analizzato e l'email viene etichettata come costosa; l'amministratore può autorizzarla e farla riprocessare.
Gli ordini finiscono nel gestionale in automatico?
No. Il gestionale usato dall'azienda, Danea Easyfatt, non si può comandare via API, quindi l'ultimo passo resta umano: l'amministratore riceve su Telegram gli ordini estratti da ogni email, scarica gli Excel, li ricontrolla, li importa e conferma l'inserimento con un pulsante dello stesso messaggio.
Quanto costa estrarre un ordine da un PDF con questo sistema?
In media circa 0,03 $ per allegato. Dal 1° aprile al 28 settembre 2026 il sistema ha analizzato 300 allegati per circa 10 $ di consumo API, a cui si aggiungono altri 10 $ circa spesi prima della messa in produzione per sviluppo e collaudo.
Si può cambiare modello AI?
Sì. Il modello vive in un solo nodo del workflow n8n; cambiarlo significa sostituire quel nodo, aggiornare le costanti con il nome del modello e i prezzi dei token in input e output, e puntare la stima dei costi all'endpoint di conteggio del nuovo fornitore. Il resto del workflow non cambia.
Ti interessa un sistema del genere?
Scrivimi su LinkedIn, oppure mandami un'email - leggo entrambi.