Pernod Ricard
BotiqueAI
🥃 Pernod Ricard☁️ AzureMLOps · Data Science
Case Study

DStar

Moteur d'optimisation des visites commerciales 30 recommandations classées par IA, chaque lundi matin.

Un pipeline MLOps entièrement automatisé qui analyse les transactions commerciales, détecte les SKUs sous-indexés sur tous les points de vente, et livre une liste de visites prioritaires à chaque commercial avant le début de la semaine.

30
visites recommandées
par commercial, par semaine
déclenchement automatique
chaque lundi à 6h00
<2 min
durée du pipeline
déclenchement au tableau de bord
100%
dockerisé
sur Azure Container Apps
Client
Pernod Ricard
Leader mondial des spiritueux
Projet
DStar
Outil d'intelligence commerciale
Cloud
Azure
Stack entièrement géré
Langage
Python 3.11
Pandas · Scikit-learn
Utilisateurs
Sales force
Actif hebdomadaire
Cadence
Weekly
Pipeline automatisé
Le Défi

Les commerciaux avaient des données.
Pas le bon signal.

La force de vente de Pernod Ricard gère des centaines de points de vente. Chaque commercial avait accès aux chiffres de ventes bruts — mais aucun moyen structuré de prioriser les comptes ou d'identifier quels SKUs pousser.

Des opportunités à forte valeur étaient manquées, les visites étaient guidées par l'habitude, et les SKUs sous-performants passaient inaperçus jusqu'aux bilans trimestriels — trop tard pour agir.

Aucune priorisation des visites
Les commerciaux se fiaient à leur intuition. Aucun classement basé sur les données pour savoir quels points de vente nécessitaient le plus d'attention.
Lacunes cachées de distribution SKU
Les produits sous-indexés étaient invisibles dans les données. Aucune détection automatisée sur l'ensemble du portefeuille.
Angles morts trimestriels
Au moment où les rapports faisaient remonter les insights, la fenêtre de vente était déjà passée.
Sources de données cloisonnées
Les données CRM, ERP et transactions étaient dans des systèmes séparés — aucune vue terrain unifiée.
La Solution

Un pipeline d'intelligence
hebdomadaire entièrement automatisé.

DStar fonctionne de manière autonome chaque lundi matin. Il ingère les données CRM, ERP et transactions PDV, calcule les scores d'indexation pour chaque SKU dans chaque point de vente, et livre une liste classée de 30 visites prioritaires par commercial avant le début de la semaine de travail.

01
Déclenchement hebdomadaire automatique
Azure Timer se déclenche chaque lundi à 6h00 — aucune intervention humaine requise.
02
Ingestion parallèle des données
Durable Orchestrator récupère CRM, transactions et inventaire SKU en fan-out parallèle.
03
Calcul du score d'indexation
Le moteur Python compare chaque SKU dans chaque PDV par rapport aux moyennes régionales et nationales.
04
Modèle de classement composite
Combine le delta d'indexation, la récence des visites, le potentiel de revenus et le clustering géographique.
05
Livraison au tableau de bord
Résultats poussés vers Streamlit — les commerciaux se connectent et voient leur liste de visites personnalisée.
Weekly
Cadence
vs bilans trimestriels
30
Visites prioritaires
par commercial, par semaine
100%
Basé sur les données
sans biais intuitif
<2 min
Durée
déclenchement à la livraison
Architecture

Schéma du
pipeline

Tous les services fonctionnent dans des conteneurs Docker sur Azure. Le Durable Orchestrator gère le parallélisme, les reprises et l'état — une exécution fiable chaque semaine sans supervision.

Déclenchement & Orchestration
Sources de données & Sortie
Couche de traitement ML
Moteur de classement

Déplacez les nœuds · Les arêtes animées montrent la direction du flux de données

L'Algorithme

SKUs sous-indexés vs sur-indexés

Les ventes d'un produit dans un point de vente n'ont de sens que par rapport à son potentiel. DStar calcule un score d'indexation, puis superpose des signaux de clustering et temporels pour construire une priorité de visite composite.

Observé
SKU_sales(POS)
Volume réel au point de vente
÷
Attendu
benchmark(region)
Moy. régionale / nationale
=
Score
index_score
Signal de priorité
Score < 1.0

Sous-indexé

