cdp-edge 2.3.8 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +304 -639
- package/bin/cdp-edge.js +3 -2
- package/dist/commands/validate.js +248 -84
- package/dist/sdk/cdpTrack.js +2095 -0
- package/dist/sdk/cdpTrack.min.js +64 -0
- package/dist/sdk/install-snippet.html +10 -0
- package/extracted-skill/tracking-events-generator/agents/devops-agent.md +22 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +53 -0
- package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +60 -6
- package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
- package/extracted-skill/tracking-events-generator/agents/utm-agent.md +285 -154
- package/extracted-skill/tracking-events-generator/anti-blocking.js +1 -1
- package/extracted-skill/tracking-events-generator/cdpTrack.js +10 -18
- package/extracted-skill/tracking-events-generator/engagement-scoring.js +2 -2
- package/extracted-skill/tracking-events-generator/micro-events.js +1 -1
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +83 -19
- package/extracted-skill/tracking-events-generator/tracking.config.js +3 -3
- package/package.json +5 -1
- package/scripts/build-sdk.js +106 -0
- package/server-edge-tracker/index.ts +174 -6
- package/server-edge-tracker/modules/intelligence.ts +155 -2
- package/server-edge-tracker/modules/ml/quiz.ts +343 -0
- package/server-edge-tracker/modules/ml/roas.ts +255 -0
- package/server-edge-tracker/modules/nurture.ts +257 -0
- package/server-edge-tracker/modules/utils.ts +2 -0
- package/server-edge-tracker/schema-quiz.sql +52 -0
- package/server-edge-tracker/schema-sales-engine.sql +113 -0
- package/templates/quiz-funnel.md +83 -19
package/templates/quiz-funnel.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# Modelo: Quiz Funnel (Cloudflare Native)
|
|
2
2
|
|
|
3
|
-
Este modelo é destinado a funis de quiz, onde o usuário responde a uma série de perguntas antes de ser redirecionado para a oferta final. O rastreamento foca na progressão do usuário e na
|
|
3
|
+
Este modelo é destinado a funis de quiz, onde o usuário responde a uma série de perguntas antes de ser redirecionado para a oferta final. O rastreamento foca na progressão do usuário e na **qualificação automática de intenção via Workers AI**.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## 🏗️ ARQUITETURA TÉCNICA (Quantum Tier)
|
|
8
8
|
|
|
9
|
-
O rastreamento segue a lógica de micro-eventos:
|
|
9
|
+
O rastreamento segue a lógica de micro-eventos + scoring automático:
|
|
10
10
|
1. **Página**: Dispara um evento a cada resposta dada no quiz via `cdpTrack.track()`.
|
|
11
|
-
2. **Servidor (Worker)**:
|
|
12
|
-
3. **
|
|
11
|
+
2. **Servidor (Worker)**: Ao receber `QuizComplete`, envia as respostas ao **Quiz Scoring Engine** (Granite 4.0 Micro) que classifica o respondente.
|
|
12
|
+
3. **Pipeline CDP**: A qualificação (`comprador | interessado | curioso | perdido`) é injetada como `intentionLevel` e flui automaticamente para LTV Prediction, Meta Signal Score, D1 e CAPI dispatch.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -19,50 +19,114 @@ O rastreamento segue a lógica de micro-eventos:
|
|
|
19
19
|
|---|---|---|
|
|
20
20
|
| **QuizStart** | Início do quiz | `quiz_name`, `source` |
|
|
21
21
|
| **QuizAnswer** | Resposta a uma pergunta | `question`, `answer`, `step` |
|
|
22
|
-
| **QuizComplete** | Finalização
|
|
22
|
+
| **QuizComplete** | Finalização + qualificação AI | `quiz_name`, `quiz_answers[]`, `result` |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 🤖 QUALIFICAÇÃO AUTOMÁTICA (Quiz Scoring Engine — Fase 6)
|
|
27
|
+
|
|
28
|
+
Ao receber `QuizComplete` com `quiz_answers`, o Worker classifica automaticamente:
|
|
29
|
+
|
|
30
|
+
| Qualificação | Significado | intent_score |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **comprador** | Pronto para comprar agora | 0.80–1.00 |
|
|
33
|
+
| **interessado** | Interesse real, avaliando | 0.50–0.79 |
|
|
34
|
+
| **curioso** | Pesquisando, sem urgência | 0.20–0.49 |
|
|
35
|
+
| **perdido** | Fora do público, sem fit | 0.00–0.19 |
|
|
36
|
+
|
|
37
|
+
O `intent_score` resultante:
|
|
38
|
+
- Alimenta o **LTV Prediction** (comprador → LTV High automaticamente)
|
|
39
|
+
- Compõe o **Meta Signal Score** (pesos dinâmicos por funil)
|
|
40
|
+
- Persiste em `leads.intention_level` e `quiz_sessions` no D1
|
|
41
|
+
- É enviado como `custom_data` para Meta CAPI, GA4 e TikTok
|
|
23
42
|
|
|
24
43
|
---
|
|
25
44
|
|
|
26
45
|
## 🛠️ PASSO 1: CONFIGURAÇÃO DO SITE
|
|
27
46
|
|
|
28
47
|
### 1.1 Rastreamento de Respostas
|
|
29
|
-
|
|
48
|
+
Acumule as respostas do quiz em um array local.
|
|
30
49
|
|
|
31
50
|
```javascript
|
|
32
|
-
|
|
51
|
+
const quizAnswers = [];
|
|
52
|
+
|
|
33
53
|
function onResponder(pergunta, resposta, etapa) {
|
|
54
|
+
// Armazena localmente para enviar no QuizComplete
|
|
55
|
+
quizAnswers.push({ question: pergunta, answer: resposta, step: etapa });
|
|
56
|
+
|
|
57
|
+
// Dispara micro-evento por resposta (opcional, para análise granular)
|
|
34
58
|
cdpTrack.track('QuizAnswer', {
|
|
35
59
|
question: pergunta,
|
|
36
60
|
answer: resposta,
|
|
37
61
|
step: etapa,
|
|
38
|
-
event_id: cdpTrack.generateId()
|
|
62
|
+
event_id: cdpTrack.generateId(),
|
|
39
63
|
});
|
|
40
64
|
}
|
|
41
65
|
```
|
|
42
66
|
|
|
43
|
-
### 1.2 Finalização do Quiz
|
|
44
|
-
|
|
67
|
+
### 1.2 Finalização do Quiz — com qualificação AI automática
|
|
68
|
+
Envie todas as respostas no `QuizComplete`. O Worker qualifica automaticamente.
|
|
45
69
|
|
|
46
70
|
```javascript
|
|
47
71
|
cdpTrack.track('QuizComplete', {
|
|
48
|
-
|
|
49
|
-
|
|
72
|
+
quiz_name: 'Diagnóstico de Perfil', // nome para o dashboard
|
|
73
|
+
quiz_answers: quizAnswers, // array com todas as respostas
|
|
74
|
+
result: 'Perfil_A', // resultado exibido ao usuário (opcional)
|
|
75
|
+
event_id: cdpTrack.generateId(),
|
|
50
76
|
});
|
|
51
77
|
```
|
|
52
78
|
|
|
79
|
+
### 1.3 Resposta do Worker
|
|
80
|
+
O endpoint `/track` retorna a qualificação para uso imediato no front:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"ok": true,
|
|
85
|
+
"userProfile": {
|
|
86
|
+
"score": 87,
|
|
87
|
+
"user_id": "uuid-xxx"
|
|
88
|
+
},
|
|
89
|
+
"quiz_qualification": "comprador",
|
|
90
|
+
"quiz_confidence": 0.91,
|
|
91
|
+
"quiz_signals": ["quero comprar", "tenho budget", "agora"],
|
|
92
|
+
"intent_score": 0.92,
|
|
93
|
+
"intent_bucket": "high"
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Use esses campos para personalizar o redirecionamento pós-quiz no front-end.
|
|
98
|
+
|
|
53
99
|
---
|
|
54
100
|
|
|
55
101
|
## ⚡ PASSO 2: SERVIDOR (CLOUDFLARE WORKER)
|
|
56
102
|
|
|
57
|
-
O Worker realiza:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
103
|
+
O Worker realiza automaticamente na ordem:
|
|
104
|
+
|
|
105
|
+
1. **Quiz Scoring Engine**: Granite 4.0 Micro classifica as respostas → `qualification` + `intent_score`
|
|
106
|
+
2. **LTV Prediction**: usa `intentionLevel = 'comprador'` → LTV High → valor previsto em BRL
|
|
107
|
+
3. **Meta Signal Score**: `intent_score` compõe o score composto (intent × ltv × distância)
|
|
108
|
+
4. **D1 Writes**: `quiz_sessions` + `leads.intention_level` + `user_profiles.cohort_label`
|
|
109
|
+
5. **CAPI Dispatch**: Meta/GA4/TikTok recebem evento com `custom_data.intention = 'comprador'`
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🔀 FALLBACK HEURÍSTICO
|
|
114
|
+
|
|
115
|
+
Se Workers AI estiver indisponível (timeout, cold start), o sistema usa correspondência de palavras-chave:
|
|
116
|
+
|
|
117
|
+
- `comprador`: "quero", "comprar", "agora", "tenho interesse", "quanto custa"
|
|
118
|
+
- `interessado`: "talvez", "pensando", "em breve", "estou avaliando"
|
|
119
|
+
- `curioso`: "só olhando", "pesquisando", "curiosidade"
|
|
120
|
+
- `perdido`: "não entendi", "errei aqui", "não é para mim"
|
|
121
|
+
|
|
122
|
+
O campo `quiz_source` indica `"ai"` ou `"heuristic"` para auditoria.
|
|
61
123
|
|
|
62
124
|
---
|
|
63
125
|
|
|
64
126
|
## ✅ VALIDAÇÃO TÉCNICA
|
|
65
127
|
|
|
66
|
-
- **Persistência**:
|
|
67
|
-
- **Deduplicação**:
|
|
68
|
-
- **
|
|
128
|
+
- **Persistência**: `quiz_sessions` no D1 — jornada completa por `user_id`
|
|
129
|
+
- **Deduplicação**: `event_id` único por evento evita contagens duplicadas
|
|
130
|
+
- **Enriquecimento retroativo**: e-mail preenchido pós-quiz associa todas as respostas ao perfil
|
|
131
|
+
- **Match Quality**: `comprador` com e-mail → score máximo na CAPI Meta
|
|
132
|
+
- **VIEW de dashboard**: `v_quiz_qualification_summary` — distribuição de qualificações por quiz
|