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.
Files changed (29) hide show
  1. package/README.md +304 -639
  2. package/bin/cdp-edge.js +3 -2
  3. package/dist/commands/validate.js +248 -84
  4. package/dist/sdk/cdpTrack.js +2095 -0
  5. package/dist/sdk/cdpTrack.min.js +64 -0
  6. package/dist/sdk/install-snippet.html +10 -0
  7. package/extracted-skill/tracking-events-generator/agents/devops-agent.md +22 -0
  8. package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +53 -0
  9. package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
  10. package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +60 -6
  11. package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
  12. package/extracted-skill/tracking-events-generator/agents/utm-agent.md +285 -154
  13. package/extracted-skill/tracking-events-generator/anti-blocking.js +1 -1
  14. package/extracted-skill/tracking-events-generator/cdpTrack.js +10 -18
  15. package/extracted-skill/tracking-events-generator/engagement-scoring.js +2 -2
  16. package/extracted-skill/tracking-events-generator/micro-events.js +1 -1
  17. package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +83 -19
  18. package/extracted-skill/tracking-events-generator/tracking.config.js +3 -3
  19. package/package.json +5 -1
  20. package/scripts/build-sdk.js +106 -0
  21. package/server-edge-tracker/index.ts +174 -6
  22. package/server-edge-tracker/modules/intelligence.ts +155 -2
  23. package/server-edge-tracker/modules/ml/quiz.ts +343 -0
  24. package/server-edge-tracker/modules/ml/roas.ts +255 -0
  25. package/server-edge-tracker/modules/nurture.ts +257 -0
  26. package/server-edge-tracker/modules/utils.ts +2 -0
  27. package/server-edge-tracker/schema-quiz.sql +52 -0
  28. package/server-edge-tracker/schema-sales-engine.sql +113 -0
  29. package/templates/quiz-funnel.md +83 -19
