# Dicionário de dados do reporte GreenLeaf — contrato semântico v1

**Redigido:** 2026-10-29 · **Status:** especificação de fonte congelada antes da geração do fixture; input editorial em inglês. O CSV é uma nova reconstrução sintética, não dados recuperados do curso. O [briefing](brief-v1.md) governa as decisões; o [mapa de fontes](course-source-map.json) governa a procedência. Nenhum cliente real, informação de saúde ou conta de cliente é incluído.

Os números reproduzidos das fontes mantêm a convenção numérica das fontes originais em inglês: a vírgula separa os milhares e o ponto indica os decimais; os valores monetários estão em USD.

## Granularidade, janela e atribuição

Uma linha canônica é uma data de clique pago em UTC × canal × dispositivo × audiência × criativo, no Reino Unido. Quatorze datas × três canais × dois dispositivos × duas audiências × dois criativos = **336 linhas**. A exportação bruta tem **337 linhas**, incluindo uma duplicata exata. Campanha pertence ao canal e não adiciona uma dimensão.

Semana 1: `2026-09-01`–`2026-09-07` inclusive. Semana 2: `2026-09-08`–`2026-09-14` inclusive. Snapshot: **`2026-09-22T23:59:59Z`**. Dias são UTC e `date` sempre significa data de coorte de clique pago, nunca data de compra/evento. Eventos de funil e primeiras compras são observados durante os sete dias após o clique pago elegível. Carimbos de data/hora exatos de eventos não são exportados; a janela de atribuição/observação de sete dias é uma premissa de construção do gerador. Ambos os períodos completos amadureceram no snapshot. Todas as linhas primárias publicadas têm `is_provisional=false`.

Gasto, impressões e cliques descrevem a atividade de aquisição atribuída àquela data de coorte. As contagens de landing, quiz e compra seguem sua coorte de clique pago com tag de origem e o bucket de dispositivo/audiência/criativo. Cada cliente de primeira compra sintético e valor de receita é atribuído uma única vez, ao último clique pago elegível dentro de sete dias; todas as etapas de evento seguem essa mesma atribuição exclusiva. Reconciliação de identidade entre dispositivos não é mensurada. A exclusividade é garantida por construção, não estabelecida de forma independente por este arquivo agregado.

## Campos

| Campo | Tipo / unidade | Significado e validação |
|---|---|---|
| `row_id` | string não vazia | ID de linha canônico único e estável. A duplicata exata bruta o repete; linhas conflitantes com o mesmo ID são um erro. |
| `date` | ISO `YYYY-MM-DD` | Data de coorte de clique pago em UTC, entre 1 e 14 de setembro. |
| `market` | enum | Somente `UK`; o escopo são coortes pagas no lançamento fictício no Reino Unido. |
| `channel` | enum | `google-search`, `linkedin`, `reddit-paid`. Atividade orgânica no Reddit é excluída. |
| `campaign_id` | enum após normalização | Uma campanha por canal; consulta abaixo. |
| `device` | enum | `mobile` ou `desktop`, dispositivo do clique pago de origem atribuído. |
| `audience_id` | enum | `skeptical` ou `exploring`; buckets construídos mutuamente exclusivos dentro do canal, não traços validados de clientes. |
| `creative_id` | enum | `traceability` ou `value`; hipóteses de mensagem com formato específico de canal, consulta abaixo. |
| `spend_cents` | inteiro não negativo em centavos de USD | Custo de mídia somente. Nenhum custo de agência, criativo, ferramentas, salários ou outros custos de aquisição. |
| `impressions` | inteiro não negativo | Impressões de anúncio de aquisição no bucket; não pessoas únicas nem frequência. |
| `clicks` | inteiro não negativo | Cliques pagos atribuídos a este bucket; não visitantes únicos. |
| `landing_sessions` | inteiro não negativo | Sessões de landing com tag de origem observadas dentro de sete dias do clique pago elegível. No máximo uma sessão retida por jornada sintética de funil. |
| `quiz_starts` | inteiro não negativo | Jornadas de quiz retidas distintas com tag de origem que iniciam dentro da mesma janela de sete dias; um início retido por jornada. Denominador da taxa de conclusão. |
| `quiz_completions` | inteiro não negativo | Aquelas jornadas de quiz retidas concluídas dentro da mesma janela de sete dias; sem contagem repetida de conclusão. |
| `attributed_new_customers` | inteiro não negativo | Clientes de primeira compra que concluem este funil construído liderado por quiz dentro de sete dias, atribuídos uma vez pela regra declarada de último clique pago. Não são novos clientes de todo o site. |
| `attributed_first_purchase_revenue_cents` | inteiro não negativo em centavos de USD | Receita de primeira compra daqueles clientes, após descontos, excluindo impostos e frete. Nenhum reembolso neste fixture; nenhuma receita de renovação. O gerador atribui USD $80 (8,000 centavos) por cliente de primeira compra para clareza aritmética; esta é uma premissa de reconstrução, não preço do curso nem LTV. |
| `is_provisional` | booleano | `false` significa que a janela de observação de sete dias desta linha está madura no snapshot declarado. Rejeite coerção sem suporte de string/booleano. |

