# Arquitetura Córtex 3 Estágios — Perfil · Mercado · Produto

> Documento de arquitetura + contratos. **Aprovar antes de qualquer código.**
> Princípio inegociável: a metodologia Nardi/Máxima/André (hoje no Cortex de Ativação) fica **100% intacta** — vira o Córtex 3, sem reescrita da lógica dos 11 blocos.

---

## 1. Modelo mental

```
 CÓRTEX 1 — PERFIL        CÓRTEX 2 — MERCADO           CÓRTEX 3 — PRODUTO
 quem é o expert     →    o que o mercado dele faz  →  o que criar pra ele
 (dossiê base)            (concorrência + demanda)     (ativação, 11 blocos)

     por EXPERT               por NICHO                    por PRODUTO
     cacheável                cacheável/reutilizável       gera o entregável
```

- **Pipeline, não círculo.** C1 (leve) destrava C2; C2 enriquece C3.
- Cada córtex: **1 input contratual → 1 output estruturado → 1 checkpoint humano**.
- Cada um **roda/reexecuta isolado** (mudou o dossiê? re-roda só o C1; nicho novo? só o C2).

---

## 2. Entidade central: `Ativacao` (o projeto que amarra tudo)

Uma linha por "produto de ativação em construção". Amarra as 3 saídas do mesmo expert.

```json
{
  "id": "uuid",
  "expert_name": "Dra. Karen Baldin",
  "project_id": "uuid (cliente/projeto Sinapse)",
  "status": "perfil | mercado | produto | concluido",
  "perfil_id": "uuid  -> saída do Córtex 1",
  "mercado_id": "uuid -> saída do Córtex 2 (pode ser compartilhado por nicho)",
  "produto_id": "uuid -> saída do Córtex 3",
  "checkpoints": { "perfil_aprovado": true, "mercado_aprovado": false, "produto_aprovado": false },
  "criado_em": "iso", "atualizado_em": "iso"
}
```

> Reuso: `mercado_id` pode apontar pra uma análise de mercado **já existente do mesmo nicho** (não re-roda Apify/IA à toa).

---

## 3. Córtex 1 — PERFIL (dossiê do especialista)

**Responsabilidade:** entender QUEM é o expert. Hoje já existe (o `ingest`/`_generate_dossier` + `_extract_structured_data` do Cortex). Só **formaliza** como estágio 1.

**Input:** briefing do usuário
```json
{
  "expert_name": "string",
  "instagram": "@handle", "youtube": "@handle | null",
  "niche": "string", "target_audience": "string",
  "material": "texto/PDF ingerido (opcional)",
  "produtos_existentes": "texto livre (opcional)"
}
```

**Output — contrato `PerfilDossie` (consumido por C2 e C3):**
```json
{
  "expert": { "nome": "", "instagram": "", "youtube": "", "nicho": "", "diferencial": "" },
  "publico": { "persona": "", "nivel": "iniciante|intermediario|avancado", "dor_principal": "" },
  "contexto_3_eixos": { "maturidade_esteira": "", "trafego_dominante": "", "tamanho_audiencia": "", "escola_dominante": "" },
  "erm": { "ruminacoes": [], "motor": "" },
  "esteira_atual": [ { "nome": "", "formato": "", "faixa_preco": "", "status": "existe|planejado|sugerido", "principal": true } ],
  "plataforma_venda": "Hotmart|Eduzz|Kiwify|...",
  "lancamentos_anteriores": "", "faixa_faturamento": "",
  "dossier_content_md": "o dossiê narrativo completo (markdown) — mantido pra o C3"
}
```
- **Cache:** por expert (regenera se o material mudar).
- **Checkpoint:** operador confere o dossiê base.

> Mapeamento no código: `CortexDossier` já tem `context_axes`, `erm_output`, `dossier_content`, `sales_platform`, `previous_launches`, `expert_revenue_range`, `audience_*`, `differentiator`. É reorganizar em `PerfilDossie`, não inventar.

