16 giugno 2026 | 7 min lettura | Caso studio

Caso studio: i segnali nascosti in un magazzino

Siamo partiti da un dataset pubblico di logistica usato su Kaggle. Quello che Rover ha trovato, seguendo sette rami di indagine, non è un’unica anomalia ma una costellazione di segnali: stockout, stock fermo, colli di bottiglia e capitale immobilizzato.

Questo caso studio parte da un dataset pubblico di logistica di magazzino e mostra il report Rover completo generato da Whispers.

L’input era volutamente normale: livelli di stock, punti di riordino, lead time, forecast di domanda, fulfillment rate, tempo di picking, unit economics e punteggi di layout. La parte interessante non è la tabella in sé, ma il percorso che Rover ha scelto dentro quei dati.

C’è un punto importante da esplicitare: questa è una run vanilla di Rover. Il sistema non ha ricevuto alcuna descrizione del dataset, nessun contesto operativo aggiuntivo e nessuna indicazione manuale su cosa cercare.

Kaggle Logistics Warehouse Dataset

Rows: 3,204 | Columns: 23 | Data points: 73,692 | Categories: Apparel, Automotive, Electronics, Groceries, Pharma

item_id, category, stock_level, reorder_point, reorder_frequency_days, lead_time_days, daily_demand, demand_std_dev, item_popularity_score, storage_location_id, zone, picking_time_seconds, handling_cost_per_unit, unit_price, holding_cost_per_unit_day, stockout_count_last_month, order_fulfillment_rate, total_orders_last_month, turnover_ratio, layout_efficiency_score, last_restock_date, forecasted_demand_next_7d, KPI_score

ITM10000Pharma283214449.851.560.43L82B1063.61117.81.1400.87003.330.332024-02-17184.370.556
ITM10001Automotive301529623.342.550.69L15A453.54178.81.0930.7973610.360.982024-10-01221.940.723
ITM10002Groceries1326011837.693.150.62L4B1770.5254.050.9570.7581414.320.872024-04-0753.850.68
ITM10003Automotive3464613533.692.790.21L95A392.6431.11.900.969942.080.292024-01-2792.040.488
ITM10004Automotive49554649.585.230.31L36D351.4104.970.6350.832995.650.962024-05-17194.580.67

Rover non ha ricevuto una dashboard costruita a mano. Ha esplorato i dati, proposto analisi candidate, assegnato uno score, scelto il ramo più promettente e usato ogni risultato per decidere la domanda successiva. L’albero decisionale è il prodotto: mostra come l’analisi si muove dal rischio di stockout fino all’allocazione del capitale.

Analisi di Ottimizzazione dell'Inventario: Rischio Stockout e Priorità di Riordino

Analisi di Ottimizzazione dell'Inventario: Rischio Stockout e Priorità di Riordino

Questa indagine è stata condotta per valutare la stabilità operativa e finanziaria dell'inventario, partendo dalla necessità di qualificare il rischio di esaurimento scorte attraverso il confronto tra livelli attuali e domanda prevista. L'analisi si è evoluta naturalmente da una prospettiva reattiva (identificazione delle criticità) verso un approccio più strutturale, esplorando le cause logistiche e le inefficienze finanziarie che impattano sul servizio al cliente.

Il percorso investigativo si è articolato attraverso sette passaggi complementari:

Calcolo del rapporto rischio (forecasted_demand_next_7d / stock_level) per articoli ad alto turnover

Correlazione tra efficienza del layout e articoli critici

Matrice costi-inefficienza (holding_cost vs order_fulfillment_rate)

Visualizzazione multi-dimensionale delle criticità economiche

Analisi comparativa dei KPI per categoria con identificazione degli outlier

Concentrazione del capitale immobilizzato (analisi Pareto)

Prioritizzazione operativa degli articoli in sotto-scorta proiettata

Analisi del Rischio di Rottura Scorte

La prima fase ha identificato gli articoli con il più alto rapporto tra domanda prevista nei prossimi 7 giorni e scorte disponibili, concentrandosi su quelli con turnover_ratio elevato (≥14.75). Questo approccio ha isolato 21 articoli critici con rapporti di rischio compresi tra 0.386 e 8.22.

Gli articoli più critici includono ITM10388 (Electronics) con un risk_ratio di 8.22, ITM10024 (Electronics) a 3.89, e ITM10878 (Automotive) a 3.85. La distribuzione per categoria mostra una prevalenza di articoli Automotive (6) ed Electronics (5) tra i casi più rischiosi.

Top 15 Articoli per Rischio di Stockout (Ratio Domanda/Scorte)

L'estrema volatilità di alcuni articoli, con ratio superiori a 3, evidenzia la necessità di una revisione immediata dei punti di riordino. La correlazione tra item_popularity_score e stockout_count_last_month risulta statisticamente non significativa (-0.0006), suggerendo che i problemi di approvvigionamento non sono direttamente correlati alla popolarità degli articoli.

