Estrazione strutturata su rendiconti bancari eterogenei. pdf.js estrae il testo lato client, Claude struttura le posizioni e dichiara un confidence score campo per campo. Tutto ciò che non supera soglia finisce in una coda di revisione umana invece che nel totale.
Rifiuti, bonifiche ed economia circolare. Nove siti operativi, settore industriale regolato.
Requisiti raccolti direttamente da chi ha il problema. Poi IA, interfaccia, front-end e funzioni serverless.
Local-first su localStorage, cambi BCE, XLSX per l'import. In produzione sul loro ambiente.
Banche private, fondi di private equity, immobili, liquidità. Ognuna ha il proprio schema, la propria nomenclatura e il proprio calendario. Quello che una chiama valore residuo, un'altra lo chiama controvalore. Riconciliazione a mano, e un dato che invecchia nel tempo che serve a produrlo.
PDF, schema proprietario
Commitment, DPI, TVPI
USD da convertire
dieci in tutto
Deterministico e verificabile, ma accoppiato al template. Al primo restyling del rendiconto fallisce in silenzio: continua a restituire numeri, solo dalle celle sbagliate.
Regge schemi mai visti e non richiede manutenzione a ogni cambio di formato. In cambio introduce varianza, ed è lì che nasce il lavoro di design.
Un modello che legge un rendiconto sbaglia, e sbaglia con la stessa confidenza lessicale di quando ha ragione.
La varianza non si elimina con un prompt migliore. Si rende visibile. Da qui in poi non è più un problema di modello, è interaction design: dove passa il confine di autonomia, cosa il sistema può scrivere da solo, e cosa deve dichiarare.
Come arriva dall'istituto. Nessun template da configurare.
Il documento non transita su nessun server per essere letto. Vincolo di riservatezza, non ottimizzazione.
Le posizioni in schema, e per ogni campo quanto è sicuro invece di una risposta piatta.
Sopra soglia entra nel totale. Sotto soglia va in coda, e aspetta una persona.
Con la percentuale e il riferimento alla pagina di origine. All'utente non compare nulla: il silenzio è l'interfaccia corretta per un dato affidabile.
Il valore c'è, e accanto c'è ciò che il modello non ha saputo risolvere. Va in review queue, e il totale non è mai silenziosamente sbagliato.
Nessuna imputazione del dato mancante. L'omissione è esplicita, così nessuno assume che il consolidato sia completo.

Il pattern diffuso è il badge sulla riga, che scarica sull'utente il costo di cercare. Qui l'incertezza ha una vista sua e un contatore in navigazione: quando il contatore è a zero, la riconciliazione è chiusa.


E sotto: scrivi quante unità possiedi, la trovi sul documento come «Quantità» o «Nominale». Non «parsing error»: dichiara il calcolo bloccato, il dato che manca e l'etichetta esatta da cercare sul documento.
L'utente deve poter dichiarare un falso positivo, e quella decisione deve restare.
La fiducia in un consolidato non nasce dalla sua correttezza. Nasce dalla possibilità di auditarlo. Ogni cifra dice come è stata ottenuta, ogni formula si apre sui valori reali, ogni valore risale al documento da cui viene.

Chiamata dal server perché la BCE non espone CORS, con fallback sull'XML ufficiale e risposta in cache: una richiesta al giorno invece di una per visitatore.
Le fonti gratuite si sono chiuse. La chiave sta in una variabile d'ambiente, mai nella pagina, e gli ISIN del cliente non passano da proxy di terzi. Senza chiave l'endpoint dichiara il proprio stato invece di fallire in silenzio.
Il confine che conta è il terzo. Il modello legge e propone, la soglia decide cosa entra da solo nel consolidato, e la persona che firma il totale resta il cliente. Nessun valore incerto è mai entrato in un totale senza dirlo.
Il sistema non decide da solo quando ha un dubbio: lo passa a te.
È scritto nel prodotto. Ed è la stessa domanda che mi sono posto sull'assistente conversazionale in produzione e sull'agente di retrieval: dove si colloca il confine di autonomia, e come si progetta il fallback verso la persona. Tre prodotti, un principio.