Ci sono progetti che nascono da un business case, un comitato di direzione e un Gantt lungo come un’estate senza gelato. E poi ci sono progetti che nascono da una frase tipo: “ciao, mi puoi fare un portale per gestire dei file CSV e trasformarli in Excel?”
Questa è la storia del secondo tipo. Ed è una storia vera, successa a me, con una farmacia di provincia come protagonista involontaria. La racconto perché dentro c’è, in miniatura, tutto quello che sta cambiando nel modo di costruire software. E anche un paio di lezioni che non mi aspettavo.
Il problema: la settimana in sei file
Il contesto è di una banalità disarmante, ed è proprio questo il punto. Ogni settimana il gestionale della farmacia sputa fuori sei file CSV: l’elenco completo delle vendite con il dettaglio dei prodotti, le vendite per operatore, quelle pagate con il POS, con Satispay, a credito, e un file di riscontro delle vendite chiuse. Da questi sei file bisogna produrre un Excel per ogni giornata: una riga per vendita, con gli importi, la lettera dell’operatore, la modalità di pagamento e — nei casi anomali, tipo i resi — il dettaglio dei prodotti.
Un lavoro di incrocio dati che a mano richiede pazienza monastica e una soglia di attenzione che il venerdì sera nessun essere umano possiede. Il classico compito che nessuno metterebbe mai a budget per uno sviluppo software, e che quindi resta lì per anni, a consumare ore.
Primo livello: la skill (quando l’agente impara il mestiere)
La prima soluzione l’avevo costruita tempo fa come skill per un agente AI: in sostanza un file di istruzioni in linguaggio quasi naturale — le regole del gioco — più uno script di supporto. La chiave della logica sta tutta in una frase: la data e ora del movimento è la chiave di incrocio. Ogni vendita compare in più file; incrociando timestamp e importi si ricostruisce chi ha battuto lo scontrino e come è stato pagato. Il resto è disciplina: default “contanti”, disambiguazione sugli importi quando due vendite cadono nello stesso minuto, dettaglio prodotti solo dove serve.
Funzionava. Ma richiedeva me, il mio ambiente, il mio abbonamento. La farmacia dipendeva dal sottoscritto come da un oracolo: e gli oracoli, si sa, vanno in ferie.
Secondo livello: il portale (un file HTML, zero installazioni)
Ed eccoci alla frase magica: “mi fai un portale?”. La conversazione con l’AI è durata il tempo di un caffè lungo. Ho allegato i CSV di partenza, gli Excel di arrivo prodotti nelle settimane precedenti, e lo zip con la vecchia skill. Tre ingredienti che — col senno di poi — sono la vera morale della storia:
- gli input reali, non esempi giocattolo;
- gli output attesi, quelli buoni, già verificati sul campo;
- la logica esistente, da portare avanti senza reinventarla.
Il risultato è stato un singolo file HTML: lo apri con un doppio clic, trascini i sei CSV, controlli il pannello delle verifiche, scarichi gli Excel giornalieri. Tutto gira nel browser, in locale: nessun dato di vendita lascia il computer della farmacia. Nessun server, nessuna installazione, nessun canone.
La parte che mi ha sorpreso: il collaudo
Qui viene il bello, e non è la generazione del codice. È che gli Excel storici sono diventati un golden dataset: l’AI ha confrontato l’output del nuovo portale con i file di riferimento, riga per riga. Prima settimana: 882 vendite, tre sole differenze — e tutte e tre erano mie rifiniture manuali fatte a posteriori sui file storici (una correzione d’importo e due annotazioni libere). Seconda settimana, mai vista prima dal sistema: 808 vendite, zero differenze.
Poi la controprova incrociata: motore Python di riferimento, motore JavaScript del portale, portale eseguito sul computer vero. Tre implementazioni indipendenti, stesso risultato, 1.690 vendite senza un errore sulla parte automatizzata.
Fermiamoci un secondo, perché questo è il passaggio che cambia le regole. Il collaudo — quello vero, quantitativo, riga per riga — è sempre stato la parte costosa e noiosa del software artigianale, quella che si taglia per prima. Qui è diventato la parte facile: bastava avere gli esempi giusti. Il vecchio detto dei dati che valgono più del codice non è mai stato così letterale.
Terzo livello: la web app (quando lo storico inizia a valere)
A quel punto la domanda è venuta naturale: e se invece di un convertitore usa-e-getta facessimo una piccola applicazione con memoria? Detto, fatto: una web app Python con un database SQLite di appoggio, che gira sul Mac della farmacia e si avvia con un doppio clic. Stesso motore di calcolo, già validato, ma con tre superpoteri in più.
Le rifiniture che non si perdono
Il primo è il mio preferito, perché risolve il problema vero del flusso di lavoro. Le correzioni manuali — quell’annotazione sul prodotto, quell’importo sistemato a mano — prima vivevano solo dentro l’Excel finale: rigeneravi il file e le perdevi. Ora vengono salvate nel database con la solita chiave data+ora, e si riapplicano da sole a ogni rigenerazione. L’automazione fa il grosso, l’essere umano rifinisce, e il sistema ricorda. Human-in-the-loop non come slogan, ma come colonna di un database.
Lo storico interrogabile
Il secondo: ogni settimana importata si accumula in un archivio locale. Incassi per giornata, per modalità di pagamento, per operatore, resi, scontrino medio. Domande che prima richiedevano di aprire dodici file ora sono una dashboard.
Il perimetro dei dati
Il terzo è un non-superpotere, ed è forse il più importante: i dati non escono dal negozio. Niente cloud, niente SaaS, un file di database che si salva copiandolo su una chiavetta. Per una piccola attività con dati di vendita sensibili, questa non è una limitazione: è il requisito numero uno.
Cosa mi porto a casa (oltre agli Excel)
Tre livelli della stessa soluzione — skill per l’agente, portale zero-installazione, web app con database — costruiti e validati in una manciata di conversazioni. Qualche riflessione sparsa, da appassionato curioso più che da guru:
- Il capitolato è morto, viva gli esempi. La specifica più efficace che ho mai scritto non era un documento di requisiti: erano sei CSV veri e sei Excel giusti. Input reali più output attesi battono qualunque analisi funzionale, perché non lasciano spazio all’interpretazione.
- La validazione è la nuova generazione. Generare codice è diventato quasi gratis; quello che distingue un giocattolo da uno strumento di produzione è il collaudo contro dati reali. E paradossalmente è proprio lì che l’AI dà il meglio, se le dai i riferimenti giusti.
- La taglia giusta esiste, ed è più piccola di quanto pensiamo. Non tutto deve essere una piattaforma. A volte la soluzione migliore è un file HTML sul desktop. La maturità sta nello scegliere il livello minimo che risolve il problema — e nel sapere che, se il problema cresce, il livello successivo è a una conversazione di distanza.
- Il software su misura torna a essere per tutti. Per trent’anni ho visto piccole attività arrangiarsi con fogli di calcolo eroici perché lo sviluppo custom costava troppo. Quella barriera si sta sgretolando sotto i nostri occhi. E per chi, come me, negli anni ’90 tirava cavi e antenne per portare Internet dove non c’era, la sensazione è stranamente familiare: è di nuovo il momento in cui una tecnologia smette di essere per pochi.
La prossima volta che qualcuno vi dice che l’AI generativa serve solo a scrivere email, raccontategli della farmacia, dei sei CSV e del venerdì sera. E se avete in un cassetto un lavoro ripetitivo che “non vale uno sviluppo software”, forse è il momento di riaprire quel cassetto.

Rispondi