Le produit se vend en dessous de son benchmark régional dans ce point de vente. Il y a un potentiel inexploité — une visite commerciale est susceptible de débloquer un volume incrémental.

·Écart de distribution détecté
·Part de rayon concurrent probablement plus élevée
·ROI de visite élevé attendu
Score > 1.0

Sur-indexé

Le produit surpasse déjà son benchmark. Ce point de vente est saturé — le temps du commercial est plus précieux dans un compte sous-indexé.

·SKU déjà à pleine pénétration
·Visite déprioritisée ce cycle
·Filtré hors du Top 30
Techniques de clustering utilisées
📍
Clustering géographique (K-Means)

Les points de vente sont regroupés par coordonnées GPS avec K-Means. Cela garantit que les 30 recommandations forment des itinéraires géographiquement efficaces — minimisant le temps de trajet entre les visites.

Scikit-learn KMeans
Haversine distance metric
🧩
Clustering de similarité SKU

Les SKUs sont regroupés par catégorie, niveau de prix et profil de saisonnalité des ventes. Les benchmarks d'indexation sont calculés au sein des clusters, évitant des comparaisons injustes entre produits à demandes fondamentalement différentes.

Hierarchical clustering
Cosine similarity on SKU vectors
🏪
Segmentation des PDV

Les points de vente sont segmentés par canal (on-trade vs off-trade), niveau de volume et comportement d'achat historique. Chaque segment utilise sa propre distribution de benchmark, améliorant la précision du score d'indexation.

DBSCAN for outlier detection
RFM-based segmentation
Pondération par décroissance temporelle

Les scores d'indexation bruts sont pondérés par le temps écoulé depuis la dernière visite. Un compte visité il y a 2 semaines contribue moins d'urgence qu'un compte non visité depuis 3 mois, même si l'écart d'indexation est identique.

Cela empêche la sur-concentration des visites dans des comptes déjà visités et garantit que tout le territoire bénéficie d'une couverture systématique dans le temps.

0.3×
< 2 weeks depuis la dernière visite
Récemment visité — faible urgence
0.7×
2–6 weeks depuis la dernière visite
Cadence normale — poids modéré
1.5×
> 6 weeks depuis la dernière visite
En retard — score de priorité augmenté
Score de visite final — composite de 4 signaux
40%
Delta d'indexation
Magnitude de l'écart sous-indexé
25%
Récence de visite
Décroissance temporelle depuis le dernier contact
25%
Potentiel de revenus
Taille du compte et poids de la catégorie
10%
Cluster géographique
Optimisation de l'efficacité des itinéraires
Stack Technique

Stack cloud
Azure complet

Chaque couche fonctionne sur Microsoft Azure. Tous les composants sont dockerisés pour la portabilité et la cohérence entre les environnements de développement, staging et production.

Orchestration
Azure Durable Functions
Fan-out / fan-in avec état et reprise automatique
Azure Timer Trigger
Planification hebdomadaire CRON, zéro infrastructure à gérer
Données & Stockage
🗄️
Azure SQL Database
Sorties de scoring et tables de recommandations pour les commerciaux
☁️
Azure Blob Storage
Données intermédiaires et artefacts du pipeline
ML & Traitement
🐍
Python 3.11
Langage principal du pipeline — manipulation des données et scoring
🔢
Pandas + Scikit-learn
Scoring d'indexation, clustering K-Means, modèle de classement
Livraison
📊
Streamlit
Tableau de bord interactif — listes par commercial avec filtres
🐳
Docker
Tous les services conteneurisés — déploiements cohérents
References

Pour aller plus loin

Azure Durable Functions
Orchestration serverless avec état — Microsoft Docs
Streamlit
Transformez des scripts Python en applications web partageables
Scikit-learn — KMeans
Clustering K-Means pour le regroupement géographique et SKU
Scikit-learn — DBSCAN
Clustering basé sur la densité pour la détection d'anomalies PDV
Azure Container Apps
Exécutez des applications conteneurisées sur une plateforme serverless
Nielsen Distribution Analytics
Comment la distribution et la disponibilité influencent les ventes FMCG
Circana — SKU Optimisation
Méthodologie industrielle pour la performance du portefeuille et l'indexation SKU
RFM Customer Segmentation
Récence, Fréquence, Montant — modèle de scoring B2B classique
BotiqueAI
Custom AI and MLOps for enterprise clients
Nos Réalisations