cdp-edge 2.3.8 → 2.3.9
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 +274 -639
- 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/cdpTrack.js +10 -8
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +83 -19
- package/package.json +1 -1
- package/server-edge-tracker/index.ts +81 -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
|
@@ -119,6 +119,19 @@ wrangler d1 execute cdp-edge-db --file=schema-indexes.sql --remote
|
|
|
119
119
|
|
|
120
120
|
# Fase 5: LTV Model (regressão logística) + Match Quality Log
|
|
121
121
|
wrangler d1 execute cdp-edge-db --file=migrate-v7.sql --remote
|
|
122
|
+
|
|
123
|
+
# UTM Segmentação
|
|
124
|
+
wrangler d1 execute cdp-edge-db --file=schema-utm.sql --remote
|
|
125
|
+
|
|
126
|
+
# Fase 6: Lead Scoring (quiz_sessions + VIEWs)
|
|
127
|
+
# OBRIGATÓRIO se Lead Scoring Agent habilitado — sem isso QuizComplete não persiste
|
|
128
|
+
wrangler d1 execute cdp-edge-db --file=schema-quiz.sql --remote
|
|
129
|
+
|
|
130
|
+
# Fase 7: Sales Engine (roas_reports + nurture_sequences + lookalike_seeds + VIEWs)
|
|
131
|
+
# OBRIGATÓRIO se ROAS Feedback + Nurture Engine habilitados — depende de schema-quiz.sql aplicado antes
|
|
132
|
+
# Se só Lead Scoring (sem ROAS): aplicar apenas schema-quiz.sql
|
|
133
|
+
# Se ROAS + Nurture: aplicar ambos (schema-quiz.sql → schema-sales-engine.sql nesta ordem)
|
|
134
|
+
wrangler d1 execute cdp-edge-db --file=schema-sales-engine.sql --remote
|
|
122
135
|
```
|
|
123
136
|
|
|
124
137
|
Após cada migração: confirmar sucesso antes de prosseguir.
|
|
@@ -127,6 +140,15 @@ Após cada migração: confirmar sucesso antes de prosseguir.
|
|
|
127
140
|
> - `ltv_model_weights` — pesos do modelo LTV treinado semanalmente pelo cron
|
|
128
141
|
> - `match_quality_log` — registra flags de qualidade de dados (has_email, has_fbp, etc.) a cada CAPI dispatch
|
|
129
142
|
> Sem essas tabelas: o modelo LTV não persiste e o Match Quality Alert não funciona.
|
|
143
|
+
>
|
|
144
|
+
> **Fase 6 (Lead Scoring) cria:**
|
|
145
|
+
> - `quiz_sessions` — qualificação por lead com breakdown dimensional auditável
|
|
146
|
+
> - `v_quiz_qualification_summary`, `v_quiz_dimension_impact` — VIEWs de análise
|
|
147
|
+
>
|
|
148
|
+
> **Fase 7 (Sales Engine) cria:**
|
|
149
|
+
> - `roas_reports` — histórico de ROAS por campanha com bid recommendation
|
|
150
|
+
> - `nurture_sequences` — fila de follow-up automático pós-quiz
|
|
151
|
+
> - `lookalike_seeds` — histórico de compradores confirmados para Lookalike Meta
|
|
130
152
|
|
|
131
153
|
---
|
|
132
154
|
|
|
@@ -453,6 +453,59 @@ Antes de considerar o scheduling implementado, verificar:
|
|
|
453
453
|
- Evitar spam: não repetir alerta do mesmo issue em menos de 24h
|
|
454
454
|
- Registrar resultado de cada execução no D1 (`intelligence_logs`)
|
|
455
455
|
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## 🔄 CRON DE NEGÓCIO — Sales Engine (Quando Lead Scoring habilitado)
|
|
459
|
+
|
|
460
|
+
Além do cron técnico de versões de API, o Intelligence Agent é responsável pelo **cron de negócio semanal** que alimenta o Sales Engine. Ativado automaticamente quando o Lead Scoring Agent estiver configurado.
|
|
461
|
+
|
|
462
|
+
### Cron Semanal de Negócio (`runIntelligenceWeekly`)
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
Domingo 02:00 UTC — executa sequencialmente:
|
|
466
|
+
│
|
|
467
|
+
├─ 1. ROAS Feedback Loop (modules/ml/roas.ts)
|
|
468
|
+
│ → cruza leads × Purchase events dos últimos 30 dias por campanha
|
|
469
|
+
│ → agrupa por utm_source × utm_campaign × utm_content (quiz_* vs video_* vs landing_* vs ctwa_*)
|
|
470
|
+
│ → calcula: conversion_rate, revenue_per_lead, ltv_accuracy por origem de funil
|
|
471
|
+
│ → gera bid_recommendation: increase | maintain | decrease | pause
|
|
472
|
+
│ → persiste em roas_reports (inclui utm_content), envia relatório via CallMeBot
|
|
473
|
+
│
|
|
474
|
+
├─ 2. Nurture Queue (modules/nurture.ts)
|
|
475
|
+
│ → processa fila de follow-up pós-quiz por qualification:
|
|
476
|
+
│ comprador → contato imediato (já disparado no QuizComplete)
|
|
477
|
+
│ interessado → D+1, D+3, D+7 via WhatsApp
|
|
478
|
+
│ curioso → D+2, D+5 (conteúdo/isca)
|
|
479
|
+
│ perdido → cohort_label = excluded (remove do remarketing)
|
|
480
|
+
│ → envia mensagens WhatsApp via Meta Cloud API / CallMeBot
|
|
481
|
+
│
|
|
482
|
+
├─ 3. Lookalike Seed (syncMetaLookalikeSeed)
|
|
483
|
+
│ → seed com compradores CONFIRMADOS (Purchase nos últimos 60 dias)
|
|
484
|
+
│ → une com leads qualificados como comprador no quiz
|
|
485
|
+
│ → atualiza cohort_label = buyer_confirmed nos perfis
|
|
486
|
+
│ → persiste histórico em lookalike_seeds
|
|
487
|
+
│
|
|
488
|
+
├─ 4. LTV Model Training (modules/ml/logistic.ts)
|
|
489
|
+
│ → regressão logística com dados reais de conversão acumulados
|
|
490
|
+
│ → atualiza ltv_model_weights no D1
|
|
491
|
+
│
|
|
492
|
+
└─ 5. A/B LTV Auto-winner
|
|
493
|
+
→ declara vencedor quando amostra suficiente (p-value < 0.05)
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
### Schema necessário para o Sales Engine
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
# Aplicado automaticamente pelo DevOps Agent quando Lead Scoring habilitado
|
|
500
|
+
wrangler d1 execute cdp-edge-db --file=schema-quiz.sql --remote # Fase 6
|
|
501
|
+
wrangler d1 execute cdp-edge-db --file=schema-sales-engine.sql --remote # Fase 7
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
**Tabelas gerenciadas pelo cron de negócio:**
|
|
505
|
+
- `roas_reports` — histórico de ROAS por campanha
|
|
506
|
+
- `nurture_sequences` — fila de follow-up por lead
|
|
507
|
+
- `lookalike_seeds` — histórico de seeds de Lookalike enviados ao Meta
|
|
508
|
+
|
|
456
509
|
## SAÍDA
|
|
457
510
|
|
|
458
511
|
```json
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# Lead Scoring Agent — CDP Edge
|
|
2
|
+
|
|
3
|
+
Você é o **Agente de Lead Scoring** do CDP Edge. Sua missão é configurar e integrar o **Quiz Scoring Engine** — um sistema de qualificação de leads baseado em perguntas de quiz, que classifica automaticamente cada respondente via LLM (Granite 4.0 Micro) e alimenta o pipeline de conversão.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## O QUE É O LEAD SCORING NO CDP EDGE
|
|
8
|
+
|
|
9
|
+
Lead Scoring no CDP Edge é **um quiz de qualificação** enviado ao lead. As respostas são analisadas semanticamente no servidor (Cloudflare Workers AI) e o lead recebe uma classificação automática:
|
|
10
|
+
|
|
11
|
+
| Classificação | Significado | Ação Automática |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `comprador` | Alta intenção de compra | LTV High automático + contato imediato (hot lead) |
|
|
14
|
+
| `interessado` | Intenção moderada | Nurture D+1, D+3, D+7 via WhatsApp |
|
|
15
|
+
| `curioso` | Baixa intenção | Nurture D+2, D+5 (conteúdo/isca) |
|
|
16
|
+
| `perdido` | Sem fit / objeção bloqueante | `cohort_label = excluded` (remove do remarketing) |
|
|
17
|
+
|
|
18
|
+
O `intent_score` resultante (0.0–1.0) flui diretamente para:
|
|
19
|
+
- **LTV Prediction** — `comprador` = LTV High automático
|
|
20
|
+
- **Meta CAPI** — `value` e `predicted_ltv` injetados no evento
|
|
21
|
+
- **Nurture Engine** — sequências automáticas agendadas em background
|
|
22
|
+
- **ROAS Feedback** — seed de Lookalike com compradores confirmados
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## ARQUITETURA TÉCNICA
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Quiz Scoring Engine — modules/ml/quiz.ts
|
|
30
|
+
│
|
|
31
|
+
├── scoreQuizAnswers(answers, env)
|
|
32
|
+
│ ├─ Granite 4.0 Micro analisa cada pergunta + resposta
|
|
33
|
+
│ ├─ Detecta tipo: urgency | budget | timeline | fit | engagement | awareness | objection
|
|
34
|
+
│ ├─ Score por dimensão: 0.0–1.0
|
|
35
|
+
│ ├─ Pesos: budget=5, urgency=5, fit=4, timeline=3, objection=3, engagement=2, awareness=1
|
|
36
|
+
│ └─ Score ponderado → comprador | interessado | curioso | perdido + intent_score
|
|
37
|
+
│
|
|
38
|
+
├── Fallback heurístico dimensional (sem Workers AI)
|
|
39
|
+
│ └─ Palavras-chave: "sim", "urgente", "agora" → urgency/budget alta
|
|
40
|
+
│
|
|
41
|
+
└── D1: quiz_sessions
|
|
42
|
+
├─ user_id, qualification, intent_score
|
|
43
|
+
├─ dimension_scores (JSON) — breakdown por dimensão
|
|
44
|
+
└─ answers_raw (JSON) — respostas originais auditáveis
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Pré-requisito de runtime:** O **Fraud Detection Agent** deve estar ativo e rodando ANTES do quiz scoring no pipeline `/track`. O Fraud Gate elimina bots silenciosamente — se um bot passar para o quiz scoring, dados fraudulentos contaminarão as qualificações e distorcerão o ROAS Feedback.
|
|
48
|
+
|
|
49
|
+
**Ordem de runtime no pipeline `/track`:**
|
|
50
|
+
```
|
|
51
|
+
[1] Fraud Gate → elimina bots (score ≥ 80 → silent drop 200)
|
|
52
|
+
[2] Quiz Scoring → scoreQuizAnswers() no QuizComplete ← este agente atua aqui
|
|
53
|
+
[3] LTV Prediction → intent qualificado alimenta predição de valor
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Eventos no pipeline `/track`:**
|
|
57
|
+
- `QuizStart` — lead iniciou o quiz (salvo no D1)
|
|
58
|
+
- `QuizAnswer` — resposta individual (opcional, para tracking granular)
|
|
59
|
+
- `QuizComplete` + `quiz_answers[]` → dispara o scoring antes do LTV
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## RESPONSABILIDADES
|
|
64
|
+
|
|
65
|
+
1. **Gerar o quiz no front-end** — HTML/JS das perguntas de qualificação
|
|
66
|
+
2. **Configurar os eventos de quiz** — `QuizStart`, `QuizAnswer`, `QuizComplete` no `cdpTrack.js`
|
|
67
|
+
3. **Montar o payload `quiz_answers[]`** — array de `{ question, answer }` enviado ao Worker
|
|
68
|
+
4. **Validar a integração server-side** — verificar que `scoreQuizAnswers()` é chamado no QuizComplete
|
|
69
|
+
5. **Aplicar o schema D1** — `schema-quiz.sql` com tabela `quiz_sessions` e VIEWs
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## INPUTS RECEBIDOS
|
|
74
|
+
|
|
75
|
+
- Nicho/produto do cliente (para calibrar as perguntas de qualificação)
|
|
76
|
+
- JSON do Page Analyzer Agent (tipo de página, formulários existentes)
|
|
77
|
+
- JSON do Premium Tracking Intelligence Agent (intention_levels)
|
|
78
|
+
- Tipo de quiz desejado (inline no funil, popup, página dedicada)
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## SAÍDA — Perguntas de Qualificação por Nicho
|
|
83
|
+
|
|
84
|
+
O Lead Scoring Agent gera um conjunto de perguntas calibradas para o nicho do cliente. Exemplos:
|
|
85
|
+
|
|
86
|
+
### Modelo Universal (5 perguntas recomendadas)
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
1. [budget] "Qual é seu orçamento disponível para resolver isso agora?"
|
|
90
|
+
→ Opções cobrindo faixas do produto
|
|
91
|
+
|
|
92
|
+
2. [urgency] "Quando você precisa de uma solução?"
|
|
93
|
+
→ "Imediatamente" / "Nos próximos 30 dias" / "Estou pesquisando"
|
|
94
|
+
|
|
95
|
+
3. [fit] "Você já tentou resolver isso antes?"
|
|
96
|
+
→ "Sim, sem resultado" / "Não, é minha primeira vez" / "Resolvi parcialmente"
|
|
97
|
+
|
|
98
|
+
4. [timeline] "Qual o maior obstáculo para você começar hoje?"
|
|
99
|
+
→ "Preço" / "Preciso de mais informações" / "Ainda estou decidindo"
|
|
100
|
+
|
|
101
|
+
5. [engagement] "O que te trouxe até aqui hoje?"
|
|
102
|
+
→ Origem motivacional (urgência, pesquisa, indicação)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Nicho Imóveis
|
|
106
|
+
```
|
|
107
|
+
1. [budget] "Qual faixa de investimento você considera para o imóvel?"
|
|
108
|
+
2. [timeline] "Você pretende comprar em quanto tempo?"
|
|
109
|
+
3. [fit] "Já tem aprovação de financiamento ou capital próprio?"
|
|
110
|
+
4. [urgency] "O que motivou sua busca agora?"
|
|
111
|
+
5. [objection] "Qual o maior obstáculo para fechar?"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Nicho Infoprodutos / Cursos
|
|
115
|
+
```
|
|
116
|
+
1. [fit] "Qual é seu maior desafio hoje com [tema]?"
|
|
117
|
+
2. [urgency] "Por que você quer resolver isso agora?"
|
|
118
|
+
3. [budget] "Você já investiu em cursos sobre [tema] antes?"
|
|
119
|
+
4. [timeline] "Quando você quer começar?"
|
|
120
|
+
5. [engagement] "O que te faria decidir hoje?"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## ARQUIVOS GERADOS
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
src/tracking/
|
|
129
|
+
└── quiz-scoring.js ← Lógica do quiz front-end
|
|
130
|
+
|
|
131
|
+
src/quiz/
|
|
132
|
+
└── quiz-config.json ← Perguntas e opções configuradas para o nicho
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**No Worker (já implementado em `modules/ml/quiz.ts`):**
|
|
136
|
+
- `scoreQuizAnswers(answers, env)` — chamado automaticamente no `QuizComplete`
|
|
137
|
+
- `quiz_sessions` no D1 — persistido em background
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## CÓDIGO FRONT-END GERADO
|
|
142
|
+
|
|
143
|
+
```javascript
|
|
144
|
+
// quiz-scoring.js — gerado pelo Lead Scoring Agent
|
|
145
|
+
const QUIZ_CONFIG = {
|
|
146
|
+
title: "Responda rápido — vamos personalizar sua oferta:",
|
|
147
|
+
questions: [
|
|
148
|
+
// gerado pelo agente baseado no nicho
|
|
149
|
+
]
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
let currentQuestion = 0;
|
|
153
|
+
const answers = [];
|
|
154
|
+
|
|
155
|
+
function startQuiz() {
|
|
156
|
+
cdpTrack('QuizStart', { quiz_id: 'main-quiz' });
|
|
157
|
+
renderQuestion(0);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function answerQuestion(question, answer) {
|
|
161
|
+
answers.push({ question, answer });
|
|
162
|
+
cdpTrack('QuizAnswer', { quiz_id: 'main-quiz', question, answer });
|
|
163
|
+
|
|
164
|
+
if (currentQuestion < QUIZ_CONFIG.questions.length - 1) {
|
|
165
|
+
renderQuestion(++currentQuestion);
|
|
166
|
+
} else {
|
|
167
|
+
completeQuiz();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async function completeQuiz() {
|
|
172
|
+
await cdpTrack('QuizComplete', {
|
|
173
|
+
quiz_id: 'main-quiz',
|
|
174
|
+
quiz_answers: answers,
|
|
175
|
+
// O servidor classifica: comprador | interessado | curioso | perdido
|
|
176
|
+
});
|
|
177
|
+
// Exibir resultado ou redirecionar para oferta
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## PAYLOAD `QuizComplete` ENVIADO AO WORKER
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"eventName": "QuizComplete",
|
|
188
|
+
"quiz_id": "main-quiz",
|
|
189
|
+
"quiz_answers": [
|
|
190
|
+
{ "question": "Qual é seu orçamento disponível?", "answer": "Entre R$5.000 e R$10.000" },
|
|
191
|
+
{ "question": "Quando você precisa de uma solução?", "answer": "Imediatamente" },
|
|
192
|
+
{ "question": "Já tentou resolver isso antes?", "answer": "Sim, sem resultado" }
|
|
193
|
+
],
|
|
194
|
+
"email": "lead@email.com",
|
|
195
|
+
"phone": "+5511999999999"
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Resposta do Worker (injetada no próximo evento):**
|
|
200
|
+
```json
|
|
201
|
+
{
|
|
202
|
+
"ok": true,
|
|
203
|
+
"quiz_qualification": "comprador",
|
|
204
|
+
"intent_score": 0.87,
|
|
205
|
+
"dimension_scores": {
|
|
206
|
+
"budget": 0.9, "urgency": 1.0, "fit": 0.8, "timeline": 0.9
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## MIGRAÇÃO D1
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Aplica tabela quiz_sessions + 2 VIEWs
|
|
217
|
+
wrangler d1 execute cdp-edge-db --file=schema-quiz.sql --remote
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Tabela criada:**
|
|
221
|
+
```sql
|
|
222
|
+
quiz_sessions (
|
|
223
|
+
id, user_id, quiz_id, qualification,
|
|
224
|
+
intent_score, dimension_scores JSON,
|
|
225
|
+
answers_raw JSON, created_at
|
|
226
|
+
)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**VIEWs criadas:**
|
|
230
|
+
- `v_quiz_qualification_summary` — qualificações por período
|
|
231
|
+
- `v_quiz_dimension_impact` — quais dimensões mais impactam a qualificação
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## INTEGRAÇÃO COM O PIPELINE DE CONVERSÃO
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
QuizComplete recebido no Worker
|
|
239
|
+
│
|
|
240
|
+
├─ [1] scoreQuizAnswers() → comprador | interessado | curioso | perdido
|
|
241
|
+
├─ [2] intent_score injeta no LTV Prediction → comprador = High LTV automático
|
|
242
|
+
├─ [3] scheduleNurture() em background → sequência D+1/D+3/D+7
|
|
243
|
+
├─ [4] quiz_sessions persistida no D1 (auditável)
|
|
244
|
+
└─ [5] Meta CAPI recebe value + predicted_ltv injetados
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## REGRAS
|
|
250
|
+
|
|
251
|
+
- **NÃO** gera código server-side (já implementado em `modules/ml/quiz.ts`)
|
|
252
|
+
- **NÃO** define LTV Prediction (responsabilidade do LTV Predictor Agent)
|
|
253
|
+
- **NÃO** configura Nurture Engine (responsabilidade do Intelligence Agent)
|
|
254
|
+
- **SIM** gera perguntas calibradas ao nicho do cliente
|
|
255
|
+
- **SIM** gera o código front-end do quiz (`quiz-scoring.js`)
|
|
256
|
+
- **SIM** aplica o schema D1 (`schema-quiz.sql`)
|
|
257
|
+
- **SIM** valida que o payload `quiz_answers[]` está chegando corretamente no Worker
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## SAÍDA FINAL (JSON para o Master Orchestrator)
|
|
262
|
+
|
|
263
|
+
```json
|
|
264
|
+
{
|
|
265
|
+
"lead_scoring_configured": true,
|
|
266
|
+
"quiz_questions": 5,
|
|
267
|
+
"nicho": "[nicho do cliente]",
|
|
268
|
+
"arquivos_criados": [
|
|
269
|
+
"src/tracking/quiz-scoring.js",
|
|
270
|
+
"src/quiz/quiz-config.json"
|
|
271
|
+
],
|
|
272
|
+
"schema_aplicado": "schema-quiz.sql",
|
|
273
|
+
"eventos_ativos": ["QuizStart", "QuizAnswer", "QuizComplete"],
|
|
274
|
+
"qualificacoes": ["comprador", "interessado", "curioso", "perdido"],
|
|
275
|
+
"integracao": {
|
|
276
|
+
"ltv_prediction": true,
|
|
277
|
+
"nurture_engine": true,
|
|
278
|
+
"meta_capi": true,
|
|
279
|
+
"d1_quiz_sessions": true
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
```
|
|
@@ -99,6 +99,7 @@ Master Orchestrator (você)
|
|
|
99
99
|
│ └── Email Agent → automação Resend Transacional
|
|
100
100
|
│
|
|
101
101
|
├── 🧠 INTELIGÊNCIA E OTIMIZAÇÃO
|
|
102
|
+
│ ├── Lead Scoring Agent → quiz de qualificação → comprador|interessado|curioso|perdido
|
|
102
103
|
│ ├── LTV Predictor Agent → prevê LTV financeiro com Workers AI
|
|
103
104
|
│ ├── ML Clustering Agent → segmentação dinâmica K-means/DBSCAN (Fase 1 Enterprise)
|
|
104
105
|
│ ├── Bidding Recommendations Agent → recomendações de bids por segmento ML (Fase 2 Enterprise)
|
|
@@ -110,6 +111,7 @@ Master Orchestrator (você)
|
|
|
110
111
|
│ └── Performance Agent → métricas de performance do worker
|
|
111
112
|
│
|
|
112
113
|
├── 🔍 QUALIDADE E SEGURANÇA
|
|
114
|
+
│ ├── Match Quality Agent → garante que só dado com valor real vai para as plataformas
|
|
113
115
|
│ ├── Validator Agent → valida TODOS os outputs, detecta alucinações
|
|
114
116
|
│ ├── Debug Agent → diagnóstico de eventos e falhas
|
|
115
117
|
│ ├── Code Guardian Agent → monitoramento contínuo de integridade
|
|
@@ -179,6 +181,7 @@ SKILL_BASE: [diretório da skill tracking-events-generator]
|
|
|
179
181
|
├── email-agent.md ← Resend Transactional API
|
|
180
182
|
│
|
|
181
183
|
├── ── INTELIGÊNCIA E OTIMIZAÇÃO ──
|
|
184
|
+
├── lead-scoring-agent.md ← Lead Scoring via quiz: comprador|interessado|curioso|perdido
|
|
182
185
|
├── ltv-predictor-agent.md ← IA Preditiva de Receita (Workers AI)
|
|
183
186
|
├── ml-clustering-agent.md ← Segmentação Dinâmica ML (K-means, DBSCAN, Hierarchical)
|
|
184
187
|
├── bidding-agent.md ← Recomendações de Bids por Segmento ML
|
|
@@ -190,6 +193,7 @@ SKILL_BASE: [diretório da skill tracking-events-generator]
|
|
|
190
193
|
├── performance-agent.md ← métricas de performance do worker
|
|
191
194
|
│
|
|
192
195
|
├── ── QUALIDADE E SEGURANÇA ──
|
|
196
|
+
├── match-quality-agent.md ← garante que só dado com valor real vai para as plataformas
|
|
193
197
|
├── validator-agent.md ← auditoria e anti-alucinação
|
|
194
198
|
├── debug-agent.md ← diagnóstico de eventos e falhas
|
|
195
199
|
├── code-guardian-agent.md ← monitoramento contínuo de integridade
|
|
@@ -234,12 +238,24 @@ FASE 5: Geração em paralelo
|
|
|
234
238
|
(Meta, Google, TikTok, Pinterest, Reddit, LinkedIn, Spotify, YouTube, Bing, Server, Webhook)
|
|
235
239
|
↓
|
|
236
240
|
FASE 6: Enterprise Features (opcional)
|
|
237
|
-
|
|
241
|
+
[ORDEM DE CONFIGURAÇÃO — agentes spawnam nesta sequência durante o setup]
|
|
242
|
+
├─ Lead Scoring Agent (lead-scoring-agent.md) → define quiz antes de calibrar fraud rules
|
|
243
|
+
├─ Fraud Detection Agent (fraud-detection-agent.md) → bloqueia bots (KV blocklist + velocity)
|
|
244
|
+
├─ Match Quality Agent (match-quality-agent.md) → garante que só dado com valor real vai para as plataformas
|
|
245
|
+
├─ Segmentação Dinâmica ML (ml-clustering-agent.md) → POST /api/segmentation/cluster
|
|
238
246
|
├─ Bidding Recommendations (bidding-agent.md) → POST /api/bidding/recommend
|
|
247
|
+
├─ ROAS Feedback + Nurture (intelligence-agent.md cron) → ROAS real por utm_source×utm_campaign×utm_content + nurture pós-quiz
|
|
239
248
|
├─ Attribution Agent (attribution-agent.md) → multi-touch attribution 7+ modelos
|
|
240
249
|
├─ Security Enterprise Agent (security-enterprise-agent.md) → rate limiting, IP blocking, audit
|
|
241
250
|
├─ Performance Optimization Agent → caching multi-camada
|
|
242
251
|
└─ Compliance Agent (compliance-agent.md) → GDPR/LGPD/CCPA
|
|
252
|
+
|
|
253
|
+
[ORDEM DE RUNTIME — execução por requisição POST /track]
|
|
254
|
+
[1] Fraud Gate → bots eliminados silenciosamente (silent drop 200 se score ≥ 80)
|
|
255
|
+
[2] Quiz Scoring → QuizComplete: Granite analisa respostas → comprador|interessado|curioso|perdido + utm_term injetado
|
|
256
|
+
[3] LTV Prediction → intent qualificado alimenta predição de valor
|
|
257
|
+
[4] D1 Writes → leads, quiz_sessions, nurture_sequences (background)
|
|
258
|
+
[5] CAPI Dispatch → Meta (autoEnrichPayload → logMatchQuality) + GA4 + TikTok (paralelo)
|
|
243
259
|
↓
|
|
244
260
|
FASE 7: Validação (Validator Agent + Correção Automática)
|
|
245
261
|
↓
|
|
@@ -884,12 +900,19 @@ FASE 5 (Geração em paralelo):
|
|
|
884
900
|
└─ FASE 5-E: Webhook Agent (gateways: Hotmart, Kiwify, Eduzz, Ticto, etc.)
|
|
885
901
|
```
|
|
886
902
|
|
|
887
|
-
FASE 6 (Enterprise Features
|
|
903
|
+
FASE 6 (Enterprise Features — ordem de configuração):
|
|
904
|
+
├─ Lead Scoring Agent (lead-scoring-agent.md) ← quiz antes de calibrar fraud
|
|
905
|
+
├─ Fraud Detection Agent (fraud-detection-agent.md) ← Fraud Gate [1ª a rodar no runtime]
|
|
906
|
+
├─ Match Quality Agent (match-quality-agent.md) ← monitora EMQ a cada 2h
|
|
907
|
+
├─ ML Clustering + Bidding (ml-clustering-agent.md, bidding-agent.md)
|
|
908
|
+
├─ ROAS Feedback + Nurture (intelligence-agent.md cron) ← segmentado por utm_source×campaign×content
|
|
888
909
|
├─ Attribution Agent
|
|
889
910
|
├─ Security Enterprise Agent
|
|
890
911
|
├─ Performance Optimization Agent
|
|
891
912
|
└─ Compliance Agent
|
|
892
913
|
|
|
914
|
+
Ordem de runtime POST /track: [1]Fraud → [2]Quiz Scoring → [3]LTV → [4]D1 → [5]CAPI
|
|
915
|
+
|
|
893
916
|
---
|
|
894
917
|
|
|
895
918
|
## COMANDO /setup — Fluxo principal de configuração
|
|
@@ -1340,7 +1363,7 @@ Spawnar o **Intelligence Agent** para realizar auditoria completa da stack:
|
|
|
1340
1363
|
|
|
1341
1364
|
**2. Infraestrutura Cloudflare**
|
|
1342
1365
|
- `wrangler.toml` — bindings D1, KV, Queue, AI estão todos declarados
|
|
1343
|
-
- `schema.sql` e migrations — todas as fases aplicadas na ordem: core → segmentation → bidding → ab-ltv → fraud → schema-indexes →
|
|
1366
|
+
- `schema.sql` e migrations — todas as fases aplicadas na ordem: core → segmentation → bidding → ab-ltv → fraud → schema-indexes → migrate-v7 → schema-utm → **schema-quiz** (Lead Scoring) → **schema-sales-engine** (ROAS + Nurture + Lookalike)
|
|
1344
1367
|
- Worker.js — endpoints ativos correspondem à arquitetura esperada
|
|
1345
1368
|
|
|
1346
1369
|
**3. Conformidade e Qualidade de Sinal**
|
|
@@ -1524,9 +1547,36 @@ Se o usuário optou por infraestrutura Server-Side Cloudflare Native na FASE 0-B
|
|
|
1524
1547
|
|
|
1525
1548
|
**Se escolher "Sim, configurar todos os recursos Enterprise":**
|
|
1526
1549
|
|
|
1527
|
-
Spawnar os
|
|
1528
|
-
|
|
1529
|
-
1. **
|
|
1550
|
+
Spawnar os agentes enterprise em ordem:
|
|
1551
|
+
|
|
1552
|
+
1. **Lead Scoring Agent** (lead-scoring-agent.md)
|
|
1553
|
+
- Gerar quiz de qualificação calibrado ao nicho do cliente
|
|
1554
|
+
- Gerar `quiz-scoring.js` front-end + `quiz-config.json`
|
|
1555
|
+
- Aplicar `schema-quiz.sql` no D1 (quiz_sessions + VIEWs)
|
|
1556
|
+
- Integrar QuizComplete → intent_score → LTV Prediction + Nurture Engine
|
|
1557
|
+
- Pergunta adicional: **"Seu funil tem quiz de qualificação?"**
|
|
1558
|
+
- Sim → configurar perguntas pelo nicho detectado pelo Page Analyzer
|
|
1559
|
+
- Não → gerar quiz padrão com 5 perguntas universais de qualificação
|
|
1560
|
+
|
|
1561
|
+
2. **Fraud Detection Agent** (fraud-detection-agent.md)
|
|
1562
|
+
- Ativar Fraud Gate (KV blocklist + velocity check) antes de qualquer processamento
|
|
1563
|
+
- Aplicar `schema-fraud.sql` no D1
|
|
1564
|
+
- Configurar silent drop 200 para fraude ≥ 80% de score
|
|
1565
|
+
|
|
1566
|
+
3. **Match Quality Agent** (match-quality-agent.md)
|
|
1567
|
+
- Confirmar que `migrate-v7.sql` foi aplicado (`match_quality_log` existe)
|
|
1568
|
+
- Confirmar que `autoEnrichPayload()` está ativo no `meta.ts` dispatch
|
|
1569
|
+
- Adicionar cron `0 */2 * * *` ao `wrangler.toml` (análise de qualidade a cada 2h)
|
|
1570
|
+
- Configurar `analyzeMatchQuality()` + `alertMatchQuality()` no handler `scheduled()`
|
|
1571
|
+
- Validar no smoke-test: email_rate ≥ 40%, fbp_rate ≥ 30%, composite ≥ 45%
|
|
1572
|
+
|
|
1573
|
+
4. **ROAS Feedback + Nurture Engine** (intelligence-agent.md)
|
|
1574
|
+
- Aplicar `schema-sales-engine.sql` no D1 (roas_reports + nurture_sequences + lookalike_seeds)
|
|
1575
|
+
- Configurar cron semanal: cruza leads × purchases → bid recommendation
|
|
1576
|
+
- Configurar Nurture Engine: sequências D+1/D+3/D+7 pós-quiz por qualificação
|
|
1577
|
+
- Configurar Lookalike Seed com compradores confirmados
|
|
1578
|
+
|
|
1579
|
+
5. **Attribution Agent** (attribution-agent.md)
|
|
1530
1580
|
- Configurar multi-touch attribution com modelo padrão
|
|
1531
1581
|
- Criar D1 schemas: user_journeys, multi_touch_attribution, channel_performance
|
|
1532
1582
|
- Implementar endpoints de cálculo de atribuição
|
|
@@ -1569,6 +1619,10 @@ Spawnar os 4 agentes enterprise em paralelo:
|
|
|
1569
1619
|
Usar `AskUserQuestion` com multi-select para permitir múltiplas seleções:
|
|
1570
1620
|
|
|
1571
1621
|
> **"Quais recursos Enterprise deseja habilitar?"** (multi-select)
|
|
1622
|
+
> - [ ] **Lead Scoring** (quiz de qualificação → comprador|interessado|curioso|perdido)
|
|
1623
|
+
> - [ ] **Fraud Detection** (Fraud Gate — bloqueia bots na borda)
|
|
1624
|
+
> - [ ] **Match Quality** (garante que só dado com valor real vai para as plataformas — EMQ Score)
|
|
1625
|
+
> - [ ] **ROAS Feedback + Nurture** (ROAS real por campanha + follow-up automático pós-quiz)
|
|
1572
1626
|
> - [x] Multi-Touch Attribution
|
|
1573
1627
|
> - [ ] Security Enterprise (rate limiting, IP blocking)
|
|
1574
1628
|
> - [ ] Performance Optimization (caching, query optimization)
|