SupplyFlow legge documenti di trasporto, fatture e ordini, riconosce i materiali, propone i movimenti e aspetta il tuo assenso. Poi ti dice cosa sta finendo, cosa scade e da chi conviene ricomprarlo.
In uno studio, in un laboratorio, in un piccolo reparto produttivo la merce arriva con una bolla e finisce su uno scaffale. Il gestionale — quando c'è — vorrebbe che qualcuno aprisse un modulo e ricopiasse dieci righe.
Non lo fa nessuno. E un magazzino aggiornato a metà è peggio di un magazzino non aggiornato, perché sembra affidabile.
Il risultato lo conoscono tutti: si riordina merce che c'è, si resta senza quella che serve, e la roba scaduta si scopre quando la si prende in mano.
Fra il documento e il magazzino c'è un passaggio che non si salta: la conferma. Il sistema non tocca una giacenza che tu non abbia visto.
Il file originale — PDF o foto — viene letto da un modello multimodale, senza passare da un OCR. In una fattura la struttura della tabella è l'informazione: quale prezzo appartiene a quale riga si capisce dalla posizione.
I materiali vengono riconosciuti confrontandoli con l'anagrafica; quelli nuovi si creano al volo. Ne esce un piano leggibile: cosa farei, su quale articolo, con quale sicurezza e cosa ho scartato.
Un tocco e il piano si applica in un'unica transazione: o tutto o niente. Da quel momento ogni movimento è collegato al documento che lo ha generato, e il file originale resta archiviato.
Nessun modulo che nessuno aprirà. Ogni funzione risponde a una domanda che qualcuno si fa davvero, in piedi, con una scatola in mano.
Bolle, fatture e ordini diventano movimenti. Il fornitore, il numero di documento e la data arrivano dalla testata; lotto, scadenza e prezzo dalla riga.
Si scarica scrivendo il lotto: materiale e scadenza si compilano da soli, e il sistema segnala se qualcosa non torna con quello che c'è in giacenza.
Primo a scadere, primo a uscire: il sistema propone la partita da consumare per prima e avvisa prima che diventi un problema. Una proposta, non un obbligo.
Quando un articolo scende sotto la sua soglia compare fra le proposte, raggruppate per fornitore. L'ordine lo generi tu, con un modulo pronto da mandare.
Merce rotta, mancante o già scaduta: si segnala con una foto e due parole. Da lì nascono il richiamo al fornitore, il reso e l'attesa della nota di credito.
Puntualità, discrepanze, non conformità, andamento dei prezzi e tempi medi di consegna, sempre con il denominatore, mai un voto sintetico.
Il sistema collega i documenti fra loro leggendo i riferimenti che si citano, e dice cosa è arrivato, cosa manca e cosa è stato fatturato in più.
Costo medio ponderato e valore complessivo, con quanti articoli non sono valorizzati. Un rincaro anomalo diventa un avviso, non una scoperta a fine anno.
Pensato per essere usato in piedi, col telefono in mano: le liste si leggono a schede e le note si dettano invece di scriverle.
L'AI di un magazzino ha un problema che l'AI di una chat non ha: qui i numeri diventano ordini, e un numero sbagliato detto con sicurezza si paga. Queste sono le regole che il programma applica sempre, non quando gli conviene.
Il modello sceglie quale domanda fare al database, non cosa il database risponde. Niente SQL generato dall'AI: le interrogazioni sono funzioni scritte a mano, di sola lettura, e i totali li fa il programma.
Se il documento non riporta la scadenza, il campo resta vuoto e si vede. Non si stima, non si deduce da altro, non si riempie con un valore plausibile: un dato inventato è peggio di un dato assente.
Il piano si vede prima di eseguirlo, con quello che il sistema farebbe e con quanta sicurezza. Sotto soglia il movimento nasce provvisorio: esiste, si vede, e aspetta.
Un errore si corregge con uno storno, che resta visibile accanto al movimento corretto. Lo storico delle giacenze resta ricostruibile giorno per giorno, ed è quello che serve quando i conti non tornano.
«Puntualità 87%» non significa niente da solo. Il sistema scrive sempre su quante consegne è calcolato, e quando il campione è troppo piccolo non calcola affatto.
Carichi, scarichi, anagrafiche, non conformità e ordini si registrano a mano, esattamente come li registrerebbe l'automatismo. Se il servizio AI non risponde il programma lo dice e prosegue: nessuna schermata si rompe. La copertura manuale è tracciata in una matrice, funzione per funzione, e le poche voci ancora scoperte sono elencate lì.
Giacenze e lotti, cosa sta finendo, cosa scade, movimenti e consumi, prezzi, documenti, fornitori e da chi si compra un articolo, reclami e merce arrivata male, stato degli ordini.
Ogni risposta è costruita solo sui dati che una funzione di lettura ha restituito, e porta con sé i collegamenti alle pagine dove verificarla in un clic. Se una domanda esce dal perimetro, il sistema lo dice e la mette in un registro delle domande senza risposta, che è la lista di cosa vale la pena aggiungere.
Un'applicazione web sola, un database, un servizio di background. Nessun cluster da amministrare, nessuna coda da monitorare, nessun motore OCR da installare.
ASP.NET Core MVC su .NET 10. Funziona su un telefono in magazzino e su un desktop in ufficio.
SQL Server con Entity Framework Core. Schema versionato in migrazioni: un database nuovo si allinea da solo.
Un Worker Service per i controlli periodici — soglie, scadenze, note di credito attese — con job ripetibili senza effetti doppi.
L'AI vive fuori dall'applicazione e si raggiunge via HTTP. Cambiare fornitore di modelli non tocca il magazzino.
Ogni file resta archiviato con la sua impronta digitale: la contestazione si regge sull'originale, non su quello che ne è stato letto.
Ruoli come lista estendibile — chi legge, chi opera, chi amministra — e un registro di cosa ha deciso l'AI, con la versione delle istruzioni.
Quello che SupplyFlow non fa oggi non è rimasto fuori per caso. Ogni funzione esclusa è stata discussa e motivata per iscritto. E dove rimandarla avrebbe avuto un prezzo, il posto per accoglierla è già nel database.
È la differenza fra un software da riscrivere e uno da estendere.
Dove una decisione indicava un campo da prevedere fin da subito anche se inutilizzato, quel campo c'è. Non è una funzione: è una porta lasciata aperta. Aggiungerlo oggi costa poco, introdurlo dopo il lancio significherebbe migrare i dati di tutti.
Ogni entità porta il proprio tenant e ogni interrogazione lo filtra, benché oggi il valore sia uno solo. Passare da un'istanza dedicata a un servizio cloud condiviso è una decisione di deployment, non una riscrittura.
Tutto ciò che il programma chiede a un modello passa da un'unica interfaccia, raggiunta via HTTP. Cambiare fornitore, portare i modelli in casa o sostituirli con i propri non tocca una riga di logica di magazzino.
Lo storage dei file originali è un'astrazione — disco, rete, oggetto in cloud — e i ruoli sono una lista estendibile, non un interruttore acceso/spento. Due punti dove ogni cliente grande chiede qualcosa di suo.
Ventotto documenti di architettura spiegano cosa è stato deciso, perché, e cosa è stato scartato. Chi riprende il progetto — un nostro sviluppatore o il vostro — non deve ricostruire le intenzioni leggendo il codice.
Studi odontoiatrici, laboratori, officine, laboratori alimentari: il nucleo è lo stesso, cambiano soglie, tipi di non conformità e il vocabolario. La personalizzazione parte dalla versione che vedete funzionare, non da un foglio bianco.
Una personalizzazione che parte da un sistema che gira è un'altra conversazione: si discute su cosa cambiare, non su cosa costruire.
La tabella qui sotto è la stessa che usiamo internamente per stimare: ogni estensione con il suo aggancio già presente e il suo ordine di grandezza. Non è una promessa di date ma è il punto di partenza onesto di un preventivo.
Nessuna riga di questa tabella è una scoperta dell'ultimo momento: sono le esclusioni decise all'inizio, con l'aggancio già predisposto e il costo di attivazione stimato. Detto adesso vale come impegno; scoperto alla prima demo varrebbe il contrario.
| Estensione | Oggi | Aggancio già presente | Attivazione |
|---|---|---|---|
| Risposte lette ad alta voce | a richiesta | Sintesi vocale del browser, già usata per l'input | bassa |
| Soglie di confidenza configurabili dall'interfaccia | a richiesta | Le soglie sono già parametri di configurazione | bassa |
| Riordino ricorrente a cadenza fissa | a richiesta | Proposta di riordino e servizio di background | bassa |
| Notifiche via email o push | scelta di prodotto | Coda avvisi unificata | bassa — ma oggi è una scelta, non un limite: moltiplicare i canali disperde l'attenzione |
| Anomalie statistiche di consumo | fase 2 | Storico movimenti completo dal primo giorno | bassa — aritmetica su dati che ci sono già, dopo alcuni mesi d'uso |
| Riconoscimento da foto del prodotto o dell'etichetta | fase 2 | Canale multimodale già in uso per i documenti | bassa-media — prompt e schema nuovi, infrastruttura invariata |
| Previsione della domanda e stagionalità | fase 2 | Le date dei movimenti sono raccolte come dato strategico | media — i dati ci sono, serve il modello: non prima di dodici mesi di storico |
| Servizio cloud multi-cliente | fase 2 | Tenant su ogni entità e filtro su ogni interrogazione | media — decisione di deployment, non riscrittura |
| Multi-sede e trasferimenti interni | fase 2 | Nessuno: richiede la sede sui movimenti | medio-alta — tocca ogni giacenza, ogni soglia, ogni movimento |
| Integrazione con un gestionale esistente | su commessa | La soluzione è predisposta ad accogliere un progetto di API | alta — un progetto per ogni gestionale da collegare |
| Distinta base e scarico per prestazione | su commessa | Modalità di scarico già prevista a tre livelli | alta — va costruita per verticale, e questo è il primo candidato |
| Tracciabilità di lotto regolamentare (UDI) | modulo a sé | Il lotto è già un campo su ogni movimento | alta — oggi il sistema sa quando scade un lotto, non su chi è stato usato: la distanza fra le due è un modulo intero, e non va promessa come inclusa |
| Modalità offline | non previsto | Nessuno | molto alta — sincronizzazione e conflitti sono un prodotto dentro il prodotto |
Le tre voci in fondo sono quelle su cui invitiamo a fermarsi prima di firmare: sono le più richieste e le più costose, e preferiamo dirlo in trattativa piuttosto che scoprirlo insieme a lavoro iniziato.
No, ed è una scelta precisa. I materiali nascono dal primo documento che li nomina, oppure li crei tu quando servono. Un'anagrafica da compilare prima di vedere il primo risultato è il motivo per cui questi programmi restano inutilizzati.
Per questo il piano si conferma. Prima di toccare il magazzino vedi cosa il sistema ha capito, riga per riga, con quanta sicurezza e cosa ha scartato; puoi correggere o annullare tutto. E se una lettura è andata storta si può rifare da capo: annulla i movimenti generati e rilegge il documento.
Il programma continua a funzionare e lo dice in chiaro, con un avviso in cima alla pagina. Tutto il lavoro operativo si fa a mano: carichi, scarichi, anagrafiche, non conformità, ordini e riordino. La copertura manuale è un requisito scritto e verificato funzione per funzione; le poche voci ancora scoperte — fra cui la rettifica di inventario e la riclassificazione manuale del tipo di documento — sono elencate nella stessa matrice e in lavorazione.
Dipende da come lo installi. L'intelligenza è dietro un unico confine HTTP, quindi può stare sullo stesso server, in una rete privata, o su un servizio esterno: è una decisione di configurazione, non un vincolo del prodotto.
Sì. Ogni decisione automatica viene registrata con la sua confidenza, la soglia applicata, la motivazione e la versione delle istruzioni con cui è stata presa. Senza quest'ultima, dopo un affinamento il registro non sarebbe più ricostruibile.
Un foglio di calcolo sa dirti quello che ci hai scritto. Qui il punto è che i dati ci finiscono da soli, che gli avvisi arrivano prima e non dopo, e che quando qualcosa non torna si risale al documento originale — che è archiviato, con la sua impronta.
È il caso per cui il prodotto è stato costruito così. La personalizzazione parte dalla versione che si vede funzionare, non da un'analisi su carta: si discute cosa cambiare, non cosa costruire. La tabella delle estensioni riporta per ciascuna l'aggancio già presente e l'ordine di grandezza dell'intervento, ed è la stessa che usiamo per preventivare.
Un prodotto che gira, non una presentazione: si può caricare un documento vero e vedere cosa succede. Sotto, ventotto documenti di architettura che spiegano ogni decisione e le alternative scartate, uno schema dati già predisposto per le estensioni di fase 2, e un confine unico verso l'AI che rende il fornitore di modelli una scelta reversibile. Le funzioni mancanti sono elencate con il loro costo: è quello che permette di valutare senza sorprese.
Poco, ed è una decisione presa apposta all'inizio. Tutto ciò che il programma chiede a un modello passa da un'unica interfaccia raggiunta via HTTP: il magazzino non sa quale modello ci sia dietro. Vale anche per portare i modelli dentro la rete del cliente, che per certi settori è un requisito e non una preferenza.
Il modo più rapido per capire se SupplyFlow serve al tuo magazzino è vederlo leggere un documento tuo, con i tuoi articoli e i tuoi fornitori. Vale anche per chi sta valutando una versione su misura o un ingresso nel progetto: la dimostrazione parte da un sistema che funziona, non da una presentazione.