# Kamus data pelaporan GreenLeaf — kontrak semantik v1

**Ditulis:** 2026-10-29 · **Status:** spesifikasi sumber beku sebelum pembuatan fixture; masukan editorial bahasa Inggris. CSV adalah rekonstruksi sintetis baru, bukan data kursus yang dipulihkan. [Ringkasan](brief-v1.md) mengatur keputusan; [peta sumber](course-source-map.json) mengatur asal. Tidak ada pelanggan nyata, informasi kesehatan, atau akun klien yang disertakan.

## Grain, jendela, dan atribusi

Satu baris kanonik adalah satu tanggal klik berbayar UTC × saluran × perangkat × audiens × kreatif, di Inggris. Empat belas tanggal × tiga saluran × dua perangkat × dua audiens × dua kreatif = **336 baris**. Ekspor mentah memiliki **337 baris**, termasuk satu duplikat persis. Kampanye termasuk dalam saluran dan tidak menambah dimensi.

Minggu 1: `2026-09-01`–`2026-09-07` inklusif. Minggu 2: `2026-09-08`–`2026-09-14` inklusif. Snapshot: **`2026-09-22T23:59:59Z`**. Hari adalah UTC dan `date` selalu berarti tanggal kohor klik berbayar, bukan tanggal pembelian/peristiwa. Peristiwa corong dan pembelian pertama diamati selama tujuh hari setelah klik berbayar yang memenuhi syarat. Stempel waktu peristiwa yang tepat tidak diekspor; jendela atribusi/pengamatan tujuh hari adalah asumsi konstruksi generator. Kedua periode lengkap telah matang pada snapshot. Semua baris utama yang diterbitkan memiliki `is_provisional=false`.

Belanja, tayangan, dan klik menggambarkan aktivitas akuisisi yang ditetapkan ke tanggal kohor tersebut. Jumlah halaman arahan, kuis, dan pembelian mengikuti kohor klik berbayar yang diberi tag sumber dan keranjang perangkat/audiens/kreatif. Setiap pelanggan pembelian pertama sintetis dan jumlah pendapatan ditetapkan sekali, ke klik berbayar terakhir yang memenuhi syarat dalam tujuh hari; semua tahap peristiwa mengikuti penetapan eksklusif yang sama ini. Rekonsiliasi identitas lintas perangkat tidak diukur. Eksklusivitas dijamin oleh konstruksi, bukan ditetapkan secara independen oleh file agregat ini.

## Bidang

| Bidang | Jenis / satuan | Makna dan validasi |
|---|---|---|
| `row_id` | string tidak kosong | ID baris kanonik unik yang stabil. Duplikat persis mentah mengulanginya; baris yang bertentangan dengan ID yang sama adalah kesalahan. |
| `date` | ISO `YYYY-MM-DD` | Tanggal kohor klik berbayar sumber UTC, dalam September 1–14. |
| `market` | enum | `UK` saja; cakupan adalah kohor berbayar dalam peluncuran Inggris fiktif. |
| `channel` | enum | `google-search`, `linkedin`, `reddit-paid`. Aktivitas Reddit organik dikecualikan. |
| `campaign_id` | enum setelah normalisasi | Satu kampanye per saluran; pencarian di bawah. |
| `device` | enum | `mobile` atau `desktop`, perangkat dari klik berbayar sumber yang ditetapkan. |
| `audience_id` | enum | `skeptical` atau `exploring`; keranjang yang dibangun saling eksklusif dalam saluran, bukan sifat pelanggan yang tervalidasi. |
| `creative_id` | enum | `traceability` atau `value`; hipotesis pesan dengan format spesifik saluran, pencarian di bawah. |
| `spend_cents` | integer nonnegatif sen USD | Biaya media saja. Tidak ada biaya agensi, kreatif, perangkat, gaji, atau biaya akuisisi lainnya. |
| `impressions` | integer nonnegatif | Tayangan iklan akuisisi dalam keranjang; bukan orang unik atau frekuensi. |
| `clicks` | integer nonnegatif | Klik berbayar yang ditetapkan ke keranjang ini; bukan pengunjung unik. |
| `landing_sessions` | integer nonnegatif | Sesi halaman arahan ber-tag sumber yang diamati dalam tujuh hari setelah klik berbayar yang memenuhi syarat. Paling banyak satu sesi yang dipertahankan per perjalanan corong sintetis. |
| `quiz_starts` | integer nonnegatif | Perjalanan kuis ber-tag sumber yang dipertahankan dan berbeda yang dimulai dalam jendela tujuh hari yang sama; satu permulaan yang dipertahankan per perjalanan. Penyebut tingkat penyelesaian. |
| `quiz_completions` | integer nonnegatif | Perjalanan kuis yang dipertahankan yang diselesaikan dalam jendela tujuh hari yang sama; tidak ada penghitungan penyelesaian berulang. |
| `attributed_new_customers` | integer nonnegatif | Pelanggan pembelian pertama yang menyelesaikan corong berbasis kuis yang dibangun ini dalam tujuh hari, ditetapkan sekali oleh aturan klik berbayar terakhir yang dinyatakan. Bukan pelanggan baru seluruh situs. |
| `attributed_first_purchase_revenue_cents` | integer nonnegatif sen USD | Pendapatan pembelian pertama dari pelanggan tersebut, setelah diskon, tidak termasuk pajak dan pengiriman. Tidak ada pengembalian dana dalam fixture ini; tidak ada pendapatan perpanjangan. Generator menetapkan USD $80 (8,000 sen) per pelanggan pembelian pertama untuk kejelasan aritmetika; ini adalah asumsi rekonstruksi, bukan harga kursus atau LTV. |
| `is_provisional` | boolean | `false` berarti jendela pengamatan tujuh hari baris ini matang pada snapshot yang dinyatakan. Tolak paksaan string/boolean yang tidak didukung. |

