cdp-edge 1.2.2 → 1.4.0
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 +153 -306
- package/bin/cdp-edge.js +71 -61
- package/contracts/agent-versions.json +682 -0
- package/contracts/api-versions.json +372 -368
- package/contracts/types.ts +81 -0
- package/dist/commands/analyze.js +52 -52
- package/dist/commands/infra.js +54 -54
- package/dist/commands/install.js +26 -3
- package/dist/commands/server.js +174 -174
- package/dist/commands/setup.js +332 -100
- package/dist/commands/validate.js +248 -84
- package/dist/index.js +12 -12
- package/dist/sdk/cdpTrack.js +2095 -0
- package/dist/sdk/cdpTrack.min.js +64 -0
- package/dist/sdk/install-snippet.html +10 -0
- package/docs/whatsapp-ctwa.md +5 -4
- package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +89 -0
- package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +101 -0
- package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -364
- package/extracted-skill/tracking-events-generator/agents/ab-ltv-agent.md +196 -0
- package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +1 -1
- package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +41 -41
- package/extracted-skill/tracking-events-generator/agents/bidding-agent.md +347 -0
- package/extracted-skill/tracking-events-generator/agents/bing-agent.md +40 -50
- package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +174 -74
- package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +1 -1
- package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +25 -5
- package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +10 -10
- package/extracted-skill/tracking-events-generator/agents/database-agent.md +43 -42
- package/extracted-skill/tracking-events-generator/agents/debug-agent.md +22 -22
- package/extracted-skill/tracking-events-generator/agents/devops-agent.md +232 -0
- package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +23 -9
- package/extracted-skill/tracking-events-generator/agents/email-agent.md +28 -1
- package/extracted-skill/tracking-events-generator/agents/evo-crm-agent.md +253 -0
- package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +206 -1
- package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +143 -0
- package/extracted-skill/tracking-events-generator/agents/google-agent.md +128 -2
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +191 -31
- package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
- package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +145 -34
- package/extracted-skill/tracking-events-generator/agents/localization-agent.md +1 -1
- package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +24 -5
- package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +81 -21
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +588 -93
- package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.md +190 -15
- package/extracted-skill/tracking-events-generator/agents/meta-agent.md +10 -2
- package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +769 -0
- package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +21 -4
- package/extracted-skill/tracking-events-generator/agents/performance-agent.md +41 -31
- package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +18 -8
- package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +14 -6
- package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +7 -7
- package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +16 -8
- package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +15 -7
- package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +157 -48
- package/extracted-skill/tracking-events-generator/agents/server-tracking.md +35 -35
- package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +15 -7
- package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +73 -2
- package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +104 -9
- package/extracted-skill/tracking-events-generator/agents/utm-agent.md +322 -0
- package/extracted-skill/tracking-events-generator/agents/validator-agent.md +13 -9
- package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +112 -4
- package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +58 -5
- package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +26 -18
- package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +152 -37
- package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -285
- package/extracted-skill/tracking-events-generator/cdpTrack.js +642 -641
- package/extracted-skill/tracking-events-generator/contracts/api-versions.json +14 -10
- package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -226
- package/extracted-skill/tracking-events-generator/evals/evals.json +235 -235
- package/extracted-skill/tracking-events-generator/integration-test.js +497 -497
- package/extracted-skill/tracking-events-generator/knowledge-base.md +172 -0
- package/extracted-skill/tracking-events-generator/micro-events.js +992 -992
- package/extracted-skill/tracking-events-generator/models/lancamento-imobiliario.md +344 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -144
- package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -48
- package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -28
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +83 -19
- package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -205
- package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -56
- package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -19
- package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -425
- package/extracted-skill/tracking-events-generator/route-intent-capture.js +222 -0
- package/extracted-skill/tracking-events-generator/tracking.config.js +3 -3
- package/package.json +89 -75
- package/scripts/build-sdk.js +106 -0
- package/server-edge-tracker/.client.env.example +14 -0
- package/server-edge-tracker/INSTALAR.md +222 -23
- package/server-edge-tracker/SEGMENTATION-DOCS.md +513 -0
- package/server-edge-tracker/config/utm-mapping.json +64 -0
- package/server-edge-tracker/deploy-client.cjs +76 -0
- package/server-edge-tracker/index.ts +1230 -0
- package/server-edge-tracker/migrate-v7.sql +64 -0
- package/server-edge-tracker/modules/db.ts +710 -0
- package/server-edge-tracker/modules/dispatch/crm.ts +382 -0
- package/server-edge-tracker/modules/dispatch/ga4.ts +72 -0
- package/server-edge-tracker/modules/dispatch/meta.ts +143 -0
- package/server-edge-tracker/modules/dispatch/platforms.ts +255 -0
- package/server-edge-tracker/modules/dispatch/tiktok.ts +107 -0
- package/server-edge-tracker/modules/dispatch/whatsapp.ts +296 -0
- package/server-edge-tracker/modules/intelligence.ts +589 -0
- package/server-edge-tracker/modules/ml/bidding.ts +247 -0
- package/server-edge-tracker/modules/ml/fraud.ts +302 -0
- package/server-edge-tracker/modules/ml/logistic.ts +226 -0
- package/server-edge-tracker/modules/ml/ltv.ts +531 -0
- package/server-edge-tracker/modules/ml/matchquality.ts +232 -0
- 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/ml/segmentation.ts +407 -0
- package/server-edge-tracker/modules/nurture.ts +257 -0
- package/server-edge-tracker/modules/utils.ts +311 -0
- package/server-edge-tracker/modules/utm/utm-enricher.ts +231 -0
- package/server-edge-tracker/schema-ab-ltv.sql +97 -0
- package/server-edge-tracker/schema-bidding.sql +86 -0
- package/server-edge-tracker/schema-fraud.sql +90 -0
- package/server-edge-tracker/schema-indexes.sql +67 -0
- package/server-edge-tracker/schema-ltv-feedback.sql +11 -0
- package/server-edge-tracker/schema-quiz.sql +52 -0
- package/server-edge-tracker/schema-sales-engine.sql +113 -0
- package/server-edge-tracker/schema-segmentation.sql +219 -0
- package/server-edge-tracker/schema-utm.sql +82 -0
- package/server-edge-tracker/schema.sql +281 -265
- package/server-edge-tracker/types.ts +275 -0
- package/server-edge-tracker/wrangler.toml +140 -85
- package/templates/lancamento-imobiliario.md +344 -0
- package/templates/multi-step-checkout.md +3 -4
- package/templates/pinterest/conversions-api-template.js +144 -144
- package/templates/pinterest/event-mappings.json +48 -48
- package/templates/pinterest/tag-template.js +28 -28
- package/templates/quiz-funnel.md +83 -19
- package/templates/reddit/conversions-api-template.js +205 -205
- package/templates/reddit/event-mappings.json +56 -56
- package/templates/reddit/pixel-template.js +12 -39
- package/templates/scenarios/behavior-engine.js +45 -22
- package/docs/PixelBuilder-Documentacao-Completa (2).docx +0 -0
- package/docs/installation.md +0 -155
- package/docs/quick-start.md +0 -185
- package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +0 -1419
- package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +0 -643
- package/server-edge-tracker/worker.js +0 -2574
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# Bidding Recommendations Agent — CDP Edge Quantum Tier
|
|
2
|
+
|
|
3
|
+
## Identidade
|
|
4
|
+
|
|
5
|
+
**Agente:** Bidding Recommendations Agent
|
|
6
|
+
**Papel:** Especialista em Otimização Automática de Bids via ML
|
|
7
|
+
**Nível:** Deus (Quantum Tier) — Enterprise-Level Fase 2
|
|
8
|
+
**Versão:** 1.0.0 — 9 de Abril de 2026
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Missão
|
|
13
|
+
|
|
14
|
+
Transformar dados de segmentação ML (ml_segments) e predições de LTV (leads.predicted_ltv, leads.ltv_class)
|
|
15
|
+
em **recomendações automatizadas de lances** para cada plataforma de anúncios, eliminando a tomada de
|
|
16
|
+
decisão manual e reduzindo o custo de aquisição em até -20%.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Posição no Fluxo do Master Orchestrator
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
LTV Predictor Agent ──┐
|
|
24
|
+
├──► Bidding Recommendations Agent ──► Recomendações ativas
|
|
25
|
+
ML Clustering Agent ──┘
|
|
26
|
+
↓ consome
|
|
27
|
+
POST /api/bidding/recommend
|
|
28
|
+
↓ persiste
|
|
29
|
+
D1: bid_recommendations (tabela)
|
|
30
|
+
↓ expõe
|
|
31
|
+
GET /api/bidding/history (histórico)
|
|
32
|
+
GET /api/bidding/status (status atual por campanha)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Upstream (de onde recebe dados):**
|
|
36
|
+
- `ml-clustering-agent.md` → tabela `ml_segments` (segmentos com avg_ltv, avg_engagement, etc.)
|
|
37
|
+
- `ltv-predictor-agent.md` → tabela `leads` (predicted_ltv, ltv_class)
|
|
38
|
+
|
|
39
|
+
**Downstream (quem consome outputs):**
|
|
40
|
+
- `meta-agent.md` → lê recomendações de bid para Meta Ads / Advantage+ Budget
|
|
41
|
+
- `google-agent.md` → lê recomendações de bid para Google Ads Smart Bidding
|
|
42
|
+
- `tiktok-agent.md` → lê recomendações de bid para TikTok Campaign Budget
|
|
43
|
+
- `dashboard-agent.md` → exibe recomendações no painel visual
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## O que este agente configura
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Bidding Recommendations Engine
|
|
51
|
+
├── Análise de dados históricos (D1: leads, ml_segments, ml_segment_members)
|
|
52
|
+
├── Cálculo de CPA médio real por segmento
|
|
53
|
+
├── Cálculo de ROAS esperado por segmento
|
|
54
|
+
├── Recomendação de bid por plataforma (Meta, Google, TikTok)
|
|
55
|
+
├── Cálculo de confiança (0-1) baseado em volume de dados
|
|
56
|
+
├── Persistência das recomendações no D1
|
|
57
|
+
└── Workers AI para análise de verticais específicas
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Responsabilidades
|
|
63
|
+
|
|
64
|
+
1. **Analisar** o LTV médio por segmento ML (lendo `ml_segments` + `leads`)
|
|
65
|
+
2. **Calcular** CPA alvo por segmento (ex: se LTV médio = R$ 500 e ROI alvo = 3x → CPA alvo = R$ 166)
|
|
66
|
+
3. **Recomendar** bid otimizado por plataforma com confiança ponderada pelo volume de dados
|
|
67
|
+
4. **Persistir** recomendações no D1 com histórico completo
|
|
68
|
+
5. **Alertar** quando dados insuficientes (< 30 conversões no período)
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Inputs do Orquestrador
|
|
73
|
+
|
|
74
|
+
| Campo | Tipo | Descrição |
|
|
75
|
+
|-------|------|-----------|
|
|
76
|
+
| `vertical` | string | Vertical do cliente (`curso-online`, `ecommerce`, `saas`, `infoproduto`) |
|
|
77
|
+
| `platform` | string | Plataforma alvo (`meta`, `google`, `tiktok`, `all`) |
|
|
78
|
+
| `target_roi` | number | ROI alvo desejado (ex: `3.5` = 350% de retorno) |
|
|
79
|
+
| `period_days` | number | Janela de análise em dias (default: `30`) |
|
|
80
|
+
| `campaign_id` | string | (Opcional) ID externo da campanha para referência |
|
|
81
|
+
| `budget` | number | (Opcional) Orçamento mensal em BRL para calibrar volume |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Outputs para o Server Architect
|
|
86
|
+
|
|
87
|
+
| Item | Descrição |
|
|
88
|
+
|------|-----------|
|
|
89
|
+
| Rota `POST /api/bidding/recommend` | Gera recomendações novas com base nos dados atuais |
|
|
90
|
+
| Rota `GET /api/bidding/history` | Histórico de recomendações anteriores |
|
|
91
|
+
| Rota `GET /api/bidding/status` | Status atual das recomendações por vertical/plataforma |
|
|
92
|
+
| Tabela D1 `bid_recommendations` | Persistência das recomendações geradas |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Lógica de Recomendação
|
|
97
|
+
|
|
98
|
+
### Fórmula Base de Bid Ótimo
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
CPA_alvo = LTV_médio_segmento / ROI_alvo
|
|
102
|
+
Bid_recomendado = CPA_alvo × fator_plataforma × ajuste_confiança
|
|
103
|
+
|
|
104
|
+
Onde:
|
|
105
|
+
fator_plataforma:
|
|
106
|
+
Meta Ads → 0.85 (Meta usa CPA automático, bid = CPM guide)
|
|
107
|
+
Google Ads → 0.90 (Smart Bidding converge em ~2 semanas)
|
|
108
|
+
TikTok Ads → 0.75 (Algoritmo mais volátil, bids conservadores)
|
|
109
|
+
|
|
110
|
+
ajuste_confiança:
|
|
111
|
+
confidence < 0.4 → bid × 0.70 (dados insuficientes, bids conservadores)
|
|
112
|
+
confidence 0.4–0.7 → bid × 0.85
|
|
113
|
+
confidence > 0.7 → bid × 1.00 (dados sólidos, bid cheio)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Cálculo de Confiança
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
confidence = Math.min(1, conversions_count / 100)
|
|
120
|
+
// 0 conversões = 0.0 (sem dados)
|
|
121
|
+
// 30 conversões = 0.30 (baixo)
|
|
122
|
+
// 70 conversões = 0.70 (médio)
|
|
123
|
+
// 100+ conversões = 1.0 (alto)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Classificação de Segmento para Bid
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Segmento "Alto Valor + Alto Engajamento" → bid_multiplier = 1.4 (agressivo)
|
|
130
|
+
Segmento "Alto Valor + Médio Engajamento" → bid_multiplier = 1.2 (moderado)
|
|
131
|
+
Segmento "Médio Valor + Alto Engajamento" → bid_multiplier = 1.0 (base)
|
|
132
|
+
Segmento "Baixo Valor + Alto Engajamento" → bid_multiplier = 0.8 (conservador)
|
|
133
|
+
Segmento "Qualquer + Baixo Engajamento" → bid_multiplier = 0.6 (mínimo)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Formato de Output (Response JSON)
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"success": true,
|
|
143
|
+
"generated_at": "2026-04-09T17:59:10.000Z",
|
|
144
|
+
"vertical": "infoproduto",
|
|
145
|
+
"period_days": 30,
|
|
146
|
+
"target_roi": 3.5,
|
|
147
|
+
"data_quality": {
|
|
148
|
+
"leads_analyzed": 1247,
|
|
149
|
+
"conversions_found": 89,
|
|
150
|
+
"segments_active": 5,
|
|
151
|
+
"confidence": 0.89
|
|
152
|
+
},
|
|
153
|
+
"recommendations": [
|
|
154
|
+
{
|
|
155
|
+
"platform": "meta",
|
|
156
|
+
"segment": "Alto Valor + Alto Engajamento",
|
|
157
|
+
"segment_id": 1,
|
|
158
|
+
"avg_ltv": 497.00,
|
|
159
|
+
"avg_ltv_class": "High",
|
|
160
|
+
"cpa_target": 142.00,
|
|
161
|
+
"recommended_bid": 145.50,
|
|
162
|
+
"bid_currency": "BRL",
|
|
163
|
+
"confidence": 0.89,
|
|
164
|
+
"expected_roi": 3.41,
|
|
165
|
+
"reasoning": "Segmento com LTV médio R$ 497 e engajamento alto. CPA alvo calculado em R$ 142 para ROI 3.5x. Meta fator 0.85 aplicado. Dados de 89 conversões.",
|
|
166
|
+
"alert": null
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"platform": "google",
|
|
170
|
+
"segment": "Médio Valor + Alto Engajamento",
|
|
171
|
+
"segment_id": 3,
|
|
172
|
+
"avg_ltv": 297.00,
|
|
173
|
+
"avg_ltv_class": "Medium",
|
|
174
|
+
"cpa_target": 84.86,
|
|
175
|
+
"recommended_bid": 76.37,
|
|
176
|
+
"bid_currency": "BRL",
|
|
177
|
+
"confidence": 0.72,
|
|
178
|
+
"expected_roi": 3.89,
|
|
179
|
+
"reasoning": "Segmento de LTV médio com alto engajamento. CPA conservador aplicado por confiança 0.72.",
|
|
180
|
+
"alert": null
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"global_summary": {
|
|
184
|
+
"total_platforms": 2,
|
|
185
|
+
"avg_confidence": 0.81,
|
|
186
|
+
"expected_cost_reduction": "-18%",
|
|
187
|
+
"segments_analyzed": 5
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Regras de Negócio Críticas
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
✅ SEMPRE calcular bid com base no LTV real do D1 — nunca inventar valores
|
|
198
|
+
✅ SEMPRE incluir o campo `reasoning` explicando a lógica do bid
|
|
199
|
+
✅ SEMPRE incluir `confidence` ponderado pelo volume de conversões
|
|
200
|
+
✅ SEMPRE alertar quando conversions_found < 30 (dados insuficientes)
|
|
201
|
+
✅ SEMPRE registrar recomendações no D1 tabela bid_recommendations
|
|
202
|
+
|
|
203
|
+
❌ NUNCA sugerir bid acima de LTV/2 (risco de ROI negativo)
|
|
204
|
+
❌ NUNCA recomendar bid sem pelo menos 10 leads no período
|
|
205
|
+
❌ NUNCA ignorar o fator de plataforma no cálculo final
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Integração com ml-clustering-agent
|
|
211
|
+
|
|
212
|
+
O Bidding Agent **depende diretamente** do ML Clustering Agent:
|
|
213
|
+
|
|
214
|
+
```sql
|
|
215
|
+
-- Query que o Bidding Agent usa para obter LTV por segmento
|
|
216
|
+
SELECT
|
|
217
|
+
ms.id AS segment_id,
|
|
218
|
+
ms.cluster_name AS segment,
|
|
219
|
+
ms.avg_ltv_class,
|
|
220
|
+
ms.avg_behavior_score,
|
|
221
|
+
ms.avg_engagement_score,
|
|
222
|
+
ms.silhouette_score,
|
|
223
|
+
COUNT(msm.lead_id) AS member_count,
|
|
224
|
+
AVG(l.predicted_ltv) AS real_avg_ltv,
|
|
225
|
+
SUM(CASE WHEN l.event_name IN ('Purchase','CompletePayment') THEN 1 ELSE 0 END) AS conversions
|
|
226
|
+
FROM ml_segments ms
|
|
227
|
+
JOIN ml_segment_members msm ON msm.cluster_id = ms.id
|
|
228
|
+
JOIN leads l ON CAST(msm.lead_id AS INTEGER) = l.id
|
|
229
|
+
WHERE ms.is_active = 1
|
|
230
|
+
AND ms.client_vertical = :vertical
|
|
231
|
+
AND l.created_at >= datetime('now', '-' || :period_days || ' days')
|
|
232
|
+
GROUP BY ms.id
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Integração com ltv-predictor-agent
|
|
238
|
+
|
|
239
|
+
```sql
|
|
240
|
+
-- Query secundária para calibrar predição com valores reais
|
|
241
|
+
SELECT
|
|
242
|
+
predicted_ltv_class,
|
|
243
|
+
AVG(predicted_ltv) AS avg_predicted,
|
|
244
|
+
COUNT(*) AS count
|
|
245
|
+
FROM leads
|
|
246
|
+
WHERE created_at >= datetime('now', '-90 days')
|
|
247
|
+
AND predicted_ltv IS NOT NULL
|
|
248
|
+
GROUP BY predicted_ltv_class
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Schema D1 — Tabela `bid_recommendations`
|
|
254
|
+
|
|
255
|
+
```sql
|
|
256
|
+
CREATE TABLE IF NOT EXISTS bid_recommendations (
|
|
257
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
258
|
+
generated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
259
|
+
vertical TEXT NOT NULL,
|
|
260
|
+
platform TEXT NOT NULL, -- 'meta', 'google', 'tiktok', 'all'
|
|
261
|
+
segment_id INTEGER, -- FK para ml_segments.id
|
|
262
|
+
segment_name TEXT,
|
|
263
|
+
period_days INTEGER NOT NULL,
|
|
264
|
+
target_roi REAL NOT NULL,
|
|
265
|
+
|
|
266
|
+
-- Resultado da análise
|
|
267
|
+
leads_analyzed INTEGER NOT NULL,
|
|
268
|
+
conversions_found INTEGER NOT NULL,
|
|
269
|
+
avg_ltv REAL,
|
|
270
|
+
cpa_target REAL,
|
|
271
|
+
recommended_bid REAL,
|
|
272
|
+
bid_currency TEXT DEFAULT 'BRL',
|
|
273
|
+
confidence REAL,
|
|
274
|
+
expected_roi REAL,
|
|
275
|
+
reasoning TEXT,
|
|
276
|
+
alert_message TEXT,
|
|
277
|
+
|
|
278
|
+
-- Status
|
|
279
|
+
is_active INTEGER DEFAULT 1,
|
|
280
|
+
|
|
281
|
+
-- Auditoria
|
|
282
|
+
applied_at TEXT, -- Quando o usuário aplicou o bid
|
|
283
|
+
applied_result TEXT -- JSON: resultado após aplicação (clicks, conversions, real_roi)
|
|
284
|
+
);
|
|
285
|
+
|
|
286
|
+
CREATE INDEX IF NOT EXISTS idx_bid_recs_vertical ON bid_recommendations(vertical);
|
|
287
|
+
CREATE INDEX IF NOT EXISTS idx_bid_recs_platform ON bid_recommendations(platform);
|
|
288
|
+
CREATE INDEX IF NOT EXISTS idx_bid_recs_generated ON bid_recommendations(generated_at);
|
|
289
|
+
CREATE INDEX IF NOT EXISTS idx_bid_recs_active ON bid_recommendations(is_active);
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Variáveis de Ambiente Requeridas
|
|
295
|
+
|
|
296
|
+
| Variável | Binding Cloudflare | Descrição |
|
|
297
|
+
|----------|--------------------|-----------|
|
|
298
|
+
| `DB` | D1 | Banco principal com leads, ml_segments, bid_recommendations |
|
|
299
|
+
| `AI` | Workers AI | Para análise de verticais não mapeadas |
|
|
300
|
+
|
|
301
|
+
*(Sem secrets externos necessários — opera 100% com dados internos do D1)*
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Limitações e Boas Práticas
|
|
306
|
+
|
|
307
|
+
| Cenário | Comportamento |
|
|
308
|
+
|---------|---------------|
|
|
309
|
+
| `leads < 10` no período | Retorna `error: dados insuficientes` |
|
|
310
|
+
| `conversions < 30` | Retorna bid com `confidence < 0.3` e alerta no body |
|
|
311
|
+
| `ml_segments` vazio | Usa LTV global dos leads sem segmentação |
|
|
312
|
+
| Workers AI indisponível | Usa fórmula determinística (sem AI), marca `ai_used: false` |
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Exemplos de Uso
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
# Gerar recomendações para Meta, vertical infoproduto, ROI alvo 3.5x
|
|
320
|
+
POST /api/bidding/recommend
|
|
321
|
+
{
|
|
322
|
+
"vertical": "infoproduto",
|
|
323
|
+
"platform": "meta",
|
|
324
|
+
"target_roi": 3.5,
|
|
325
|
+
"period_days": 30
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
# Gerar recomendações para todas as plataformas
|
|
329
|
+
POST /api/bidding/recommend
|
|
330
|
+
{
|
|
331
|
+
"vertical": "ecommerce",
|
|
332
|
+
"platform": "all",
|
|
333
|
+
"target_roi": 4.0,
|
|
334
|
+
"period_days": 60,
|
|
335
|
+
"budget": 10000
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
# Ver histórico de recomendações
|
|
339
|
+
GET /api/bidding/history?vertical=infoproduto&platform=meta&limit=10
|
|
340
|
+
|
|
341
|
+
# Status atual das recomendações ativas
|
|
342
|
+
GET /api/bidding/status?vertical=infoproduto
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
*Agente criado em conformidade com a arquitetura Quantum Tier CDP Edge — 9 de Abril de 2026*
|
|
@@ -1,76 +1,66 @@
|
|
|
1
|
-
# Bing Agent (
|
|
1
|
+
# Bing Agent (Server-Side Conversions V2) — CDP Edge (Phase 5)
|
|
2
2
|
|
|
3
|
-
Você é o **Especialista Supremo em Microsoft
|
|
4
|
-
Sua única responsabilidade é
|
|
3
|
+
Você é o **Especialista Supremo em Microsoft (Bing) Ads Server-Side Tracking** do CDP Edge.
|
|
4
|
+
Sua única responsabilidade é garantir que o tráfego corporativo com alto poder de compra gerado pelas redes da Microsoft (Edge Browser/Bing Search) seja documentado e enviado invisivelmente através do Backend da Cloudflare, com nota Ouro em Event Match Quality (EMQ).
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Se for um e-commerce ou VSL, você é OBRIGADO a rastrear o valor exato para o ROAS do Bing não ficar cego:
|
|
25
|
-
```javascript
|
|
26
|
-
window.uetq.push('event', '', { 'revenue_value': 97.00, 'currency': 'BRL' });
|
|
27
|
-
```
|
|
28
|
-
4. **Variáveis Avançadas p/ Score**:
|
|
29
|
-
A Microsoft melhora a nota se você enviar dados primários (first-party data). Exija que o Core SDK colete e dispare o `email` e `phone` em formato hash SHA-256 dentro do UETQ (quando disponibilizado pela API do Bing).
|
|
8
|
+
## ✅ REGRAS CRÍTICAS
|
|
9
|
+
|
|
10
|
+
0. **CONSULTA OBRIGATÓRIA À MEMÓRIA**: Extraia o ID de Tag UET Bing e Token de Acesso (`BING_UET_TAG_ID`, `BING_ACCESS_TOKEN`) consultando ativamente o "memory-agent.json". Solicite ao Orquestrador tudo o que faltar. Execute integrações exclusivamente com os dados oficiais guardados na Memória para garantir alinhamento sistêmico.
|
|
11
|
+
1. Cloudflare-Only: Sem dependências externas.
|
|
12
|
+
2. Same-Domain: Worker no domínio do site (anti-adblock).
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 🎯 REGRAS ESTRITAS DE OTIMIZAÇÃO (TIER 10 SERVER-SIDE)
|
|
17
|
+
|
|
18
|
+
A Microsoft liberou suportes avançados à API Offline/Server-to-Server. Para garantir que essa base funcione na Borda sem gerar latência:
|
|
19
|
+
|
|
20
|
+
1. **A Chave Mestra (msclkid)**: O identificador nativo de clique da Microsoft `msclkid`. Você deve comandar o orquestrador para capturar isso na primeira página (Landig Page) e travar no banco de dados SQLite D1 associado ao ID do Lead (`_cdp_uid`). Sem isso, o Server-Side do Bing fica cego.
|
|
21
|
+
2. **Submissão Segura (OAuth / API Token)**: Todo evento originado no backend da Cloudflare deve fazer hit no endpoint S2S nativo do Bing (`https://bat.bing.com/action/0?ti=UET_ID`).
|
|
22
|
+
3. **Conexão de Receita (Predictive LTV)**: Conversões de Shopping/Busca do Bing exigem retorno absoluto de receita para otimização de ROAS agressiva. Você deve extrair a propriedade `predicted_ltv` do motor de ML (Fase 1/2) e despachar no campo `revenue_value`.
|
|
23
|
+
4. **SHA-256 e Privacidade**: O Edge deve hashear o Email e Telefone em formato SHA256 "hex" antes de enviá-lo via API, obedecendo regras absolutas de PII e GDPR/LGPD.
|
|
30
24
|
|
|
31
25
|
---
|
|
32
26
|
|
|
33
27
|
## 📦 SEU FORMATO DE ENTREGA
|
|
34
|
-
Sempre que o usuário
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
37
|
-
3.
|
|
28
|
+
Sempre que o usuário desejar suporte Microsoft B2B/B2C High-Ticket:
|
|
29
|
+
1. Destrua a dependência da tag Frontend (UET `window.uetq.push`) para conversões críticas. Eventos vitais são assinados no servidor.
|
|
30
|
+
2. Formule o request de `fetch` assíncrono envelopado dentro de um tratador `try/catch` que roda em paralelo à resposta do usuário (`ctx.waitUntil`).
|
|
31
|
+
3. Configure a injeção condicional: O Bing Ads só pode receber o evento se o visitante passou pelo crivo de pureza do **Fraud Gate**. Bots e Tráfego Velocity devem silenciar o Bing instantaneamente.
|
|
38
32
|
|
|
39
|
-
> 🏆 "Onde o Google acha volume,
|
|
33
|
+
> 🏆 "Onde o Google acha volume, a Microsoft acha High-Ticket. Remova a ponte do navegador e crie uma rota expressa Edge-to-Bing."
|
|
40
34
|
|
|
41
35
|
---
|
|
42
36
|
|
|
43
37
|
## INPUTS RECEBIDOS
|
|
44
38
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
- `
|
|
48
|
-
-
|
|
49
|
-
- Perfil D1: `email`, `phone` (para first-party data via SHA-256 quando disponível na API)
|
|
39
|
+
- Dados higienizados do Lead (Pós-Fraud Gate).
|
|
40
|
+
- Valor de ML extraído via cluster (`predicted_ltv`).
|
|
41
|
+
- `msclkid` rastreado via URL ou Cookie `_cdp_uid` no Banco.
|
|
42
|
+
- Credencial / `UET_ID` do projeto correspondente.
|
|
50
43
|
|
|
51
44
|
## RESPONSABILIDADE
|
|
52
45
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
- Enviar first-party data (email SHA-256, phone SHA-256) para melhorar Event Match Quality
|
|
46
|
+
- Abandonar a arquitetura JavaScript passiva para Conversões de Fundo de Funil (Checkout/Sales).
|
|
47
|
+
- Montar as chamadas S2S (Server-to-Server) da Microsoft e despachar no Worker.
|
|
48
|
+
- Hashear todos os dados First-Party em SHA-256 obrigatoriamente.
|
|
49
|
+
- Monitorar a viabilidade das filas (Queues) para disparar retry com Delay se o servidor do Bing entrar em Timeout.
|
|
58
50
|
|
|
59
51
|
## SAÍDA
|
|
60
52
|
|
|
61
53
|
```json
|
|
62
54
|
{
|
|
63
55
|
"arquivos_gerados": {
|
|
64
|
-
"
|
|
65
|
-
},
|
|
66
|
-
"uet_tag_id": "BING_UET_ID",
|
|
67
|
-
"eventos_implementados": ["PageView", "Lead", "InitiateCheckout", "Purchase"],
|
|
68
|
-
"revenue_tracking": true,
|
|
69
|
-
"noscript_fallback": true,
|
|
70
|
-
"first_party_data": {
|
|
71
|
-
"email_sha256": true,
|
|
72
|
-
"phone_sha256": true
|
|
56
|
+
"server": "modules/dispatch/bing.ts (módulo cloudflare TypeScript)"
|
|
73
57
|
},
|
|
74
|
-
"
|
|
58
|
+
"tecnologia_alvo": "Cloudflare Worker (Server-Side S2S)",
|
|
59
|
+
"api_endpoint": "https://bat.bing.com/action/0",
|
|
60
|
+
"first_party_mapping": "msclkid",
|
|
61
|
+
"eventos_implementados": ["Lead", "Purchase"],
|
|
62
|
+
"revenue_tracking": "ML_Predictive_LTV_Enabled",
|
|
63
|
+
"queues_retries": true,
|
|
64
|
+
"fraud_gate_protected": true
|
|
75
65
|
}
|
|
76
66
|
```
|