Efficienza del Layout e Impatto Operativo

Avendo identificato i 20 articoli più a rischio, il passo successivo è stato verificare se le inefficienze derivassero da problemi di posizionamento fisico. Il confronto tra il layout_efficiency_score di questi articoli critici e la media globale di 0.605 ha rivelato pattern interessanti.

Efficienza Layout: Articoli a Rischio vs Media Globale

L'analisi rivela una distribuzione eterogenea: mentre alcuni articoli critici come ITM10776 e ITM10205 presentano un layout_efficiency_score eccellente (0.96), altri come ITM10602 (0.29) e ITM10804 (0.52) mostrano gravi inefficienze di posizionamento. Il 45% degli articoli a rischio presenta un'efficienza inferiore alla media globale, suggerendo che il layout fisico contribuisce significativamente ai problemi di stockout.

Matrice Costi-Inefficienza

L'analisi si è poi concentrata sui 15 articoli con i più alti costi di mantenimento giornalieri (holding_cost_per_unit_day) che presentano contemporaneamente un order_fulfillment_rate inferiore alla media di 0.85. Questa matrice evidenzia dove il capitale viene immobilizzato senza garantire un servizio adeguato.

Matrice Costi-Inefficienza per Categoria

La concentrazione nel quadrante inferiore destro (alto costo, basso fulfillment) conferma l'inefficienza del capitale circolante. Gli articoli Electronics dominano questa zona critica con 4 su 15 posizioni, seguiti da Groceries (4) e altri settori.

L'articolo più problematico è ITM10517 (Automotive) con holding_cost di 1.98 EUR/giorno e fulfillment rate del 73%, rappresentando un caso emblematico di capitale inefficientemente allocato.

Analisi dei KPI per Categoria

L'analisi comparativa dei KPI_score per categoria ha rivelato significative differenze nelle performance operative. La distribuzione generale presenta una media di 0.60 con una deviazione standard di 0.11, evidenziando una moderata variabilità tra gli articoli.

Distribuzione KPI Score per Categoria

L'analisi ha identificato 6 outlier significativi (0.19% del dataset): ITM10558 (Electronics, 0.924) e ITM13152 (Groceries, 0.936) rappresentano performance eccezionali, mentre ITM10063 (Apparel, 0.273), ITM10517 (Automotive, 0.265), ITM10936 (Electronics, 0.259) e ITM12248 (Electronics, 0.279) mostrano criticità severe.

La categoria Electronics presenta la maggiore dispersione (std: 0.116), con il range più ampio tra performance eccellenti e critiche, indicando una profonda instabilità operativa interna che richiede un intervento strutturale mirato.

Concentrazione del Capitale Immobilizzato

L'analisi del valore totale dell'inventario (stock_level × unit_price) ha rivelato una significativa concentrazione di capitale. Il valore complessivo ammonta a 27.21 milioni di EUR, distribuito tra le categorie con Pharma in testa (6.10M EUR), seguita da Electronics (5.71M EUR) e Apparel (5.40M EUR).

Concentrazione Capitale: Top 10 Articoli (Analisi Pareto)

I primi 10 articoli rappresentano il 3.42% del valore totale dell'inventario, con ITM10195 (Groceries) che da solo vale 97.575 EUR. Questa forte concentrazione di valore evidenzia l'importanza critica di monitorare attentamente questi asset ad alto impatto finanziario per le decisioni di gestione del rischio.

Priorità Operative di Riordino

L'analisi finale ha identificato gli articoli che richiedono riordino immediato: quelli con forecasted_demand_next_7d elevata e stock_level inferiore al reorder_point. Sono stati individuati 87 articoli in questa condizione critica, distribuiti tra tutte le categorie.

Top 10 Priorità di Riordino (Domanda Proiettata vs Stock Deficit)

La categoria Automotive domina la lista con 25 articoli critici e una domanda media proiettata di 153.6 unità per i prossimi 7 giorni. ITM10743 rappresenta il caso più urgente con una domanda prevista di 299.94 unità ma solo 44 unità in stock contro un reorder_point di 99.

Conclusioni e Raccomandazioni

L'indagine ha rivelato che il rischio di stockout non dipende esclusivamente dalla domanda, ma deriva da un mix complesso di fattori: efficienza del layout fisico inadeguata (specialmente per la categoria Electronics), capitale immobilizzato in articoli a bassa rotazione e politiche di riordino non ottimizzate.

Le evidenze principali includono:

21 articoli ad alto turnover presentano rischio critico di stockout, con 8 casi che superano un risk_ratio di 1.5

Il 45% degli articoli critici ha un layout_efficiency_score inferiore alla media globale

15 articoli combinano alti costi di mantenimento (>1.93 EUR/giorno) con basso fulfillment rate (<0.85)

I primi 10 articoli per valore assorbono il 3.42% del capitale totale (927.434 EUR su 27.21M EUR)

87 articoli richiedono riordino immediato, con Automotive che presenta il carico più consistente