Ketidaksetaraan per baris: `impressions >= clicks >= landing_sessions >= quiz_starts >= quiz_completions >= attributed_new_customers`. Ini adalah konstruksi corong berbasis kuis yang disederhanakan dan eksplisit, bukan properti universal dari ekspor iklan. Baris dengan nol pelanggan harus memiliki nol pendapatan pembelian pertama; jumlah pelanggan positif harus memiliki pendapatan positif. Batasan ini tidak menyediakan bukti tingkat orang.

## Pencarian kanonik dan pembersihan mentah

| Saluran | ID kampanye kanonik | Nama tampilan | Alias ID kampanye mentah yang diizinkan |
|---|---|---|---|
| `google-search` | `gl-uk-google-search` | GreenLeaf UK Search | `gl_uk_search` → `gl-uk-google-search` |
| `linkedin` | `gl-uk-linkedin` | GreenLeaf UK LinkedIn | Tidak ada |
| `reddit-paid` | `gl-uk-reddit-paid` | GreenLeaf UK Reddit paid | Tidak ada |

Audiens `skeptical`: keranjang yang dibangun untuk pembeli yang mencari bukti yang membandingkan bukti sumber/dosis; terinspirasi oleh persona Oliver yang tidak tervalidasi. Audiens `exploring`: keranjang yang dibangun untuk pembeli yang menjelajahi kategori dan mempertimbangkan nilai. Keduanya bukan spesifikasi penargetan nyata maupun penetapan perlakuan teracak; tidak ada identitas, profesi, atau kondisi kesehatan yang disimpulkan.

Kreatif `traceability`: pesan ilustratif “Know what is in every serving” (Ketahui kandungan dalam setiap sajian). Kreatif `value`: pesan ilustratif “Compare the value of a clearly dosed serving” (Bandingkan nilai setiap sajian dengan dosis yang jelas). Untuk Google Search ini adalah hipotesis pesan iklan teks; untuk LinkedIn, hipotesis salinan umpan bersponsor; untuk Reddit paid, hipotesis salinan postingan yang dipromosikan. ID kreatif adalah kategori pesan bersama dalam setiap saluran, bukan aset iklan jadi yang identik atau klaim yang disetujui. Tidak ada bukti kemanjuran atau sertifikasi produk aktual yang disediakan.

Hapus hanya duplikat persis byte-per-byte/bidang-setara, catat ID baris sumbernya. Normalisasi hanya alias yang dinyatakan dan catat jumlahnya. ID yang tidak diketahui, pasar yang tidak terduga, bidang yang hilang, tanggal yang salah format, sen/jumlah noninteger, nilai negatif, duplikat yang bertentangan, atau corong yang mustahil harus gagal validasi alih-alih diperbaiki secara diam-diam. Pertahankan baris penyebut nol yang didokumentasikan untuk memverifikasi penanganan rasio-tidak-tersedia. Rekonsiliasi jumlah mentah/kanonik dan semua total dimensi. Catatan pembuatan fixture harus mengidentifikasi duplikat persis, baris alias, dan baris penyebut nol; kamus ini tidak berpura-pura bahwa baris-baris tersebut sudah ada.

## Aturan metrik dan perbandingan

Gunakan jumlah dalam kohor/dimensi yang dipilih, lalu bagi; jangan pernah merata-ratakan tingkat baris. Pertahankan presisi antara penuh. Tampilkan USD dengan membagi sen dengan 100 hanya pada presentasi. Penyebut nol menghasilkan **tidak tersedia**, bukan nol/tak terhingga; perubahan persen terhadap nilai sebelumnya nol adalah tidak tersedia. Angka yang dikutip dari bukti sumber bahasa Inggris mempertahankan konvensi sumber: koma sebagai pemisah ribuan dan titik sebagai tanda desimal; semua nilai uang dalam USD.

