Soluzioni · Servizi finanziari
Un agente che classifica movimenti di denaro scegliendo da un elenco chiuso, non scrivendo una frase che poi qualcuno interpreta.
In un'organizzazione finanziaria, un agente utile non dà consigli e non approva nulla: legge documenti e transazioni, li inquadra in una categoria da un insieme fisso, dice quanto è sicuro ed è autorizzato a rispondere «non so». Il resto — la decisione, l'approvazione, la politica — rimane alle persone.
Offerta, con condizioniNon scriviamo «consegnato», perché non abbiamo un agente di questo tipo messo in produzione presso un cliente del settore finanziario. Ciò che abbiamo, e mostriamo esattamente come tale, è una pipeline proprietaria di ingestione che gira sui nostri dati: cinque moduli Python, 1.526 righe, che leggono notifiche bancarie da e-mail ed estratti in PDF, classificano ogni transazione tramite strumenti e la scrivono in PostgreSQL con deduplicazione, più quattro flussi di automazione per webhook di tre processori di pagamento. Lo stato reale, detto nella stessa frase: il deposito non è sotto git, le directory `tests/` e `webhook-server/` sono vuote, e il matching approssimativo dei nomi delle controparti usa un’euristica di n-gram marcata nel codice come «da sostituire con un servizio di embedding prima della produzione». La parte di piattaforma finanziaria in produzione — flusso di richiesta, contratto, piano di pagamenti, audit — è un lavoro separato, con le sue prove, e lì scriviamo «consegnato».
Le richieste di agenti AI nei servizi finanziari arrivano quasi sempre nella forma «rispondere ai clienti alle domande sui nostri prodotti». È una richiesta legittima, ma non è lì che si guadagna tempo. Il tempo si perde altrove: qualcuno apre ogni giorno decine di notifiche bancarie e di estratti, guarda una descrizione del tipo di una stringa di maiuscole con un codice e decide se è un incasso da cliente, uno stipendio, un’imposta, una rata verso un creditore o una spesa operativa. Questo lavoro è ripetitivo, noioso e, proprio per questo, pieno di errori.
Un modello linguistico è bravo in questo, a una condizione: che non gli si chieda di scrivere una risposta in testo libero. Se gli chiedete una frase, la parserete voi, e la parsing la sbaglierete. Nella nostra pipeline, il modello non scrive: riceve sette strumenti e deve chiamarne esattamente uno — incasso da cliente, stipendio, imposta, pagamento verso creditore, spesa operativa, commissione bancaria o sconosciuto. Ogni strumento richiede, oltre al nome della controparte o alla categoria, un punteggio di fiducia tra 0 e 1. «Sconosciuto» richiede un motivo scritto. L’output è una struttura, non un’opinione.
La seconda regola è che nulla entra due volte. Ogni transazione estratta da una notifica o da un estratto riceve un identificatore esterno calcolato come prefisso di 16 caratteri di un’impronta SHA-256 sui suoi campi, la colonna è univoca nella tabella, e l’inserimento avviene con `ON CONFLICT (external_id) DO NOTHING`. La conseguenza pratica: la casella di posta può essere riletta quante volte volete, e il saldo non si raddoppia. Senza questa regola, qualunque pipeline di ingestione finanziaria finisce, alla terza settimana, per produrre duplicati che qualcuno pulisce manualmente.
Ciò che un tale agente non fa, e perché è importante scriverlo nella pagina: non approva un pagamento, non prende una decisione di credito, non dà raccomandazioni di investimento e non risponde al cliente a nome dell’istituzione. Il punteggio di fiducia che restituisce è la valutazione del modello su se stesso, non una misurazione dell’accuratezza fatta da noi — questa distinzione è la differenza tra uno strumento e un’illusione di controllo.