Le azioni prioritarie raccomandate sono:

Riorganizzare immediatamente il posizionamento fisico degli articoli critici con layout_efficiency_score <0.60

Revisionare le scorte per i 10 articoli Pareto ad alto valore per ottimizzare l'allocazione del capitale

Eseguire il piano di riordino prioritario per gli 87 articoli identificati, concentrandosi sui primi 20 per urgenza

Implementare un monitoraggio sistematico che integri i costi di mantenimento nelle decisioni quotidiane di riapprovvigionamento

Il monitoraggio futuro deve integrare più costantemente la variabile 'costo di mantenimento' nelle decisioni operative per evitare l'accumulo di capitale inefficientemente allocato in articoli a bassa performance di servizio.

Anteprima dell’albero decisionale del magazzino

Una vista d’insieme del decision tree Rover prima del walkthrough step-by-step.

Prima di entrare nel dettaglio dei singoli step, vale la pena vedere la mappa completa una volta. Subito sotto mostriamo, per ogni scelta vincente, cosa è successo dietro le quinte, dal set di candidati fino alla selezione finale, rendendo visibile la logica di ogni decisione.

Decision tree

Step 1

Identifica gli articoli critici calcolando il rapporto tra forecasted_demand_next_7d e stock_level, filtrando solo quelli con un alto turnover_ratio, per mappare il rischio imminente di esaurimento scorte.

Questo approccio combina tre variabili critiche per isolare il rischio operativo immediato, fornendo decisioni azionabili per le prossime scorte. Risponde direttamente all'esigenza di gestire il turnover rispetto al rischio di stockout.

Step 2

Identifica i primi 20 articoli per rischio (utilizzando il rapporto forecasted_demand_next_7d / stock_level) e confronta la loro layout_efficiency_score con la media globale per determinare se il basso rendimento è correlato a problemi di posizionamento fisico.

Questa analisi sfrutta direttamente i dati sul rischio calcolati nel passaggio precedente, mettendoli in relazione con la layout_efficiency_score per isolare una causa radice specifica. È il passo logico più solido per trasformare le osservazioni numeriche in indicazioni operative concrete.

Step 3

Identifica i primi 15 articoli in ordine di 'holding_cost_per_unit_day' che presentano anche un 'order_fulfillment_rate' inferiore alla media (0.85) per evidenziare i prodotti in cui capitali immobilizzati e scarsa qualità del servizio coincidono (matrice dei costi-inefficienza).

Questa query crea una matrice costo-inefficienza che evidenzia dove l'azienda sta perdendo capitale in mantenimento per articoli che comunque non soddisfano la domanda. È un approccio decisionale che concretizza i costi finanziari precedentemente solo accennati nelle metriche.

Step 4

Crea un grafico a dispersione con bolle (bubble chart) mettendo a confronto 'holding_cost_per_unit_day' sull'asse X e 'order_fulfillment_rate' sull'asse Y, con la dimensione delle bolle basata su 'total_orders_last_month' per isolare gli assett ad alta criticità economica e basso rendimento.

Il bubble chart permette di visualizzare contemporaneamente l'impatto economico (costi di mantenimento), il livello di servizio e il volume di ordini, isolando gli articoli più problematici. È uno strumento di sintesi decisionale estremamente potente che valorizza le metriche finanziarie precedentemente analizzate.

Step 5

Effettua un'analisi comparativa (boxplot) dei KPI_score suddivisi per category, aggiungendo una linea di riferimento per la media globale, per individuare anomalie di performance (outlier) all'interno di ciascun settore.

Utilizzare un boxplot per i KPI_score permette di visualizzare non solo le prestazioni medie, ma anche la dispersione e gli outlier, fornendo una visione più profonda del successo operativo rispetto ai test di media aggregata. È l'approccio ideale per identificare segmenti che soffrono di instabilità interna nelle operazioni.

Step 6

Calcola il valore totale del capitale immobilizzato (stock_level * unit_price) per categoria ed evidenzia la concentrazione di valore (pareto) effettuando un ranking dei primi 10 'item_id' per valore di inventario assoluto.

Il calcolo del capitale immobilizzato è un insight finanziario ad alto valore che completa le precedenti analisi basate sui costi di mantenimento. L'approccio Pareto permetterà di focalizzare le future azioni di ottimizzazione sugli articoli più impattanti.

Step 7

Identificare gli articoli con il più alto 'forecasted_demand_next_7d' che presentano anche un 'stock_level' inferiore al 'reorder_point' (sotto-scorta proiettata) e mappare la loro distribuzione per category per evidenziare le priorità di riordino.

Si concentra sull'azione operativa immediata: identificare gli articoli a rischio imminente di esaurimento con alta domanda. Il confronto tra stock attuale e punto di riordino è fondamentale per le priorità di pianificazione logistica.

Il report Rover mostrato qui è stato generato dal report 0c0f3e9a-e3cb-46aa-85c6-14ef25411162.