Progetti IA applicata · Impresa

IA per le operazioni di un’azienda di servizi

Un assistente che risponde con la documentazione interna dell’azienda e un generatore di preventivi, in uso ogni giorno in ufficio.

Ruolo
Responsabile del progetto · progettazione, sviluppo e messa in produzione
Anno
2025–2026
Strumenti
Python · SQLite FTS5 · OpenAI (embedding e GPT) · OCR · Flask · VPS proprio · Word e PDF
Stato
In produzione · uso interno
DemoRicostruzione con dati inventati

Come usarla

Una ricostruzione con dati inventati di come ragiona l’assistente: riconosce il condominio tra i suoi alias, recupera solo i documenti di quel condominio e risponde citando le fonti. La seconda scheda mostra il generatore di preventivi.

In ufficio, la domanda «che giorno si pulisce il garage di quel condominio?» poteva costare venti minuti di ricerca tra contratti, email e rapportini. Il problema non era l’IA: era che lo stesso condominio era scritto in mille modi diversi.

+6 GB
Documentazione indicizzata, dai contratti alle email e alle scansioni
+2.500
Condomini identificati
+5.000
Modi diversi di chiamarli, riuniti in un registro
+30.000
Collegamenti verificati tra documenti e condomini
§ 01

Il contesto

Un’azienda madrilena di pulizie, manutenzione e giardinaggio: circa 60 dipendenti e centinaia di clienti, quasi tutti condomini. Le informazioni per lavorare erano sparse tra l’ERP, contratti in Word e PDF, preventivi, rapportini, fogli di calcolo, scansioni cartacee e anni di email.

§ 02

Il vero problema: i nomi

Prima di cercare qualsiasi cosa bisognava sapere di chi parla ogni documento. Lo stesso condominio compare come «C. P. Olmo 14», «Calle del Olmo, 14 – portal», «Comunidad Olmo n.º 14» o semplicemente «Olmo» nell’oggetto di un’email. Un normale motore di ricerca tratta quei quattro nomi come quattro cose diverse, e un modello linguistico, se riceve frammenti di due condomini simili, mescola i dati senza avvisare.

Per questo il pezzo centrale non è il modello, ma un registro dei condomini: ogni condominio ha un codice canonico e un elenco di alias (oltre 5.000), e ogni documento è collegato al condominio a cui appartiene. I collegamenti sono stati verificati sul database di produzione.

§ 03

Come risponde

  1. Identificare. Prima riconosce di quale condominio parla la domanda e lo riconduce al suo codice.
  2. Recuperare in due modi insieme. La ricerca è ibrida: per parole chiave (BM25 su SQLite FTS5, con un peso diverso per ogni campo del documento) e per significato (embedding text-embedding-3-small di OpenAI). Le parole chiave colgono ciò che gli embedding sfumano, come indirizzi, numeri civici o il gergo dell’ufficio. Il significato coglie ciò che le parole non hanno in comune.
  3. Isolare. Se la domanda riguarda un condominio, entrano solo i documenti di quel condominio. Nel dubbio, il sistema preferisce restituire meno risultati piuttosto che uno sbagliato.
  4. Rispondere con le fonti. Il modello scrive solo con ciò che è stato recuperato e cita da dove viene ogni dato. Se non lo trova, lo dice.

Lancia tre ricerche in parallelo per non far aspettare l’utente, tiene in cache gli embedding delle domande ripetute e ha un tetto di spesa sugli embedding perché una reindicizzazione non faccia esplodere la fattura.

§ 04

Quello che non si vede

  • Scansioni: le pagine cartacee passano per l’OCR e vengono revisionate; le pagine di uno stesso documento sono raggruppate perché il sistema le legga insieme e non come frammenti sparsi.
  • Email etichettate: ogni email importata viene classificata (aziendale, riservata del personale) per trattarla con il livello di riservatezza che le spetta.
  • Rilasci controllati: ogni versione pubblicata porta un manifesto con l’impronta SHA-256 di ogni file, così si sa sempre cosa c’è sul server e si può tornare indietro.
§ 05

Generatore di preventivi

Il secondo strumento scrive e impagina i preventivi dell’ufficio. La decisione chiave è stata separare la scrittura dal calcolo: il modello scrive il testo, ma i numeri e l’impaginazione (PDF e Word) sono codice deterministico. Con gli stessi dati esce sempre lo stesso documento, e un errore dell’IA non può mai cambiare un prezzo.

Inoltre propone i prezzi partendo dallo storico reale dell’ERP e calcola costo e margine con le tariffe del personale, così chi prepara il preventivo vede se il lavoro è redditizio prima di inviarlo.

§ 06

E altro

Una suite d’ufficio con IA (email, riassunti, analisi dei capitolati di gara, revisione di contratti ed estrazione di fatture) e il primo ottimizzatore di percorsi dell’azienda, che è diventato RouteOpt.

§ 07

Che cosa mi porto via

In un’azienda vera la parte difficile non è il modello. È rendere affidabile il dato di partenza (indirizzi, nomi, versioni dello stesso documento) e fare in modo che il sistema sappia dire «non lo so» invece di inventare.