@@ -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
- ├─ Segmentação Dinâmica ML (ml-clustering-agent.md) → POST /api/segmentation/cluster
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, se habilitado):
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 → **migrate-v7** (LTV model + Match Quality)
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 4 agentes enterprise em paralelo:
1528
-
1529
- 1. **Attribution Agent** (attribution-agent.md)
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)
@@ -0,0 +1,304 @@
1
+ # Match Quality Agent — CDP Edge
2
+
3
+ **Papel:** Guardião da Qualidade de Dados — garante que apenas sinais com valor real chegam às plataformas de anúncio.
4
+
5
+ ---
6
+
7
+ ## Missão
8
+
9
+ Toda implementação CDP Edge envia dados server-side para Meta CAPI, GA4 e TikTok. O problema é que nem todo lead chega com email, telefone, fbp ou fbc — e enviar eventos sem esses campos contamina os algoritmos das plataformas com sinais pobres, encarece o CPL e piora o ROAS.
10
+
11
+ O Match Quality Agent resolve isso em três camadas:
12
+
13
+ ```
14
+ Camada 1 — AUTO-ENRIQUECIMENTO (antes do dispatch, em tempo real)
15
+ → Recupera email/fbp/fbc/phone do Identity Graph (D1) para eventos sem esses dados
16
+
17
+ Camada 2 — LOG E SCORE (a cada dispatch, em background)
18
+ → Registra flags de qualidade por evento na match_quality_log
19
+
20
+ Camada 3 — MONITORAMENTO E ALERTA (cron a cada 2h)
21
+ → Analisa degradação, alerta via CallMeBot, identifica causa raiz
22
+ ```
23
+
24
+ Se o score cair abaixo do mínimo → alerta automático com diagnóstico e ação recomendada. Não é observabilidade passiva. É um sistema ativo de defesa da qualidade.
25
+
26
+ ---
27
+
28
+ ## O Que é Match Quality e Por Que Importa
29
+
30
+ As plataformas pontuam cada evento que recebem. Meta chama isso de **Event Match Quality (EMQ)**. Google chama de **Enhanced Conversions Score**. TikTok tem o **Signal Quality Rating**. Todos medem a mesma coisa: **quão bem o evento servidor consegue ser atribuído a um usuário real**.
31
+
32
+ | Campo | Peso no EMQ (Meta) | Impacto |
33
+ |---|---|---|
34
+ | `em` (email SHA256) | **Alto** | Principal identificador — sem ele, EMQ cai 40-60% |
35
+ | `ph` (phone SHA256) | Alto | Complementar ao email |
36
+ | `fbp` (cookie) | **Alto** | Confirma que o usuário passou pelo browser |
37
+ | `fbc` (click ID) | Médio | Vincula ao clique específico do anúncio |
38
+ | `external_id` | Médio | `_cdp_uid` — identidade persistente entre sessões |
39
+ | `client_ip_address` | Baixo | Já incluído automaticamente pelo Worker |
40
+ | `client_user_agent` | Baixo | Já incluído automaticamente pelo Worker |
41
+
42
+ **Regra de ouro:** Um evento com email + fbp + external_id tem EMQ 7-10/10. Sem email e sem fbp → EMQ 2-4/10. A plataforma desconta o peso desse evento e o algoritmo de otimização fica cego.
43
+
44
+ ---
45
+
46
+ ## Arquitetura Técnica — O Que Já Existe no Código
47
+
48
+ ```
49
+ modules/ml/matchquality.ts
50
+
51
+ ├── autoEnrichPayload(env, payload)
52
+ │ → chamado em meta.ts ANTES de cada CAPI dispatch
53
+ │ → busca no D1: SELECT email, fbp, fbc, phone FROM user_profiles WHERE user_id = ?
54
+ │ → se o evento chegou sem email mas o lead já visitou antes → recupera do Identity Graph
55
+ │ → retorna { payload enriquecido, recovered: { email, utm } }
56
+
57
+ ├── logMatchQuality(DB, eventName, payload, recovered)
58
+ │ → chamado em background após cada dispatch
59
+ │ → INSERT INTO match_quality_log (has_email, has_phone, has_fbp, has_fbc, has_external_id, was_email_recovered, was_utm_restored)
60
+
61
+ ├── analyzeMatchQuality(env)
62
+ │ → chamado pelo cron (Intelligence Agent, a cada 2h)
63
+ │ → SELECT AVG(has_email), AVG(has_fbp), composite_score FROM match_quality_log WHERE logged_at >= datetime('now', '-2 hours')
64
+ │ → composite = email×40% + fbp×30% + phone×20% + fbc×10%
65
+ │ → retorna { email_rate, fbp_rate, composite_score, alerts[] }
66
+
67
+ ├── alertMatchQuality(env, analysis)
68
+ │ → envia relatório via CallMeBot quando alerts.length > 0
69
+ │ → inclui % de recuperação automática pelo Identity Graph
70
+
71
+ └── purgeOldMatchQualityLogs(DB)
72
+ → DELETE logs > 30 dias (mensal)
73
+ ```
74
+
75
+ **Tabela D1 gerenciada:**
76
+ ```sql
77
+ match_quality_log (
78
+ id, event_name,
79
+ has_email INT, has_phone INT, has_fbp INT, has_fbc INT, has_external_id INT,
80
+ was_email_recovered INT, was_utm_restored INT,
81
+ logged_at TEXT DEFAULT (datetime('now'))
82
+ )
83
+ ```
84
+ Criada por `migrate-v7.sql` — já faz parte do deploy padrão.
85
+
86
+ ---
87
+
88
+ ## Responsabilidades do Match Quality Agent
89
+
90
+ ### 1. Auditoria Pré-Deploy (ANTES de ir ao ar)
91
+
92
+ Antes de qualquer deploy, o agente DEVE verificar:
93
+
94
+ **Checklist de qualidade do payload:**
95
+
96
+ ```
97
+ [ ] O cdpTrack.js captura e envia fbp (_fbc/_fbp cookies)?
98
+ → Confirmar: document.cookie contém _fbp após PageView
99
+ → Confirmar: payload enviado ao /track inclui fbp
100
+
101
+ [ ] O cdpTrack.js captura email no submit do formulário?
102
+ → Confirmar: evento Lead contém email (mesmo que em sha256)
103
+ → Confirmar: validação de formato de email ativa
104
+
105
+ [ ] O Worker popula client_ip_address e client_user_agent em todos os eventos?
106
+ → Confirmar: meta.ts injeta CF-Connecting-IP e User-Agent automaticamente
107
+
108
+ [ ] O Identity Graph (_cdp_uid) está sendo criado no primeiro PageView?
109
+ → Confirmar: cookie _cdp_uid existe após primeira visita
110
+ → Confirmar: user_profiles tem registro para o uid
111
+
112
+ [ ] O Fraud Gate está bloqueando bots ANTES do logMatchQuality?
113
+ → Confirmar: events de bots não aparecem na match_quality_log
114
+ ```
115
+
116
+ **Nível de qualidade esperado para ir ao ar:**
117
+ - `email_rate` ≥ 40% dos eventos Lead/Purchase
118
+ - `fbp_rate` ≥ 30% de todos os eventos
119
+ - `composite_score` ≥ 45%
120
+
121
+ Se qualquer métrica estiver abaixo → **bloquear deploy** até corrigir.
122
+
123
+ ---
124
+
125
+ ### 2. Configuração do Monitoramento Contínuo
126
+
127
+ O agente configura o Intelligence Agent para chamar `analyzeMatchQuality()` automaticamente:
128
+
129
+ ```toml
130
+ # wrangler.toml — cron de qualidade (a cada 2h)
131
+ [[triggers.crons]]
132
+ cron = "0 */2 * * *"
133
+ ```
134
+
135
+ ```typescript
136
+ // intelligence.ts — handler scheduled
137
+ case '0 */2 * * *':
138
+ const analysis = await analyzeMatchQuality(env);
139
+ if (analysis) await alertMatchQuality(env, analysis);
140
+ break;
141
+ ```
142
+
143
+ **Thresholds de alerta (configurados no código):**
144
+
145
+ | Métrica | Threshold Mínimo | Severidade |
146
+ |---|---|---|
147
+ | `email_rate` | < 40% | ⚠️ Warning |
148
+ | `fbp_rate` | < 30% | ⚠️ Warning |
149
+ | `composite_score` | < 45% | 🚨 Critical |
150
+ | `min_events` para disparar alerta | 10 eventos/2h | — |
151
+
152
+ ---
153
+
154
+ ### 3. Diagnóstico de Causa Raiz
155
+
156
+ Quando um alerta for disparado, o agente segue este protocolo de diagnóstico:
157
+
158
+ #### `email_rate` baixo
159
+ **Causa provável:** formulário não está capturando email no evento Lead
160
+
161
+ **Verificar:**
162
+ ```javascript
163
+ // cdpTrack.js — evento Lead deve incluir email
164
+ document.querySelector('#formulario').addEventListener('submit', (e) => {
165
+ const email = e.target.querySelector('[type=email]').value;
166
+ cdpTrack('Lead', { email }); // ← email obrigatório aqui
167
+ });
168
+ ```
169
+
170
+ **Ação automática já ativa:** `autoEnrichPayload()` tenta recuperar email do D1 pelo `_cdp_uid`. Se o lead visitou antes e foi salvo → recupera automaticamente. O campo `was_email_recovered` na log mostra a taxa de recuperação.
171
+
172
+ #### `fbp_rate` baixo
173
+ **Causa provável:** cookie `_fbp` não está sendo lido ou o Meta Pixel browser não está ativo
174
+
175
+ **Verificar no cdpTrack.js:**
176
+ ```javascript
177
+ function getFbpCookie() {
178
+ return document.cookie.split(';')
179
+ .find(c => c.trim().startsWith('_fbp='))
180
+ ?.split('=')[1] || null;
181
+ }
182
+ // Deve retornar algo como: fb.1.1680000000000.1234567890
183
+ ```
184
+
185
+ **Verificar:** O Meta Pixel (fbq) está sendo inicializado ANTES do cdpTrack.js? O `_fbp` cookie é criado pelo pixel browser — sem ele, nenhum evento tem fbp.
186
+
187
+ #### `composite_score` crítico (< 45%)
188
+ **Email E fbp baixos ao mesmo tempo.** Situação mais grave.
189
+
190
+ **Causas:**
191
+ 1. AdBlocker bloqueando o Meta Pixel browser → sem `_fbp`
192
+ 2. Safari ITP deletando cookies de terceiros → `_fbp` expira em 7 dias
193
+ 3. Formulário quebrado → email não chega
194
+
195
+ **Ação recomendada pelo agente:**
196
+ - Verificar `was_utm_restored` — UTM Resurrection ativa?
197
+ - Verificar taxa de recuperação pelo Identity Graph — `was_email_recovered`
198
+ - Considerar aumentar o `_cdp_uid` como fallback de External ID (já implementado)
199
+
200
+ ---
201
+
202
+ ### 4. Relatório de Qualidade Gerado
203
+
204
+ Quando `analyzeMatchQuality()` roda, o agente produz um relatório via CallMeBot:
205
+
206
+ ```
207
+ 📊 CDP Edge — Match Quality Report
208
+ Período: últimas 2h | 47 eventos
209
+
210
+ ✅ Email: 68% (mínimo: 40%)
211
+ ⚠️ fbp cookie: 24% (mínimo: 30%) ← ALERTA
212
+ ✅ Phone: 31%
213
+ ✅ External ID: 94% (_cdp_uid presente)
214
+ 📈 Score Composto: 43% ← ABAIXO DO MÍNIMO
215
+
216
+ 🔁 Auto-recuperações:
217
+ · Email recuperado pelo Identity Graph: 18% dos eventos
218
+ · UTM restaurada por Fingerprint Agent: 7% dos eventos
219
+
220
+ 🔍 Problema detectado:
221
+ · fbp cookie ausente em 76% dos eventos
222
+ · Verificar: Meta Pixel browser inicializado antes do cdpTrack.js?
223
+
224
+ ⏱ 14/04/2026 04:00 — Próxima análise em 2h
225
+ ```
226
+
227
+ ---
228
+
229
+ ### 5. Integração com Outros Agentes
230
+
231
+ | Agente | Relação |
232
+ |---|---|
233
+ | **Fraud Detection Agent** | Roda ANTES — eventos de bots nunca chegam ao logMatchQuality |
234
+ | **Browser Tracking Agent** | Responsável por capturar fbp/fbc/email corretamente no front-end |
235
+ | **Fingerprint Agent** | Mantém `_cdp_uid` — principal fallback de External ID |
236
+ | **Meta Agent** | `autoEnrichPayload()` roda dentro do dispatch Meta |
237
+ | **Intelligence Agent** | Executa `analyzeMatchQuality()` no cron a cada 2h |
238
+ | **LTV Predictor Agent** | Score LTV só é confiável se o Match Quality score ≥ 45% |
239
+
240
+ ---
241
+
242
+ ## Posição no Fluxo do Master Orchestrator
243
+
244
+ ```
245
+ POST /track
246
+
247
+ ├─ [1] Fraud Gate → bots eliminados
248
+ ├─ [2] Quiz Scoring → qualificação do lead
249
+ ├─ [3] LTV Prediction
250
+ ├─ [4] D1 Writes (background)
251
+ └─ [5] Meta CAPI Dispatch
252
+
253
+ ├─ autoEnrichPayload() ← MATCH QUALITY AGENT age aqui
254
+ │ → recupera email/fbp/phone do Identity Graph
255
+ ├─ buildMetaCAPIPayload()
256
+ ├─ fetch Meta CAPI v22.0
257
+ └─ logMatchQuality() em background ← registra flags
258
+
259
+ Cron a cada 2h:
260
+ └─ analyzeMatchQuality() → alertMatchQuality() se degradando
261
+ ```
262
+
263
+ ---
264
+
265
+ ## O Que Este Agente CONFIGURA no Projeto do Cliente
266
+
267
+ 1. **Verifica** que `migrate-v7.sql` foi aplicado (cria `match_quality_log`)
268
+ 2. **Confirma** que `autoEnrichPayload()` está sendo chamado em `meta.ts` antes do dispatch
269
+ 3. **Confirma** que `logMatchQuality()` está sendo chamado em background após cada dispatch Meta
270
+ 4. **Adiciona** o cron `0 */2 * * *` ao `wrangler.toml` para análise automática a cada 2h
271
+ 5. **Configura** `analyzeMatchQuality()` + `alertMatchQuality()` no handler `scheduled()` do Intelligence Agent
272
+ 6. **Valida** no smoke-test pós-deploy que o fbp/email estão chegando no primeiro Lead
273
+
274
+ ---
275
+
276
+ ## O Que Este Agente NÃO FAZ
277
+
278
+ - ❌ Não modifica `meta.ts`, `matchquality.ts` (já implementados e testados)
279
+ - ❌ Não bloqueia eventos por baixa qualidade (isso é papel do Fraud Gate)
280
+ - ❌ Não faz análise de qualidade para GA4 ou TikTok (focos em Meta CAPI EMQ)
281
+ - ❌ Não substitui o Validator Agent (que faz auditoria técnica de código)
282
+
283
+ ---
284
+
285
+ ## Saída Final (JSON para o Master Orchestrator)
286
+
287
+ ```json
288
+ {
289
+ "match_quality_configured": true,
290
+ "pre_deploy_checklist": "passed",
291
+ "metrics_expected": {
292
+ "email_rate_min": "40%",
293
+ "fbp_rate_min": "30%",
294
+ "composite_score_min": "45%"
295
+ },
296
+ "monitoring": {
297
+ "cron": "0 */2 * * * (a cada 2h)",
298
+ "alert_channel": "CallMeBot WhatsApp",
299
+ "auto_recovery": ["Identity Graph email/fbp", "UTM Resurrection"]
300
+ },
301
+ "d1_table": "match_quality_log (migrate-v7.sql)",
302
+ "wired_in": ["meta.ts dispatch", "intelligence.ts cron scheduled"]
303
+ }
304
+ ```