Retail e beni di consumoBI, AI e ML per l'azienda
Recensioni e ticket letti ogni notte
Recensioni e ticket dell'assistenza dicono cosa non va molto prima dei numeri di vendita, ma sono troppi per leggerli tutti. In Muvia una funzione Python assegna ogni notte un argomento e un tono a ogni messaggio, e Athena riassume i problemi principali con i numeri e cosa fare.
Scenario illustrativo: descrive un caso tipo, non il progetto di un cliente.
I clienti lo scrivono prima che le vendite lo mostrino.
Una confezione che perde, un prodotto introvabile, un corriere in ritardo: i clienti lo scrivono nelle recensioni e nei ticket dell'assistenza, settimane prima che il problema arrivi nei numeri di vendita. Ma i messaggi sono migliaia, e chi li legge ne vede solo una parte.
Senza un argomento e un tono per ogni messaggio non si vede quando un tema esplode, su quali prodotti, e se l'intervento ha funzionato. Le lamentele restano aneddoti.
- Per chi
- Customer care e qualità, marketing e brand, product manager.
In Muvia, passo per passo
Schermate vere del prodotto, registrate su un progetto con dati di esempio.
Il video · Recensioni e ticket dell'assistenza dicono cosa non va molto prima dei numeri di vendita, ma sono troppi per leggerli tutti. In Muvia una funzione Python assegna ogni notte un argomento e un tono a ogni messaggio, e Athena riassume i problemi principali con i numeri e cosa fare.
Cosa ottieni
- Ogni messaggio letto
- Tutte le recensioni e tutti i ticket hanno un argomento e un tono, non solo quelli che qualcuno ha avuto il tempo di aprire.
- I problemi visti quando nascono
- Un tema che si accende sulla mappa di calore si vede nella settimana in cui succede, con i prodotti coinvolti.
- Si vede se l'intervento funziona
- Dopo una correzione, il tono e le lamentele sul tema dicono settimana per settimana se il problema è risolto.
- Dal riassunto all'azione
- Athena trasforma migliaia di messaggi in pochi problemi, con i numeri e cosa fare per ciascuno.
Per il team tecnico
Come si costruisce in Muvia
- 1
Carica recensioni e ticket
Le recensioni arrivano da un'API REST, i ticket da file che si accodano alla stessa tabella. Ogni messaggio porta testo, data, fonte e prodotto.
- 2
Classifica in Python
Una funzione Python legge ogni testo con un lessico italiano e poche regole: l'argomento è il gruppo di parole chiave più presente, il tono va da −1 a +1 e tiene conto delle negazioni e delle stelle. Gira nel runtime isolato, senza rete.
- 3
Programma il ricalcolo
Un flusso esegue la funzione ogni notte alle 2 e scrive argomento, tono e parole chiave di ogni messaggio in una tabella gestita.
- 4
Costruisci il cruscotto
La mappa di calore argomento per settimana fa vedere quando un tema si accende; accanto ci sono il tono medio, la quota di messaggi negativi e i prodotti coinvolti.
- 5
Chiedi ad Athena
Athena legge i messaggi classificati e risponde con i problemi principali: quanti messaggi negativi, la settimana peggiore, i prodotti coinvolti e cosa fare.
Funzione Python
import re
import pandas as pd
ARGOMENTI = {
"Confezione": ["tappo", "bottiglia", "confezione", "perde"],
"Disponibilità": ["introvabile", "esaurit", "scaffal"],
"Consegna": ["consegna", "corriere", "spedizione"],
"Gusto": ["gusto", "sapore", "frizzant"],
}
POSITIVE = ("ottim", "buon", "perfett", "pratic", "puntual")
NEGATIVE = ("perde", "rovesciat", "ritardo", "esaurit", "pessim")
NEGAZIONI = {"non", "mai", "nessun"}
def _argomento(testo):
punti = {a: sum(testo.count(p) for p in parole) for a, parole in ARGOMENTI.items()}
migliore = max(punti, key=punti.get)
return migliore if punti[migliore] else "Altro"
def _tono(testo):
parole, segni = re.findall(r"[a-zàèéìòù]+", testo), []
for i, p in enumerate(parole):
s = 1 if p.startswith(POSITIVE) else -1 if p.startswith(NEGATIVE) else 0
if s and i > 0 and parole[i - 1] in NEGAZIONI:
s = -s
if s:
segni.append(s)
return sum(segni) / len(segni) if segni else 0.0
def transform(inputs, params, ctx):
m = inputs["rows"].copy()
testi = m["testo"].fillna("").str.lower()
m["argomento"] = testi.map(_argomento)
tono = testi.map(_tono)
stelle, peso = pd.to_numeric(m["stelle"], errors="coerce"), params["peso_stelle"]
m["punteggio_tono"] = tono.where(stelle.isna(), (1 - peso) * tono + peso * (stelle - 3) / 2).round(2)
return {"rows": m}- I dati che servono
- Recensioni del negozio online con testo e stelle, lette da un'API REST
- Ticket dell'assistenza con testo, prodotto e provincia, da file CSV
- Prodotti e formati, da un file Excel
- Le parti di Muvia usate
Altri casi della stessa linea
Tutti i casi d'uso- Le vendite di tutti i negozi in una paginaVendite di cassa, ordini e anagrafiche dei negozi stanno in sistemi diversi, e il quadro della rete arriva a fine mese. In Muvia ricavi, crescita, pezzi e clienti di tutti i negozi stanno in un solo cruscotto, settimana per settimana, dal totale fino al singolo reparto.
- Comprati insieme: l'analisi del carrelloGli scontrini dicono quali prodotti si comprano insieme, ma restano nel sistema di cassa. In Muvia una funzione Python calcola ogni notte supporto, confidenza e lift di ogni coppia, e il cruscotto dice cosa farne: promo abbinate, prodotti vicini a scaffale, proposte in cassa.
- Elasticità al prezzo e proposta di listinoUn aumento di prezzo può far perdere un pezzo su tre o quasi nulla, e la differenza si scopre a cose fatte. In Muvia un modello scritto dal team stima ogni settimana l'elasticità di ogni articolo e prepara la proposta di listino: cosa aumentare, cosa ridurre, quanto margine rende.
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.