---

## 4. Córtex 2 — MERCADO (concorrência + demanda) ← o que construímos

**Responsabilidade:** trazer EVIDÊNCIA real do mercado do expert. É o módulo de Concorrência atual, ganhando um **"modo contrato"** que cospe o Pacote de Evidências.

**Input:**
```json
{ "perfil": "PerfilDossie (do C1)", "escopo": "nacional|internacional|tiktok", "top_n": 8, "observacoes": "foco em médicos que vendem infoproduto" }
```

**Output — contrato `PacoteEvidencias` (é o que o C3 consome):**
```json
{
  "concorrentes": [
    { "nome": "", "instagram": "", "seguidores": 0, "engajamento_pct": 0,
      "esteira": [ { "nome": "", "formato": "", "faixa_preco": "" } ],
      "trafego_pago": { "investe": true, "angulos": [] },
      "reputacao": { "google_nota": 4.6, "reclame_aqui": "sem/registro (validado)" },
      "ameaca_1a5": 3 }
  ],
  "matriz_comparativa": [ /* já existe em final_insights */ ],
  "mapa_posicionamento": [ { "nome": "", "alcance_0a10": 0, "funil_0a10": 0, "is_especialista": false } ],
  "demanda": {
    "dores": [ { "dor": "", "evidencia": "" } ],
    "objecoes": [ { "objecao": "", "como_quebrar": "" } ],
    "perguntas_frequentes": [], "linguagem_publico": [],
    "angulos_que_performam": [ { "angulo": "", "gancho": "" } ],
    "ganchos_titulos": [],
    "produtos_de_entrada_no_nicho": [ { "nome": "", "formato": "", "faixa_preco": "", "resolve": "" } ],
    "escada_do_nicho": { "entrada": {}, "principal": {}, "upsell": {} }
  },
  "precos_praticados": [ { "produto": "", "faixa": "", "fonte": "meta_ads|pagina|checkout" } ],
  "gaps_de_mercado": [], "posicionamento_recomendado": "", "cfm_diferencial": "",
  "confianca_dados": { "nota_metodologia": "", "alertas": [] }
}
```
- **Cache:** por **nicho** (vários experts do mesmo nicho reaproveitam). Anti-homônimo já embutido (RA, Google, Meta Ads, vídeos).
- **Checkpoint (opcional):** operador aprova as evidências antes de gerar o produto.

> Mapeamento no código: `competitor_runs.final_insights` + `demand_research.insights` + snapshots já contêm ~tudo isso. O "modo contrato" é um **adaptador** que normaliza a saída atual no `PacoteEvidencias`.

---

## 5. Córtex 3 — PRODUTO (ativação) — metodologia INTACTA

**Responsabilidade:** gerar o produto de ativação pelos 11 blocos Nardi/Máxima/André. **Nenhuma mudança na lógica/ordem dos blocos.** Duas adições cirúrgicas:

**(a) Injeção de evidência:** cada bloco recebe o `PacoteEvidencias` como **fundamentação** (grounding), do mesmo jeito que hoje o `business_ctx` já entra. Ex.:
- `destination_persona` ← `demanda.dores` + `linguagem_publico`
- `offer` ← `produtos_de_entrada_no_nicho` + `escada_do_nicho` + esteira dos concorrentes
- `pricing` ← `precos_praticados`
- `creatives`/`page_copy` ← `angulos_que_performam` + `ganchos_titulos`