| Metrik | Definisi | Interpretasi |
|---|---|---|
| Tingkat penyelesaian kuis | `sum(quiz_completions) / sum(quiz_starts)` | KPI corong utama; seluler berbayar Minggu 1/2 harus dikalibrasi ke 45%/28%. |
| Tingkat klik-ke-permulaan | `sum(quiz_starts) / sum(clicks)` | Diagnostik; berbeda dari penyelesaian kuis. |
| Tingkat klik-ke-halaman arahan | `sum(landing_sessions) / sum(clicks)` | Diagnostik, bukan tingkat pentalan terverifikasi. |
| Tingkat penyelesaian-ke-pembelian | `sum(attributed_new_customers) / sum(quiz_completions)` | Diagnostik corong berbasis kuis yang dibangun. |
| CTR | `sum(clicks) / sum(impressions)` | Metrik optimasi; bukan kesadaran. |
| CPC (USD) | `sum(spend_cents) / sum(clicks) / 100` | Biaya media per klik. |
| CPM (USD) | `sum(spend_cents) / sum(impressions) * 1000 / 100` | Biaya media per 1,000 tayangan. |
| CPA media (USD) | `sum(spend_cents) / sum(attributed_new_customers) / 100` | Proxy media saja; bukan CAC penuh. |
| ROAS pesanan pertama yang diatribusikan | `sum(attributed_first_purchase_revenue_cents) / sum(spend_cents)` | Rasio pendapatan/belanja; bukan laba, inkrementalitas, atau LTV. |
| Pendapatan pembelian pertama (USD) | `sum(attributed_first_purchase_revenue_cents) / 100` | Atribusi kohor berbayar saja; bukan vonis terhadap target bulan penuh $60K. |

Perubahan poin persentase suatu tingkat adalah `(Week 2 rate - Week 1 rate) * 100`. Perubahan relatif adalah `(Week 2 rate / Week 1 rate - 1) * 100` saat Minggu 1 positif. 45% → 28% yang ditulis sama dengan −17 poin persentase dan sekitar −37.8% relatif; tidak ada hasil lain yang ditentukan sebelumnya oleh kontrak sumber ini.

Sebelum mendiagnosis pergerakan agregat seluler, stratifikasi seluler berdasarkan saluran × audiens × kreatif. Untuk stratum `s`, tetapkan bobot tetap `w_s = Week 1 starts_s / Week 1 total starts`. Bandingkan `sum(w_s * Week 1 completion_rate_s)` dengan `sum(w_s * Week 2 completion_rate_s)` dan bandingkan keduanya dengan tingkat yang diamati. Terbitkan bobot dan jumlah. Stratum berbobot positif tanpa tingkat Minggu 2 yang terdefinisi membuat perbandingan campuran tetap penuh tidak tersedia; perbandingan strata-umum yang dibatasi secara eksplisit harus mengungkapkan jumlah/bobot yang dikecualikan dan tidak dapat secara diam-diam menggantikan keseluruhan. Stratum berbobot nol berkontribusi nol dan tidak memerlukan tingkat. Campuran yang berubah dan pergerakan dalam stratum dapat hidup berdampingan. Tidak ada yang membuktikan sebab; kohor tidak teracak.

Snapshot yang tidak lengkap atau baris utama sementara membuat dua periode penuh tidak menentu/tidak dapat dibandingkan. Jangan perlakukan hasil yang tidak teramati sebagai nol. Perbandingan yang dipilih secara terpisah dengan cakupan matang yang identik harus menyatakan tanggal yang dipilih, pengecualian, dan pertanyaan yang diubah.

## Bukti yang tidak tersedia dan konflik sumber

Tidak tersedia: CAC penuh, laba, retensi, LTV 12-bulan yang terealisasi, kesadaran, inkrementalitas, pendapatan semua saluran/bulan yang sebenarnya, frekuensi, pangsa tayangan, tingkat pentalan, log peristiwa/rilis, wawancara pelanggan, dan penjelasan kausal. 4.2% “quiz CVR” terpisah dari aset sumber tidak memiliki definisi penyebut bersama yang memadai di sini; jangan impor itu. Tidak ada estimasi kerugian, kelipatan segmen, instruksi anggaran, atau cerita kausal organik-ke-berbayar dari tangkapan layar yang merupakan hasil fixture turunan. Lihat peta sumber untuk fakta kursus versus asumsi yang baru ditulis.