Desigualdades por linha: `impressions >= clicks >= landing_sessions >= quiz_starts >= quiz_completions >= attributed_new_customers`. Esta é uma construção explícita e simplificada de funil liderado por quiz, não uma propriedade universal de exportações de publicidade. Uma linha com zero clientes deve ter zero de receita de primeira compra; uma contagem positiva de clientes deve ter receita positiva. Estas restrições não fornecem evidência em nível de pessoa.

## Consultas canônicas e limpeza bruta

| Canal | ID de campanha canônico | Nome de exibição | Alias de ID de campanha bruto permitido |
|---|---|---|---|
| `google-search` | `gl-uk-google-search` | GreenLeaf UK Search | `gl_uk_search` → `gl-uk-google-search` |
| `linkedin` | `gl-uk-linkedin` | GreenLeaf UK LinkedIn | Nenhum |
| `reddit-paid` | `gl-uk-reddit-paid` | GreenLeaf UK Reddit pago | Nenhum |

Audiência `skeptical`: bucket construído para um comprador que busca provas e compara evidências de origem/dosagem; inspirado pela persona não validada de Oliver. Audiência `exploring`: bucket construído para um comprador que explora a categoria e considera valor. Não são especificações reais de segmentação nem atribuições de tratamento aleatorizadas; nenhuma identidade, profissão ou condição de saúde é inferida.

Criativo `traceability`: mensagem ilustrativa “Know what is in every serving” (Saiba o que há em cada porção). Criativo `value`: mensagem ilustrativa “Compare the value of a clearly dosed serving” (Compare o valor de uma porção com dosagens claramente informadas). Para o Google Search, estas são hipóteses de mensagem de anúncio de texto; para LinkedIn, hipóteses de copy de feed patrocinado; para Reddit pago, hipóteses de copy de post promovido. IDs criativos são categorias de mensagem compartilhadas dentro de cada canal, não ativos finais idênticos de anúncio nem alegações aprovadas. Nenhuma prova de eficácia ou certificação real de produto é fornecida.

Remova apenas uma duplicata exata byte a byte/campos iguais, registrando o ID da linha de origem. Normalize apenas o alias declarado e registre a contagem. Um ID desconhecido, mercado inesperado, campo ausente, data malformada, centavos/contagens não inteiros, valor negativo, duplicata conflitante ou funil impossível deve falhar a validação em vez de ser silenciosamente reparado. Preserve uma linha documentada com denominador zero para verificar o tratamento de razão indisponível. Reconcilie contagens brutas/canônicas e todos os totais de dimensão. O registro de geração do fixture deve identificar a duplicata exata, a linha de alias e a linha de denominador zero; este dicionário não afirma que essas linhas já existem.

## Métricas e regras de comparação

