Direzione, amministrazione ed ESGBI, AI e ML per l'azienda
Clienti B2B a rischio di abbandono
Un cliente che se ne va non lo annuncia: ordina meno spesso e spende meno. Muvia calcola ogni lunedì il rischio di ogni cliente con una funzione Python sugli ordini e manda a ogni agente la lista di chi chiamare per primo, in ordine di valore.
Scenario illustrativo: descrive un caso tipo, non il progetto di un cliente.
Quando il calo arriva nel fatturato, il cliente è già andato.
Nel B2B un cliente raramente chiude il rapporto con una telefonata. Ordina ogni sei settimane invece che ogni tre, prende meno righe, sposta una parte degli acquisti altrove. Nei totali mensili non si vede, e l'agente se ne accorge quando ormai è tardi.
Il segnale c'è già negli ordini: va calcolato per ogni cliente, confrontato con la sua storia e messo davanti a chi può fare la telefonata, ogni settimana.
- Per chi
- Direzione commerciale, area manager e agenti; il customer service e il controllo di gestione per il valore a rischio.
In Muvia, passo per passo
Schermate vere del prodotto, registrate su un progetto con dati di esempio.
Il video · Un cliente che se ne va non lo annuncia: ordina meno spesso e spende meno. Muvia calcola ogni lunedì il rischio di ogni cliente con una funzione Python sugli ordini e manda a ogni agente la lista di chi chiamare per primo, in ordine di valore.
Cosa ottieni
- Il calo si vede negli ordini
- Il rischio cresce mentre il cliente rallenta, settimane prima che il fatturato del trimestre lo mostri.
- Ogni agente sa chi chiamare
- La lista arriva il lunedì mattina, già in ordine di valore, senza chiedere un'estrazione.
- Il rischio ha un valore
- Accanto al punteggio c'è il fatturato del cliente: la direzione vede quanto vale ciò che rischia di perdere e dove si concentra.
- La regola è del team
- Il punteggio è codice che il team legge e cambia; una nuova regola è una nuova versione della funzione, non un altro foglio.
Per il team tecnico
Come si costruisce in Muvia
- 1
Collega ordini e CRM
Gli ordini arrivano con una copia incrementale ogni notte dal database del gestionale, clienti e agenti dal connettore Salesforce. Una query li unisce sul codice cliente.
- 2
Scrivi il rischio in Python
Una funzione Python confronta, per ogni cliente, frequenza e spesa degli ultimi tre mesi con il suo ultimo anno e ne fa un punteggio. Un'esecuzione di prova su un campione non scrive nulla; Athena può scrivere una prima bozza del codice.
- 3
Programmala ogni lunedì
Un flusso esegue la funzione ogni lunedì alle 7 e scrive i punteggi in una tabella gestita, che cruscotti, notebook e allarmi leggono come qualsiasi altro dato.
- 4
Mostra il rischio per agente
Un cruscotto mette in relazione rischio e valore di ogni cliente e somma il fatturato a rischio per agente: si vede subito dove si concentra.
- 5
Manda la lista all'agente
Un notebook con i clienti da chiamare, in ordine di valore, diventa un PDF che arriva per email il lunedì mattina. Un allarme segnala il cliente che entra in fascia alta.
Funzione Python
import numpy as np
import pandas as pd
def transform(inputs, params, ctx):
df = inputs["rows"]
df["data_ordine"] = pd.to_datetime(df["data_ordine"])
recenti = df["data_ordine"] > df["data_ordine"].max() - pd.Timedelta(days=90)
quota = 90 / 365
anno = df.groupby(["codice_cliente", "agente"], as_index=False).agg(
ordini_anno=("numero_ordine", "nunique"), spesa_anno=("imponibile", "sum"))
tre_mesi = df[recenti].groupby("codice_cliente", as_index=False).agg(
ordini_90g=("numero_ordine", "nunique"), spesa_90g=("imponibile", "sum"))
out = anno.merge(tre_mesi, on="codice_cliente", how="left").fillna(0)
attesi = (out["ordini_anno"] * quota).replace(0, np.nan)
out["calo_frequenza"] = (1 - out["ordini_90g"] / attesi).clip(0, 1)
attesa = (out["spesa_anno"] * quota).replace(0, np.nan)
out["calo_spesa"] = (1 - out["spesa_90g"] / attesa).clip(0, 1)
peso = params["peso_frequenza"]
out["rischio"] = (peso * out["calo_frequenza"]
+ (1 - peso) * out["calo_spesa"]).fillna(0).round(2)
out["fascia"] = np.where(out["rischio"] >= params["soglia"], "alta", "normale")
return {"rows": out}- I dati che servono
- Ordini e righe per cliente degli ultimi dodici mesi dal gestionale su SQL Server
- Clienti, agente assegnato e area da Salesforce
- Canale (ingrosso o grande distribuzione) e condizioni, da un file Excel
- Le parti di Muvia usate
Altri casi della stessa linea
Tutti i casi d'uso- Margini e controllo di gestioneFatture e costi stanno nel gestionale, clienti e agenti nel CRM, il budget in un Excel. In Muvia diventano un solo margine per cliente e per prodotto, con il report del lunedì e un allarme quando ci si allontana dal budget.
- Vendite e pipeline commercialeIl CRM sa cosa è in trattativa, il gestionale sa cosa è stato ordinato e fatturato. Muvia li unisce: pipeline e conversione con una sola definizione, i clienti che stanno ordinando meno e Athena che risponde alle domande dei commerciali.
- Chiusura del mese e scostamenti dal budgetContabilità nel gestionale, budget in Excel, costi del personale da un altro fornitore. In Muvia diventano un conto economico del mese per business unit, con la cascata dell'EBITDA contro il budget e il commento della chiusura che arriva in PDF il terzo giorno.
Portaci una domanda a cui oggi non sai rispondere.
Partiamo da una domanda vera della tua azienda e ti mostriamo il percorso dalla fonte al cruscotto, con i tuoi sistemi e non con quelli di una demo.