01 / Caso studio 02
Manifattura arredo su misura — 22 persone
Middleware fra e-commerce, gestionale e corrieri
Ogni ordine passava per tre mani prima di diventare un pacco: una lo riscriveva, una lo spediva, una avvisava il cliente. Ho tolto le tre mani e lasciato il controllo dove serviva davvero, cioè sulle eccezioni.
Stack dell'intervento
- Node.js
- TypeScript
- PostgreSQL
- Redis
- Webhook
- API corrieri
- Docker
- Grafana
Coda con ritentativi progressivi e coda di scarto: un ordine che non passa non si perde e non blocca gli altri. È la differenza fra un'automazione e una scommessa.
- Settore
- Arredo su misura, vendita diretta online e rivenditori
- Sistemi coinvolti
- Negozio online, gestionale, due corrieri, e-mail
- Durata
- 7 settimane
- Intervento
- Middleware a eventi con riconciliazione notturna
Che cosa stai leggendo
02 / Contesto
Da dove si parte
Ventidue persone, due canali di vendita, un magazzino solo
Un'azienda che produce arredo su misura e vende sia ai rivenditori sia direttamente online. Il canale online è cresciuto in tre anni fino a valere un terzo del fatturato, ma i processi sono rimasti quelli di quando erano cinque ordini a settimana.
Il negozio online è cresciuto più in fretta dei processi
Da cinque ordini a settimana a sessantadue nei giorni di picco. Ogni volta che il volume raddoppiava, la risposta era assumere mezza persona in più in ufficio ordini. È la curva che porta a un ufficio di quattro persone che fanno lavoro da robot.
Il gestionale non è collegato al negozio online
Sono due mondi separati: il negozio conosce i prodotti e i clienti finali, il gestionale conosce le distinte, i costi e la fatturazione. In mezzo, una persona con due schermi aperti.
Due corrieri, due portali, due modi di fare le cose
Un corriere per i pacchi piccoli, uno per i voluminosi. Entrambi con il loro sito su cui incollare l'indirizzo, generare l'etichetta e stampare. Nessuno dei due parlava con qualcosa.
Lo stock era un'opinione
Il negozio online teneva una sua quantità, aggiornata a mano il lunedì. Il magazzino aveva la sua, vera. Quando le due divergevano vinceva il negozio, e la telefonata di scuse partiva dopo tre giorni.
Dimensione
- Dipendenti
- 22, di cui 3 in ufficio ordini
- Ordini online
- 35 al giorno di media, 62 nei picchi
- Referenze a catalogo
- circa 600, molte configurabili
- Spedizioni
- 2 corrieri, circa 40 colli al giorno
Sistemi in campo
- Negozio online
- piattaforma cloud con webhook e API
- Gestionale
- on-premise con servizi web esposti
- Corrieri
- API di generazione lettera di vettura
- Avvisi al cliente
- e-mail transazionali
03 / Punto di partenza
Misurato prima, non ricordato dopo
Quattro minuti a ordine, moltiplicati per un anno
Ho cronometrato il lavoro invece di chiederlo. Quattro minuti sembrano niente finché non li moltiplichi per trentacinque ordini al giorno e per duecentoventi giorni lavorativi: sono quattrocentocinquanta ore all'anno, cioè una persona per tre mesi.
Tre passaggi manuali su ogni singolo ordine
Copia dell'ordine nel gestionale, creazione della spedizione sul portale del corriere, invio del tracking al cliente. Nessuno dei tre richiede pensiero: richiedono attenzione, che è la risorsa che si esaurisce prima.
L'1,8% degli ordini vendeva roba che non c'era
Stock allineato a mano una volta a settimana: fra il lunedì e il venerdì il negozio poteva vendere pezzi già usciti. Ogni sovravendita è una telefonata, spesso un rimborso, sempre una recensione a rischio.
Il tracking arrivava dopo nove ore
Perché veniva mandato quando l'addetta finiva il giro delle spedizioni, cioè a fine giornata. Per il cliente che ha comprato la mattina, nove ore di silenzio dopo aver pagato sono il momento in cui scrive «è arrivato l'ordine?» all'assistenza — generando altro lavoro.
I resi vivevano in una casella di posta
Nessun sistema li registrava. La conseguenza non era il disordine: era che nessuno sapeva quale prodotto tornasse indietro più spesso, cioè l'informazione più utile che l'azienda avesse e non usava.
Le grandezze rilevate prima dell'intervento
Rilevate su tre settimane di traffico ordinario, senza campagne in corso.
| Grandezza | Valore rilevato | Come è stata misurata |
|---|---|---|
| Tempo manuale per ordine | 4,1 minuti | Cronometraggio su 40 ordini reali, tre operatori diversi |
| Ordini in sovravendita | 1,8% al mese | Ordini annullati o rimborsati per indisponibilità, estratti dal negozio |
| Ritardo di invio del tracking | 9,2 ore di media | Differenza fra creazione della spedizione e invio dell'e-mail |
| Richieste di assistenza «dov'è il mio ordine» | 31% dei ticket | Classificazione manuale di 200 ticket consecutivi |
| Errori di digitazione sull'indirizzo | 1,2% delle spedizioni | Giacenze e rispedizioni comunicate dai corrieri su 3 mesi |
La riga sui ticket è quella che ha convinto la proprietà: il 31% dell'assistenza clienti esisteva solo perché il tracking partiva tardi. Non era un costo di logistica, era un costo di silenzio.
04 / Diagnosi
Che problema è davvero
Non mancava un collegamento. Mancava un posto dove gli ordini potessero sbagliare
Automatizzare il caso normale è facile. Quello che decide se l'automazione regge è cosa succede agli ordini che non rientrano nel caso normale.
Il primo istinto — e la prima richiesta — era «collega il negozio al gestionale». Ma il 6% degli ordini non è normale: indirizzo incompleto, prodotto configurato fuori catalogo, pagamento in verifica, cliente che scrive «citofonare Rossi» nella via. Un collegamento diretto o li rifiuta o li fa passare sbagliati, e in entrambi i casi qualcuno se ne accorge dal cliente. Serviva un posto dove un ordine potesse fermarsi, essere visto da una persona e ripartire — senza bloccare gli altri cinquantacinque. Quel posto è la coda di scarto, ed è la parte del progetto che nessuno chiede mai in fase di preventivo e che tutti usano tutti i giorni.
Come sono arrivato alla diagnosi
- Cronometraggio del lavoro reale su quaranta ordini, con tre operatori diversi, in giorni diversi della settimana.
- Classificazione a mano di duecento ticket di assistenza consecutivi, per capire quale lavoro genera altro lavoro.
- Estrazione di tre mesi di ordini e conteggio di quanti non rientravano nel percorso normale, per categoria di anomalia.
- Prova delle API dei due corrieri su ambiente di collaudo, compreso il comportamento con indirizzi malformati — che è la cosa che poi succede davvero.
- Mezza giornata in magazzino a guardare come si prepara fisicamente un collo, perché l'ordine in cui accadono le cose sul pavimento non è quello che immagina chi guarda uno schermo.
Cosa è saltato fuori
- Il 6,3% degli ordini richiedeva un intervento umano. Automatizzare il 93,7% e gestire bene il resto vale più che inseguire il 100%.
- Le sovravendite si concentravano su undici referenze su seicento: quelle a bassa giacenza e alta rotazione. Un allineamento in tempo reale su tutto il catalogo era sovradimensionato per un problema che riguardava l'1,8% delle referenze.
- Il negozio online mandava webhook doppi in caso di lentezza. Senza idempotenza avremmo creato ordini doppi nel gestionale — cioè un problema peggiore di quello di partenza.
- L'orario di ritiro del corriere alle 16:30 era il vero vincolo del processo: tutto ciò che si automatizza a valle di quell'ora non fa guadagnare un giorno di consegna, quindi non vale il costo di essere in tempo reale.
05 / Architettura
Cosa ho costruito
Una coda in mezzo, e nessun ordine che si perde per strada
Ogni ordine entra in una coda, attraversa passi dichiarati, e in qualunque punto può fermarsi senza fermare gli altri. Chi guarda gli scarti è una persona dell'ufficio ordini, non io.
Il negozio notifica l'ordine con un webhook; il middleware lo accetta subito, gli assegna una chiave derivata dal contenuto e lo mette in coda. Da lì passa per normalizzazione dell'indirizzo, verifica della disponibilità, creazione nel gestionale, generazione della lettera di vettura presso il corriere giusto per volume, invio del tracking al cliente. Ogni passo può fallire: fallendo, l'ordine finisce nella coda di scarto con il motivo scritto in italiano, e chi lo guarda può correggerlo e rimandarlo. Di notte una riconciliazione confronta gli ordini del negozio con quelli del gestionale e segnala le differenze: è la rete che prende quello che sfugge a tutto il resto.
Flusso dei dati
Ogni ordine ha una chiave che non si ripete
Derivata dall'identificativo del negozio. Se lo stesso webhook arriva due volte — e arriva, con le piattaforme cloud sotto carico — il secondo passaggio non crea niente. Senza questo, il primo giorno di saldi avremmo avuto ordini doppi in produzione.
Lo stock è riservato, non solo controllato
Quando un ordine entra, la quantità viene riservata prima ancora che il gestionale lo confermi. Due ordini simultanei sull'ultimo pezzo non possono più passare entrambi. La riserva scade da sola se l'ordine non si completa, così nessun pezzo resta bloccato per un pagamento mai andato a buon fine.
Undici referenze in tempo reale, il resto ogni ora
L'allineamento continuo costa; farlo su tutto il catalogo sarebbe stato pagare per seicento referenze un problema che ne riguardava undici. Le referenze critiche sono identificate da una regola su rotazione e giacenza, quindi l'elenco si aggiorna da sé.
Gli indirizzi si normalizzano prima di arrivare al corriere
CAP e provincia verificati, note di consegna separate dalla via, caratteri che le API dei corrieri rifiutano ripuliti. Quello che resta ambiguo non viene indovinato: finisce negli scarti con la riga da correggere in evidenza.
Il corriere lo sceglie una regola, non una persona
Volume e peso del collo determinano il vettore, con la possibilità di forzarlo a mano quando serve. La regola è un dato modificabile dall'ufficio, non una riga di codice: quando cambia il contratto con un corriere, non cambia il software.
La riconciliazione notturna è la rete di sicurezza
Ogni notte si confrontano gli ordini dei due sistemi e si segnala per differenza. In sette settimane di esercizio ha trovato quattro casi che tutti gli altri controlli non avevano visto — tre webhook mai arrivati e un ordine creato durante un aggiornamento del gestionale.
06 / Decisioni
Ogni scelta con la sua alternativa scartata
Le cinque scelte che hanno determinato tutto il resto
Le prime due sono le uniche che, sbagliate, avrebbero reso il progetto irrecuperabile senza rifarlo.
Scelte tecniche e loro costo
| Decisione | Alternativa scartata | Perché così |
|---|---|---|
| Coda con ritentativi e coda di scarto | Chiamate dirette in sequenza a ogni sistema | Con le chiamate dirette un corriere lento blocca tutti gli ordini dietro. Costo: un componente in più (Redis) e una pagina di scarti da presidiare ogni giorno. |
| Idempotenza su chiave derivata dall'ordine | Controllo «esiste già?» prima di scrivere | Il controllo preventivo ha una finestra in cui due richieste simultanee passano entrambe. Costo: una tabella di chiavi da conservare e ripulire. |
| Riserva dello stock all'ingresso dell'ordine | Verifica della disponibilità al momento della conferma | Fra verifica e conferma passano secondi in cui un altro ordine può prendere l'ultimo pezzo. Costo: le riserve scadute vanno gestite, e per due settimane hanno tenuto occupati pezzi che erano liberi. |
| Tempo reale solo sulle referenze critiche | Allineamento continuo di tutto il catalogo | Il beneficio si concentrava su 11 referenze su 600. Costo: sulle altre lo stock può essere vecchio di un'ora, e in un picco anomalo una sovravendita è ancora possibile. |
| Scelta del corriere come regola modificabile dall'ufficio | Regola scritta nel codice | I contratti con i corrieri cambiano più spesso del software. Costo: una schermata di configurazione in più da costruire e documentare. |
07 / Come è andata
Sette settimane, quattro fasi
Le fasi, con quello che è stato consegnato a ognuna
L'ordine delle fasi segue il rischio, non il valore percepito: prima si mette in sicurezza il flusso principale, poi si aggiungono le comodità. È il contrario di come si costruisce una demo.
- 01
Misura e classificazione
Cronometraggio, classificazione dei ticket, estrazione di tre mesi di ordini per capire quante e quali sono le anomalie. Prova delle API dei corrieri con dati sporchi apposta.
- Cosa ricevi
- Elenco delle anomalie per frequenza e costo, con la decisione su quali automatizzare e quali no
- Durata
- 1 settimana
- 02
Ordini verso il gestionale
Coda, idempotenza, normalizzazione degli indirizzi, creazione dell'ordine nel gestionale e prima versione della pagina degli scarti. Due settimane in doppio binario: automatico e manuale insieme, con confronto giornaliero.
- Cosa ricevi
- Ordini creati automaticamente, con scarti visibili e correggibili dall'ufficio
- Durata
- 3 settimane
- 03
Spedizioni e tracking
Regola di scelta del corriere, generazione della lettera di vettura, invio automatico del tracking, ritorno degli stati di spedizione al negozio.
- Cosa ricevi
- Etichette generate senza aprire i portali dei corrieri e tracking al cliente in pochi minuti
- Durata
- 2 settimane
- 04
Stock, riconciliazione, consegna
Riserva dello stock, allineamento delle referenze critiche, riconciliazione notturna, avvisi, documentazione e formazione.
- Cosa ricevi
- Nessuna sovravendita nel percorso normale, controllo notturno attivo e manuale operativo
- Durata
- 1 settimana
Le due settimane in doppio binario della fase 02 sono state un costo puro: l'ufficio ha fatto il lavoro due volte. Le rifarei, perché sono l'unica cosa che permette di dire «l'automatico ha fatto lo stesso del manuale per dieci giorni di fila» invece di sperarlo.
08 / Attriti
Quello che è andato storto
Tre cose che non erano nel piano
Due su tre sono capitate in produzione, con clienti veri dall'altra parte. Le racconto perché sono la ragione di metà delle scelte descritte sopra.
Le riserve di stock sono rimaste appese
Nella prima settimana, gli ordini con pagamento non completato tenevano la merce riservata all'infinito: dopo cinque giorni il magazzino risultava vuoto su tre referenze che erano invece a scaffale. Mancava la scadenza automatica della riserva, che c'era nel disegno e non nel codice. Corretto in mezza giornata, ma è finito nella lista dei controlli che ora faccio prima di ogni avvio.
Il corriere ha cambiato formato di risposta senza dirlo
Un campo di stato che prima era numerico è diventato testuale, di venerdì. Le lettere di vettura hanno smesso di generarsi e gli ordini sono finiti tutti negli scarti — che è esattamente il comportamento che volevo: si sono fermati in modo visibile invece di partire sbagliati. L'ufficio ha spedito a mano per mezza giornata mentre correggevo. Da lì ho aggiunto un controllo automatico giornaliero sul formato delle risposte dei fornitori esterni.
L'ufficio ordini aveva paura di restare senza lavoro
Non è un attrito tecnico ed è il più serio dei tre. Per due settimane gli scarti non venivano lavorati e nessuno diceva perché. È venuto fuori in una pausa caffè: le persone pensavano che l'automazione fosse l'anticamera di un licenziamento. Si è risolto con una conversazione della proprietà, non con il software — ma se non me ne fossi accorto, il progetto sarebbe stato «tecnicamente riuscito» e praticamente fermo.
09 / Risultati
Stesse grandezze, stesse fonti
Cosa è cambiato, misurato dove era stato misurato prima
Rilevazione ripetuta a sei settimane dalla consegna, su tre settimane di traffico ordinario e con gli stessi criteri della partenza.
Prima e dopo, con la fonte di ogni numero
| Grandezza | Prima | Dopo | Come è misurata |
|---|---|---|---|
| Tempo manuale per ordine (percorso normale) | 4,1 minuti | 0 minuti | Cronometraggio non più applicabile: il percorso normale non ha passaggi umani |
| Ordini che richiedono un intervento umano | 100% | 5,8% | Conteggio degli ordini finiti negli scarti sul totale |
| Ordini in sovravendita | 1,8% al mese | 0,1% al mese | Ordini annullati o rimborsati per indisponibilità, stessa estrazione |
| Ritardo di invio del tracking | 9,2 ore | 8 minuti | Differenza fra creazione della spedizione e invio dell'e-mail |
| Ticket «dov'è il mio ordine» | 31% dei ticket | 9% dei ticket | Classificazione di 200 ticket consecutivi, stesso metodo |
| Errori di digitazione sull'indirizzo | 1,2% delle spedizioni | 0,5% delle spedizioni | Giacenze e rispedizioni comunicate dai corrieri |
L'ultima riga non è scesa a zero e non poteva: metà di quegli errori li fa il cliente quando compila il modulo, e il software può normalizzare un indirizzo, non indovinare un civico che non esiste. È rimasta la parte di controlli in fase di acquisto, che è un intervento sul negozio online e non su questo progetto.
Quello che non si misura in tabella
- L'ufficio ordini è passato dal ricopiare al presidiare: guarda venti scarti al giorno invece di trentacinque ordini interi, e sono i venti che richiedono una testa.
- Il picco di dicembre è stato assorbito senza personale stagionale, che era il vero motivo per cui la proprietà aveva chiamato.
- I resi hanno finalmente uno storico, e dopo tre mesi ha mostrato che due referenze su seicento generavano un quinto dei rientri.
10 / Dopo
Perimetro e manutenzione
Cosa è entrato nel progetto e cosa no
Il negozio online non è stato toccato, ed era una condizione dichiarata: rifare la vetrina mentre si sistema il retro significa non sapere più a cosa attribuire i risultati.
Consegnato
- Middleware a eventi in esercizio, con coda, ritentativi e scarti
- Creazione automatica degli ordini nel gestionale
- Generazione delle lettere di vettura sui due corrieri
- Invio automatico del tracking e ritorno degli stati al negozio
- Riserva dello stock e allineamento delle referenze critiche
- Riconciliazione notturna con avviso via e-mail sulle differenze
- Pagina degli scarti in italiano, gestita dall'ufficio ordini
Fuori perimetro, dichiarato in partenza
- Rifacimento o restyling del negozio online
- Validazione dell'indirizzo in fase di acquisto (lato negozio)
- Gestione dei resi oltre la registrazione dello storico
- Integrazione con marketplace terzi
- Pianificazione della produzione a partire dagli ordini
La lezione che mi porto da questo lavoro
La qualità di un'automazione non si vede sul caso normale, si vede su come fallisce. Il pezzo di software di cui vado più fiero in questo progetto è una tabella con dentro gli ordini che non sono passati e il motivo scritto in italiano: costa poco, non si vede in una demo, ed è l'unica ragione per cui l'ufficio si fida abbastanza da non tenere aperto anche il vecchio processo per sicurezza.
11 / Obiezioni
Le domande che mi fanno su questo caso
Le tre domande che arrivano sempre
Le stesse tre, in tre settori diversi.
- Non bastava un servizio di automazione già pronto?
- Per collegare due sistemi molto diffusi con campi standard, spesso sì, e lo consiglio. Qui saltava su tre punti: la riserva dello stock, la regola di scelta del corriere e la coda di scarto con la correzione a mano. Sono esattamente le parti che i servizi generici non fanno, e sono anche quelle che decidono se l'ufficio si fida dell'automazione o tiene aperto il processo vecchio in parallelo.
- Cosa succede se il gestionale è spento o il corriere non risponde?
- Gli ordini restano in coda e vengono ritentati con attese crescenti. Se dopo un numero definito di tentativi non passano, finiscono negli scarti con il motivo, e chi presidia riceve un avviso. Nessun ordine si perde e nessuno parte a metà: la proprietà che conta non è che vada sempre bene, è che quando va male si sappia esattamente cosa è rimasto indietro.
- Quanto ci vuole prima di vedere un effetto?
- In questo progetto il primo effetto misurabile — ordini creati senza ribattitura — è arrivato alla quarta settimana, con altre due di doppio binario prima di spegnere il processo manuale. Diffido dei preventivi che promettono risultati in dieci giorni: nella maggior parte dei casi vuol dire che si salta la misurazione di partenza, e senza quella il miglioramento non si può dimostrare.
12 / Correlate
Dove approfondire
Se questo caso somiglia al tuo
Il servizio spiega il metodo in generale, gli altri casi lo mostrano su problemi diversi.
13 / Contatto
Trenta minuti, senza impegno
Quanti minuti costa un tuo ordine?
Se non lo sai, è la prima cosa che guardiamo insieme. In mezz'ora si capisce se il problema vale un intervento o se conviene lasciare le cose come stanno — e capita che la risposta sia la seconda.
Se vuoi arrivare preparato, scarica il calcolatore del costo del lavoro ombra e portalo compilato.
Tutti i dati di contattoCome funziona la chiamata
- Minuti 0–10
- Che percorso fa un ordine oggi, dal clic al pacco
- Minuti 10–20
- Dove si ferma, chi lo sblocca e quante volte al giorno
- Minuti 20–30
- Cosa automatizzerei per primo e cosa lascerei a mano