Analyse commerciale
S’entendre sur les chiffres avant de discuter des résultats.
Au départ…
Lors de la revue hebdomadaire, un contact, une admission ou une inscription doit avoir le même sens d’un campus et d’une campagne à l’autre.
Ce que nous avons construit
Un tableau de bord dont les indicateurs s’appuient sur un référentiel de statuts partagé. Vues campus, courbes hebdomadaires et comparaisons annuelles utilisent ces mêmes définitions.
Entrez dans l’outil
Écran 1 sur 6Revue hebdomadaire consolidée
Répartition des statuts, comparaison des périodes et objectifs dans une même revue.
Ce que nous voulons changer
Aider les équipes à repérer les avancées et blocages avec des volumes, périodes et objectifs comparables.
Comment c’est construitModèle de données, code, contrôles et autonomie des équipes
Parcours utilisateur
- 01
Classer les statuts source dans les indicateurs métier convenus.
- 02
Agréger par campagne, campus et semaine.
- 03
Examiner l’avancement contre les objectifs et des périodes comparables.
Structure de la base
| Entité / table | Champs clés | Relations |
|---|---|---|
| Faits hebdomadaires | Année · semaine · campus · statut · valeur | Les faits sont agrégés via les définitions de statut |
| Statuts | Flags contacts · entretiens · admissions · inscrits | Un statut contribue aux indicateurs pertinents |
| Objectifs Promotions | Campus · rentrée · objectif | Les objectifs viennent du référentiel d’offre si configuré |
Implémentation technique
- Un module pur transforme les faits en situations campus et consolidées.
- Les flags métier viennent du référentiel Statuts, sans être redéfinis dans chaque écran.
- Les taux consolidés sont recalculés à partir des volumes ; des fonctions dédiées organisent les semaines de campagne.
Décision d’ingénierie
Agréger selon le référentiel, puis recalculer les taux consolidés
Adapté du moteur d’indicateurs. Les statuts sont classés dans Airtable ; les faits sont indexés par année, campus et semaine ; les taux consolidés sont recalculés sur les volumes. L’extrait rend visibles les faits non mappés. Une modification du référentiel peut changer la lecture historique : ses évolutions doivent être encadrées.
const METRICS = ["contacts", "interviews", "enrolments"];const empty = () => Object.fromEntries(METRICS.map(key => [key, 0]));export function aggregateFacts(facts, definitions) { const cells = new Map(); const unmapped = new Set(); for (const fact of facts) { const flags = definitions[fact.statusId]; if (!flags || !fact.campusId) { unmapped.add(fact.statusId); continue; } const key = JSON.stringify([fact.year, fact.campusId, fact.week]); const totals = cells.get(key) ?? empty(); for (const metric of METRICS) { if (flags[metric]) totals[metric] += fact.value; } cells.set(key, totals); } return { cells, unmapped: [...unmapped] };}export function consolidate(snapshots) { const totals = empty(); for (const snapshot of snapshots) { for (const metric of METRICS) totals[metric] += snapshot[metric]; } return { ...totals, conversion: totals.contacts > 0 ? totals.enrolments / totals.contacts : null, };}Extrait adapté de l’implémentation
Contrôles et limites
- Les définitions et comparaisons historiques doivent être validées par le métier.
- Un objectif de repli dans le code ne remplace pas un objectif entretenu dans le référentiel courant ; la source configurée doit être explicite.
Qui peut contribuer
- Équipes commerciales : utiliser les vues campus et les revues hebdomadaires.
- Builders : entretenir classifications de statuts et objectifs.
- Développeurs : faire évoluer agrégations et dates dans des modules dédiés.
Ce qui documente ce cas
La revue consolidée et son aide ont été examinées avec les modules d’agrégation et de rythme saisonnier. Les volumes affichés sont des données opérationnelles, pas un résultat attribué à la prestation.