# Dictionnaire de données du reporting GreenLeaf — contrat sémantique v1

**Rédigé :** 2026-10-29 · **Statut :** spécification source gelée avant la génération du jeu de données ; entrée éditoriale en anglais. Le CSV est une nouvelle reconstitution synthétique, pas des données de cours récupérées. La [note](brief-v1.md) régit les décisions ; la [carte des sources](course-source-map.json) régit la provenance. Aucun client réel, aucune information de santé ni aucun compte client n'est inclus.

Les chiffres reproduits des sources conservent la convention numérique des sources originales en anglais : la virgule sépare les milliers et le point indique les décimales ; les montants sont exprimés en USD.

## Granularité, fenêtre et attribution

Une ligne canonique correspond à une date de clic payant UTC × canal × appareil × audience × création, au Royaume-Uni. Quatorze dates × trois canaux × deux appareils × deux audiences × deux créations = **336 lignes**. L'export brut comporte **337 lignes**, dont un doublon exact. La campagne appartient au canal et n'ajoute pas de dimension.

Semaine 1 : du `2026-09-01` au `2026-09-07` inclus. Semaine 2 : du `2026-09-08` au `2026-09-14` inclus. Instantané : **`2026-09-22T23:59:59Z`**. Les jours sont en UTC et `date` signifie toujours la date de cohorte de clics payants, jamais la date d'achat/événement. Les événements d'entonnoir et les premiers achats sont observés pendant les sept jours suivant le clic payant éligible. Les horodatages exacts des événements ne sont pas exportés ; la fenêtre d'attribution/observation de sept jours est une hypothèse de construction du générateur. Les deux périodes complètes ont atteint la maturité à l'instantané. Toutes les lignes primaires publiées ont `is_provisional=false`.

Les dépenses, impressions et clics décrivent l'activité d'acquisition assignée à cette date de cohorte. Les effectifs de page de destination, de quiz et d'achat suivent sa cohorte de clics payants balisée par la source et son compartiment appareil/audience/création. Chaque client de premier achat synthétique et chaque montant de revenu est assigné une fois, au dernier clic payant éligible dans les sept jours ; toutes les étapes d'événement suivent cette même assignation exclusive. La réconciliation d'identité entre appareils n'est pas mesurée. L'exclusivité est garantie par construction, pas établie indépendamment par ce fichier agrégé.

## Champs

| Champ | Type / unité | Signification et validation |
|---|---|---|
| `row_id` | chaîne non vide | Identifiant de ligne canonique unique et stable. Le doublon exact brut le répète ; des lignes conflictuelles avec le même identifiant constituent une erreur. |
| `date` | ISO `YYYY-MM-DD` | Date de cohorte de clics payants UTC source, du 1–14 septembre. |
| `market` | enum | `UK` uniquement ; le périmètre est constitué des cohortes payantes du lancement fictif au Royaume-Uni. |
| `channel` | enum | `google-search`, `linkedin`, `reddit-paid`. L'activité organique Reddit est exclue. |
| `campaign_id` | enum après normalisation | Une campagne par canal ; tableau de correspondance ci-dessous. |
| `device` | enum | `mobile` ou `desktop`, appareil du clic payant source assigné. |
| `audience_id` | enum | `skeptical` ou `exploring` ; compartiments construits mutuellement exclusifs au sein du canal, pas des caractéristiques clients validées. |
| `creative_id` | enum | `traceability` ou `value` ; hypothèses de message au format spécifique au canal, tableau de correspondance ci-dessous. |
| `spend_cents` | entier non négatif en centimes USD | Coût média uniquement. Aucun coût d'agence, de création, d'outillage, de salaires ni autre coût d'acquisition. |
| `impressions` | entier non négatif | Impressions publicitaires d'acquisition dans le compartiment ; pas des personnes uniques ni une fréquence. |
| `clicks` | entier non négatif | Clics payants assignés à ce compartiment ; pas des visiteurs uniques. |
| `landing_sessions` | entier non négatif | Sessions de page de destination balisées par la source observées dans les sept jours suivant le clic payant éligible. Au plus une session conservée par parcours d'entonnoir synthétique. |
| `quiz_starts` | entier non négatif | Parcours de quiz conservés distincts balisés par la source qui démarrent dans la même fenêtre de sept jours ; un démarrage conservé par parcours. Dénominateur du taux de complétion. |
| `quiz_completions` | entier non négatif | Ces parcours de quiz conservés complétés dans la même fenêtre de sept jours ; aucun comptage de complétion répété. |
| `attributed_new_customers` | entier non négatif | Clients de premier achat complétant cet entonnoir construit mené par le quiz dans les sept jours, assignés une fois par la règle déclarée du dernier clic payant. Pas les nouveaux clients de l'ensemble du site. |
| `attributed_first_purchase_revenue_cents` | entier non négatif en centimes USD | Revenu de premier achat de ces clients, après remises, hors taxes et frais de port. Aucun remboursement dans ce jeu de données ; aucun revenu de renouvellement. Le générateur assigne USD $80 (8,000 centimes) par client de premier achat pour la clarté arithmétique ; il s'agit d'une hypothèse de reconstitution, pas du prix du cours ni de la LTV. |
| `is_provisional` | booléen | `false` signifie que la fenêtre d'observation de sept jours de cette ligne est mature à l'instantané déclaré. Rejeter toute coercition chaîne/booléen non étayée. |