Use somas dentro da coorte/dimensão selecionada, depois divida; nunca faça média de taxas em nível de linha. Mantenha a precisão intermediária completa. Exiba USD dividindo centavos por 100 apenas na apresentação. Um denominador zero gera **indisponível**, nunca zero/infinito; variação percentual contra um valor anterior zero é indisponível.

| Métrica | Definição | Interpretação |
|---|---|---|
| Taxa de conclusão de quiz | `sum(quiz_completions) / sum(quiz_starts)` | KPI primário do funil; mobile pago da Semana 1/2 deve ser calibrado para 45%/28%. |
| Taxa de clique-para-início | `sum(quiz_starts) / sum(clicks)` | Diagnóstico; distinto da conclusão de quiz. |
| Taxa de clique-para-landing | `sum(landing_sessions) / sum(clicks)` | Diagnóstico, não uma taxa de rejeição verificada. |
| Taxa de conclusão-para-compra | `sum(attributed_new_customers) / sum(quiz_completions)` | Diagnóstico de funil construído liderado por quiz. |
| CTR | `sum(clicks) / sum(impressions)` | Métrica de otimização; não awareness. |
| CPC (USD) | `sum(spend_cents) / sum(clicks) / 100` | Custo de mídia por clique. |
| CPM (USD) | `sum(spend_cents) / sum(impressions) * 1000 / 100` | Custo de mídia por 1,000 impressões. |
| CPA de mídia (USD) | `sum(spend_cents) / sum(attributed_new_customers) / 100` | Proxy somente de mídia; não CAC completo. |
| ROAS atribuído de primeira compra | `sum(attributed_first_purchase_revenue_cents) / sum(spend_cents)` | Razão receita/gasto; não lucro, incrementalidade ou LTV. |
| Receita de primeira compra (USD) | `sum(attributed_first_purchase_revenue_cents) / 100` | Atribuição de coorte paga apenas; não um veredito contra a meta mensal completa de $60K. |

A variação em pontos percentuais de uma taxa é `(Week 2 rate - Week 1 rate) * 100`. A variação relativa é `(Week 2 rate / Week 1 rate - 1) * 100` quando a Semana 1 é positiva. O valor autoral 45% → 28% é igual a −17 pontos percentuais e aproximadamente −37.8% relativo; nenhum outro resultado é predeterminado por este contrato de fonte.

Antes de diagnosticar o movimento agregado mobile, estratifique o mobile por canal × audiência × criativo. Para o estrato `s`, defina o peso fixo `w_s = Week 1 starts_s / Week 1 total starts`. Compare `sum(w_s * Week 1 completion_rate_s)` com `sum(w_s * Week 2 completion_rate_s)` e compare ambos com as taxas observadas. Publique pesos e contagens. Um estrato de peso positivo sem uma taxa definida na Semana 2 torna a comparação completa de mix fixo indisponível; qualquer comparação explicitamente restrita a estratos comuns deve divulgar contagens/pesos excluídos e não pode silenciosamente substituir o todo. Um estrato de peso zero contribui com zero e não exige uma taxa. Mudança de mix e movimento dentro do estrato podem coexistir. Nenhum deles prova uma causa; as coortes não são aleatorizadas.

Um snapshot incompleto ou uma linha primária provisória torna os dois períodos completos não consolidados/não comparáveis. Não trate resultados não observados como zero. Uma comparação selecionada separadamente com cobertura madura idêntica deve declarar as datas selecionadas, exclusões e a pergunta alterada.

## Evidência indisponível e conflitos de fonte

Indisponíveis: CAC completo, lucro, retenção, LTV realizado de 12 meses, awareness, incrementalidade, receita verdadeira de todos os canais/mês, frequência, participação de impressões, taxa de rejeição, logs de eventos/releases, entrevistas com clientes e explicações causais. O 4.2% “quiz CVR” separado do ativo de origem não tem definição adequada de denominador compartilhado aqui; não o importe. Nenhuma estimativa de perda de screenshot, múltiplo de segmento, instrução orçamentária ou história causal orgânico-para-pago é um resultado derivado do fixture. Veja o mapa de fontes para fatos do curso versus premissas recém-autoradas.
