Retail e beni di consumoBI, AI e ML per l'azienda
Campagne misurate contro l'atteso
Durante una campagna le vendite salgono, ma una parte sarebbe arrivata comunque. In Muvia una funzione Python confronta ora per ora ordini e ricavi con una settimana tipo senza campagne, e ogni canale mostra il suo effetto netto e quando ripaga la spesa.
Scenario illustrativo: descrive un caso tipo, non il progetto di un cliente.
Le vendite salgono durante la campagna. Quanto sarebbero salite comunque?
Ogni piattaforma pubblicitaria dichiara le sue conversioni, e sommandole si ottiene più del fatturato. Il confronto con la settimana prima non aiuta: c'è la stagione, c'è Ferragosto, ci sono due campagne che si sovrappongono. Così il budget si divide per abitudine.
Per sapere cosa rende una campagna serve una base: quanto avrebbe venduto il negozio in quelle stesse ore senza campagne. Solo la differenza, tolti la spesa e i resi, dice se un canale ripaga.
- Per chi
- Marketing e direzione commerciale, responsabili e-commerce, controllo di gestione.
In Muvia, passo per passo
Schermate vere del prodotto, registrate su un progetto con dati di esempio.
Il video · Durante una campagna le vendite salgono, ma una parte sarebbe arrivata comunque. In Muvia una funzione Python confronta ora per ora ordini e ricavi con una settimana tipo senza campagne, e ogni canale mostra il suo effetto netto e quando ripaga la spesa.
Cosa ottieni
- L'effetto netto, non le conversioni dichiarate
- Ogni campagna è misurata contro quello che il negozio avrebbe venduto comunque.
- Canali confrontabili
- Email, social, ricerca e TV stanno sulla stessa scala, allineati sul momento del lancio.
- Si sa quando rientra la spesa
- Il saldo ora per ora dice se e quando una campagna ripaga, resi compresi.
- Il budget segue i numeri
- Ogni mattina il bilancio si aggiorna, e la decisione su cosa tagliare parte dagli stessi dati per tutti.
Per il team tecnico
Come si costruisce in Muvia
- 1
Metti spesa e ordini sulla stessa ora
Le sorgenti portano la spesa per campagna, gli ordini del negozio e il calendario; una query li allinea ora per ora in un dataset.
- 2
Calcola la base in Python
Una funzione Python costruisce per ogni ora la settimana tipo senza campagne, dalle ore pulite e corretta per stagione e ferie. Lo scarto tra reale e atteso è l'effetto della campagna; margine e giorni dei resi sono parametri.
- 3
Programma il ricalcolo
Un flusso la esegue ogni mattina e scrive in tabelle gestite l'effetto ora per ora e il bilancio di ogni campagna: spesa, ordini in più, margine in più e giorni per rientrare.
- 4
Allinea le campagne in Analisi
La vista Strati sovrappone le campagne sul momento del lancio: si vede quale canale risponde in poche ore e quale resta piatto. Il saldo dal lancio mostra quando ciascuna ripaga la spesa.
- 5
Chiedi ad Athena cosa tagliare
Athena legge il bilancio delle campagne, salva la classifica nel Laboratorio e scrive in un notebook quale campagna tagliare e quale raddoppiare.
Funzione Python
import numpy as np
import pandas as pd
def transform(inputs, params, ctx):
d = inputs["rows"].copy()
d["ora"] = pd.to_datetime(d["ora"], utc=True).dt.tz_convert("Europe/Rome")
d["ora_settimana"] = d["ora"].dt.weekday * 24 + d["ora"].dt.hour
pulite = d["campagna"].isna()
# la settimana tipo: la media di ogni ora della settimana nelle ore senza campagne
tipo = d[pulite].groupby("ora_settimana")["ordini"].mean()
d["ordini_attesi"] = d["ora_settimana"].map(tipo)
d["ordini_in_piu"] = np.where(pulite, 0.0, d["ordini"] - d["ordini_attesi"])
carrello = d["ricavi"].sum() / d["ordini"].sum()
margine = d["ordini_in_piu"] * carrello * params["margine_lordo_pct"] / 100
d["saldo_campagna"] = (margine - d["spesa"]).groupby(d["campagna"]).cumsum()
colonne = ["ora", "campagna", "ordini", "ordini_attesi", "ordini_in_piu", "saldo_campagna"]
return {"rows": d[colonne]}- I dati che servono
- Spesa oraria per campagna e canale (email, social, ricerca, TV), letta da un'API REST
- Sessioni, ordini, ricavi e resi del negozio online, ora per ora, dal database su PostgreSQL
- Calendario delle campagne con canale, inizio e fine, da Google Sheets
- 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.