Inégalités par ligne : `impressions >= clicks >= landing_sessions >= quiz_starts >= quiz_completions >= attributed_new_customers`. Il s'agit d'une construction d'entonnoir simplifiée explicitement menée par le quiz, pas d'une propriété universelle des exports publicitaires. Une ligne sans client doit avoir un revenu de premier achat nul ; un effectif de clients positif doit avoir un revenu positif. Ces contraintes ne fournissent pas de preuve au niveau individuel.

## Tables de correspondance canoniques et nettoyage brut

| Canal | Identifiant de campagne canonique | Nom d'affichage | Alias d'identifiant de campagne brut autorisé |
|---|---|---|---|
| `google-search` | `gl-uk-google-search` | GreenLeaf UK Search | `gl_uk_search` → `gl-uk-google-search` |
| `linkedin` | `gl-uk-linkedin` | GreenLeaf UK LinkedIn | Aucun |
| `reddit-paid` | `gl-uk-reddit-paid` | GreenLeaf UK Reddit paid | Aucun |

Audience `skeptical` : compartiment construit pour un acheteur en quête de preuves comparant les preuves d'approvisionnement/dosage ; inspiré du persona non validé d'Oliver. Audience `exploring` : compartiment construit pour un acheteur explorant la catégorie et considérant la valeur. Ce ne sont ni de vraies spécifications de ciblage ni des affectations de traitement randomisées ; aucune identité, profession ni condition de santé n'est déduite.

Création `traceability` : message illustratif “Know what is in every serving” (Sachez ce que contient chaque portion). Création `value` : message illustratif “Compare the value of a clearly dosed serving” (Comparez la valeur d’une portion aux dosages clairement indiqués). Pour Google Search, ce sont des hypothèses de message d'annonce textuelle ; pour LinkedIn, des hypothèses de texte de contenu sponsorisé ; pour Reddit payant, des hypothèses de texte de publication promue. Les identifiants de création sont des catégories de message partagées au sein de chaque canal, pas des actifs publicitaires finis identiques ni des allégations approuvées. Aucune preuve d'efficacité ni aucune certification produit réelle n'est fournie.

Supprimez uniquement un doublon exact octet par octet/champ égal, en consignant son identifiant de ligne source. Normalisez uniquement l'alias déclaré et consignez le compte. Un identifiant inconnu, un marché inattendu, un champ manquant, une date malformée, des centimes/effectifs non entiers, une valeur négative, un doublon conflictuel ou un entonnoir impossible doit échouer à la validation plutôt que d'être réparé silencieusement. Préservez une ligne documentée à dénominateur nul pour vérifier la gestion des ratios indisponibles. Réconciliez les effectifs bruts/canoniques et tous les totaux de dimension. L'enregistrement de génération du jeu de données doit identifier le doublon exact, la ligne d'alias et la ligne à dénominateur nul ; ce dictionnaire ne prétend pas que ces lignes existent déjà.

## Métriques et règles de comparaison