**(b) Ficha do Produto (resolve a confusão de formato):** todo produto gerado declara, no topo do bloco `offer`, uma ficha estruturada obrigatória:
```json
{
  "tipo": "protocolo | guia/cartilha | checklist | e-book | mini-curso | masterclass | aula ao vivo | desafio | template",
  "formato": "ex.: cartilha de 12 páginas | 5 aulas de 8min | 3 capítulos | 1 checklist A4",
  "modo_de_consumo": "consulta rápida (fast-food clínico) | estudo aprofundado",
  "esforco_producao": "baixo|medio|alto + tempo estimado",
  "como_construir": ["passo 1", "passo 2", "..."],
  "entregavel": "o que o cliente recebe exatamente"
}
```
> `modo_de_consumo` captura o insight do A.R.C.A: a persona (médico) **consulta na frente do paciente**, não estuda horas. O produto de ativação da Karen é **protocolo/cartilha**, não curso — a Ficha deixa isso explícito e obriga clareza pra qualquer expert.

**Output — contrato `DossieProduto`:** o dossiê atual do Cortex + a `ficha_produto` no topo + campos citando as evidências usadas.

- **Checkpoint:** operador aprova o produto final.

---

## 6. Orquestrador & estado

Máquina de estados leve (uma por `Ativacao`):
```
briefing → [C1 Perfil] → checkpoint → [C2 Mercado] → checkpoint(opc) → [C3 Produto] → checkpoint → concluído
```
- **Estado persistido** por etapa → dá pra **reexecutar só uma** (regerar mercado sem refazer o dossiê).
- **Falha isolada:** se C2 falha, C3 não roda com lixo (bloqueia + avisa).
- **Reuso:** ao criar a Ativação, se já existe `Mercado` do mesmo nicho recente, oferece reaproveitar.

---

## 7. Plano de migração faseado (não-quebra)

1. **Contratos** (este doc) — aprovar. Zero código.
2. **Adaptador C2 → `PacoteEvidencias`**: função que normaliza `final_insights`+`demand_research` no contrato. (o módulo de Mercado nem muda por dentro)
3. **Ficha do Produto no C3**: enriquece o prompt do bloco `offer`/`lessons` pra exigir a ficha. (só prompt — reversível)
4. **Injeção do Pacote nos blocos do C3**: mesma mecânica do `business_ctx` atual.
5. **Extrair o C1**: isolar `ingest`/`_generate_dossier` como estágio Perfil (o C3 chama igual — nada quebra).
6. **Orquestrador + `Ativacao` + UI de 3 etapas com checkpoints.**

> A metodologia (11 blocos) só é **tocada nos passos 3 e 4**, e só pra *receber mais contexto* — nunca pra mudar a lógica.

---

## 8. Decisões (fechadas por Raphael 2026-07-09)

1. **Checkpoint entre Mercado e Produto**: ✅ **OBRIGATÓRIO** — o operador revisa as evidências antes de gerar o produto.
2. **Cache de Mercado**: ✅ **por nicho + expert como refinamento** (reaproveita o nicho, refina pelo expert).
3. **Naming pro usuário**: ✅ **Perfil / Mercado / Produto** (Córtex 1/2/3 interno).
4. **Ficha do Produto**: ✅ aprovada (lista de tipos cobre os casos).

## 9. Garantia de não-perda (nada de hoje se perde)

O módulo de Concorrência **NÃO é reescrito nem substituído**. Ele **continua idêntico** — UI (todas as abas, cards, mapa, matriz), **PDF de exportação** (as 72 páginas, todos os fixes, anti-homônimo, TikTok, Radar, avaliações), a pesquisa e as ideias de produto. Tudo segue funcionando como hoje, inclusive standalone (abrir o módulo, rodar descoberta, exportar PDF).

A única mudança nele é **ADITIVA**: um **adaptador de saída** (função nova) que lê o que já existe (`final_insights` + `demand_research`) e normaliza no `PacoteEvidencias` pro Córtex 3. Nada é removido. "Virar Córtex 2 (Mercado)" = o mesmo módulo + uma porta de saída nova.

---

*Próximo passo após aprovação: implementar na ordem do §7, começando pelo passo 2 (adaptador) + passo 3 (Ficha do Produto) — os de maior valor e menor risco.*