Utilisez des sommes au sein de la cohorte/dimension sélectionnée, puis divisez ; ne faites jamais la moyenne des taux au niveau des lignes. Conservez la pleine précision intermédiaire. Affichez l'USD en divisant les centimes par 100 uniquement à la présentation. Un dénominateur nul donne **indisponible**, jamais zéro/infini ; une variation en pourcentage par rapport à une valeur antérieure nulle est indisponible.

| Métrique | Définition | Interprétation |
|---|---|---|
| Taux de complétion du quiz | `sum(quiz_completions) / sum(quiz_starts)` | KPI principal de l'entonnoir ; le mobile payant des semaines 1/2 doit être calibré à 45 %/28 %. |
| Taux clic-démarrage | `sum(quiz_starts) / sum(clicks)` | Diagnostic ; distinct de la complétion du quiz. |
| Taux clic-page de destination | `sum(landing_sessions) / sum(clicks)` | Diagnostic, pas un taux de rebond vérifié. |
| Taux complétion-achat | `sum(attributed_new_customers) / sum(quiz_completions)` | Diagnostic de l'entonnoir construit mené par le quiz. |
| CTR | `sum(clicks) / sum(impressions)` | Métrique d'optimisation ; pas la notoriété. |
| CPC (USD) | `sum(spend_cents) / sum(clicks) / 100` | Coût média par clic. |
| CPM (USD) | `sum(spend_cents) / sum(impressions) * 1000 / 100` | Coût média par 1,000 impressions. |
| CPA média (USD) | `sum(spend_cents) / sum(attributed_new_customers) / 100` | Indicateur intermédiaire limité aux médias ; pas le CAC complet. |
| ROAS attribué de première commande | `sum(attributed_first_purchase_revenue_cents) / sum(spend_cents)` | Ratio revenu/dépenses ; pas le profit, l'incrémentalité ni la LTV. |
| Revenu de premier achat (USD) | `sum(attributed_first_purchase_revenue_cents) / 100` | Attribution des cohortes payantes uniquement ; pas un verdict par rapport à l'objectif mensuel complet de $60K. |

La variation en points de pourcentage d'un taux est `(Week 2 rate - Week 1 rate) * 100`. La variation relative est `(Week 2 rate / Week 1 rate - 1) * 100` lorsque la semaine 1 est positive. La valeur rédigée 45 % → 28 % équivaut à −17 points de pourcentage et environ −37.8 % en valeur relative ; aucun autre résultat n'est prédéterminé par ce contrat de source.

Avant de diagnostiquer le mouvement agrégé mobile, stratifiez le mobile par canal × audience × création. Pour la strate `s`, fixez la pondération `w_s = Week 1 starts_s / Week 1 total starts`. Comparez `sum(w_s * Week 1 completion_rate_s)` avec `sum(w_s * Week 2 completion_rate_s)` et comparez les deux avec les taux observés. Publiez les pondérations et les effectifs. Une strate à pondération positive sans taux défini pour la semaine 2 rend la comparaison complète à composition fixe indisponible ; toute comparaison explicitement restreinte aux strates communes doit divulguer les effectifs/pondérations exclus et ne peut pas silencieusement se substituer à l'ensemble. Une strate à pondération nulle contribue zéro et ne nécessite pas de taux. La modification de la composition et le mouvement intra-strate peuvent coexister. Ni l'un ni l'autre ne prouve une cause ; les cohortes ne sont pas randomisées.

Un instantané incomplet ou une ligne primaire provisoire rend les deux périodes complètes non établies/non comparables. Ne traitez pas les résultats non observés comme nuls. Une comparaison sélectionnée séparément avec une couverture mature identique doit indiquer les dates sélectionnées, les exclusions et la question modifiée.

## Preuves indisponibles et conflits de sources

Indisponibles : CAC complet, profit, rétention, LTV réalisée à 12 mois, notoriété, incrémentalité, revenu réel tous canaux/mensuel, fréquence, part d'impressions, taux de rebond, journaux d'événements/versions, entretiens clients et explications causales. Le 4.2 % “quiz CVR” distinct de l'actif source n'a pas de définition de dénominateur partagé adéquate ici ; ne l'importez pas. Aucune estimation de perte d'une capture d'écran, aucun multiple de segment, aucune instruction budgétaire ni aucun récit causal organique-vers-payant n'est un résultat dérivé du jeu de données. Voir la carte des sources pour les faits du cours par rapport aux hypothèses nouvellement rédigées.
