Central completa da revisão. Página gerada por scripts/gerar-sol-sdr.py
lendo a API do n8n PROD e os artefatos aprovados da revisão — nenhum número é digitado à mão.
vida = pertencimento arquitetural (tag vida:*, só muda com evidência de aposentadoria).
n8n = estado de runtime (campo active).
revisão = varredura Workplace (tag workplace:*).
Nenhum é derivado do outro.
Acompanhamento por estado, não por conversa. O progresso é acumulado:
uma regressão vira REABERTO e incrementa o contador, sem apagar o que já foi feito.
| cadeia | total | não iniciados | em revisão | prontos | revisados | |
|---|---|---|---|---|---|---|
| CAPTAÇÃO | 3 | — | — | 2 | 0/3 | |
| QUALIFICAÇÃO | 5 | 4 | 1 | — | 0/5 | |
| HANDOVER | 4 | 4 | — | — | 0/4 | |
| OPS | 9 | 9 | — | — | 0/9 | |
| OBSERVABILIDADE | 3 | 3 | — | — | 0/3 |
| workflow | cadeia | estado | correções | teste | supabase | visual | revisado | reab. |
|---|---|---|---|---|---|---|---|---|
sol.captacao.entrada-leadhistórico
| CAPTACAO | PRONTO | 4/4 | passou | saneado | atualizado | NÃO | 1 |
sol.captacao.meta-pollhistórico
| CAPTACAO | PRONTO | 4/4 | passou | n/a | atualizado | NÃO | 0 |
sol.captacao.meta-leadgen-receptorhistórico
| CAPTACAO | ARQUIVADO | 0/0 | n/a | n/a | atualizado | NÃO | 0 |
sol.inbound.whatsapphistórico
| QUALIFICACAO | CORRIGINDO | 1/? | pendente | parcial | atualizado | NÃO | 0 |
2gZdr2EvcuB6UoRXhistórico
| CAPTAÇÃO | PRONTO | n/a | passou | n/a | atualizado | NÃO | 0 |
TysfJ4xg1kvfKlx2histórico
| CAPTAÇÃO | CORRIGINDO | 0/1 | passou com 1 ressalva | ok | atualizado | NÃO | 0 |
Só o que de fato impede fechar. Descoberta lateral vai para backlog e não trava o selo.
A cadeia não fecha porque "o workflow roda". Fecha quando se responde, sem inferência: quantos entraram, por qual caminho, quantos viraram registro válido, quantos chegaram ao SolarMarket, quantos receberam a primeira abordagem, quantos ficaram pendentes, e se existe backlog.
| caminho | estado | última entrega | evidência |
|---|---|---|---|
Meta Lead Ads · pollsol.captacao.meta-poll (syCkKOzOyX7Uydbj) | OK | 2026-08-18 22:00 | RESTABELECIDO 18/08 14:55 UTC. Ficou parado 2 dias e 14 horas (16/08 00:20 -> 18/08 14:55, ~750 ciclos) por credencial OAuth invalidada. Ao voltar: Graph devolveu 131 leads, 131/131 com form_id 1355008362677886. Dos 9 leads represados, o checkpoint entregou 7 e barrou 2 corretamente (ja existiam por outro canal). Zero replay: 7 execucoes webhook para 7 leads. |
Meta Lead Ads · webhooksol.captacao.meta-webhook (pZ6aenKD92QjT755) | SEM EVENTO | nunca | 0 execucoes retidas. Ativo e tecnicamente completo, mas a Meta nunca entregou nada nele. |
Landing/Site · planilhasol.captacao.entrada-lead — lane cron (Q8HFEmithXX9Do2b) | OK | 2026-08-18 23:20 | Cron de 5 min rodando: 250 execucoes retidas, 250 success. |
WhatsApp direto · novo leadsol.inbound.whatsapp (28WqoWNKIEanBI7G) | OK | 2026-08-18 21:43 | 98 execucoes retidas, todas success. Conta como entrada SO quando o telefone nao existia antes: nesse caso a propria 1a mensagem cria o lead. Provado em 65/65 leads. E o unico caminho entregando volume hoje. |
Entrada = telefone que não existia antes. META_LEAD_ADS +
LANDING_PAGE + WHATSAPP_DIRETO.
A última coluna, respostas, é mensagem de lead que já existia — isso é início da
QUALIFICAÇÃO e está fora da conta de aquisição, de propósito.
Linha marcada = nenhum lead do formulário Meta naquele dia.
| dia | entraram | META_LEAD_ADS | LANDING_PAGE | WHATSAPP_DIRETO | com SM | 1º contato | qualificados | sem SM | respostas (não é entrada) |
|---|---|---|---|---|---|---|---|---|---|
| 2026-08-12 | 5 | 2 | — | 3 | 5 | 2 | 4 | — | — |
| 2026-08-13 | 8 | 3 | 2 | 3 | 8 | 4 | 4 | — | 2 |
| 2026-08-14 | 8 | 6 | — | 2 | 8 | 6 | 6 | — | 2 |
| 2026-08-15 | 3 | 2 | — | 1 | 3 | 2 | 0 | — | 1 |
| 2026-08-16 | 3 | — | 1 | 2 | 3 | 1 | 0 | — | — |
| 2026-08-17 | 11 | — | 2 | 9 | 11 | 1 | 6 | — | — |
| 2026-08-18 | 16 | 11 | 2 | 3 | 16 | 12 | 3 | — | — |
No instante da quebra a conta fechava exata: 162 meta_ads no Supabase = 120 reais do form (122 menos 2 leads de teste da propria Meta) + 42 do backlog do form anterior. Zero represado. Depois de 16/08 00:20 UTC nao ha como contar: a Graph nao responde para a credencial do poll, entao todo lead que entrou no formulario desde entao esta invisivel para nos.
Regra: Entrada da CAPTACAO = META_LEAD_ADS + LANDING_PAGE + WHATSAPP_DIRETO. Resposta de lead que ja existia NAO entra na contagem de entrada: e inicio da QUALIFICACAO. A coluna "respostas" abaixo esta fora da conta de aquisicao, de proposito.
A regra que essa cadeia inteira defende: valor informado no formulário não é conta validada. O valor declarado é sinal comercial; a conta de energia é prova. Só o OCR abre o gate.
SOL SDR → CONTA → OCR → MÉDIA 3M → PRAZO → SCORE → DECISÃO → RESUMO → HANDOVER
| garantia | estado | como |
|---|---|---|
| conta sempre solicitada | ok | o valor do formulário não abre mais o gate |
| PDF/imagem + OCR | ok | gpt-4o, READ_OK/PARTIAL/FAIL, guard anti-modelo |
| valor declarado preservado | ok | valor_conta intacto |
| valor OCR separado | ok | valor_conta_ocr, coluna própria |
| histórico de consumo | ok | consumo_historico jsonb |
| média 3 meses | ok | só meses reais; menos de 3 = NULL |
| prazo como gate | ok | perguntado só após a conta validada |
| score definitivo | ok | recalculado após OCR + prazo |
| qualificação precoce bloqueada | ok | fastQualify virou prioridade, não rota |
| resumo canônico | ok | um objeto → whisper + SolarMarket + gestão |
| handover ordenado | ok | ts_qualificado < ts_handoff |
| telemetria operacional | ok | 1ª resposta, tempo de resposta, mensagens IA |
| ledger de IA | ok | 1 chamada = 1 evento, preço congelado |
| idempotência econômica | ok | request_key UNIQUE; retry não cobra 2× |
| captação | LANDING_PAGE / GOOGLE / OLIMPIA |
| declarado no formulário | R$ 850,00/mês |
| validado pelo OCR | R$ 144,35 · READ_OK · confiança 95% |
| prazo | Mais para o futuro |
| score / temperatura | 35 · FRIO |
| status | QUALIFICADO |
| closer | Danieli Nicasso |
| SLA do handover | ts_qualificado < ts_handoff por 12s |
| conversa persistida | 13 mensagens |
| custo de IA do lead | US$ 0,098853 |
| Dez/2025 | 408 kWh |
| Jan/2026 | 441 kWh |
| Fev/2026 | 371 kWh |
| média 3 meses | 406,67 kWh |
| indicador | valor |
|---|---|
| leads na base | 280 |
| com conta validada por OCR | 4 |
| com média de 3 meses | 4 |
| com 1ª resposta medida | 4 |
| handover em ordem correta | 36 |
| eventos no ledger de IA | 18 |
| custo de IA acumulado | US$ 0.246548 |
Nenhum evento de IA sem precificacao: todo uso registrado tem custo calculado.
1 leads historicos ainda tem ts_handoff anterior a ts_qualificado. Sao anteriores a correcao e nao foram saneados — o saneamento so entra depois que o escritor esta certo, e agora esta.
O writer antigo gravava ts_handoff no início do handover, em ramo paralelo,
enquanto o filho regravava ts_qualificado no fim. Resultado: 34 leads com SLA
fisicamente impossível — handover antes da qualificação.
| situação | leads | como |
|---|---|---|
| invertidos antes do saneamento | 34 | — |
| reconstruídos por evidência real | 33 | 20 pela execução n8n do handover · 13 pelo evento de transferência no Krolik |
| não reconstruíveis | 1 | mantidos como estavam, fora do SLA |
| timestamps fabricados | 0 | nenhuma estimativa, nenhum swap de campo, nenhum "+1 segundo" |
Distribuição do ts_handoff − ts_qualificado reconstruído:
mín 0.656s · mediana 2.853s · p95 5.717s · máx 10.86s.
Nenhum outlier absurdo.
Regressão no writer novo: 612453 +11.108s · 612457 +12.27s · 612449 +11.585s — todos positivos.
| remanescente | motivo |
|---|---|
| lead 569563 | nenhum evento de transferencia no Krolik em ±5 min da qualificacao; execucao n8n fora da janela de retencao |
Ressalva de leitura: Os historicos foram reconstruidos pelo instante da TRANSFERENCIA DO CHAT ao closer. O writer novo carimba ts_handoff quando o handover INTEIRO termina (SolarMarket + Krolik + gestao), alguns segundos depois. As duas metades da serie medem pontos ligeiramente diferentes do mesmo evento.
transferido_comercial = true e closer_id preenchido — os dois batem em 84 leadsstatus = 'DESQUALIFICADO' — 34 leadsRegra auditada nos 26 em 13/08/2026: o filtro de elegibilidade do
sol.followup.janela-24h exige status in (ABERTO,QUALIFICACAO) e
ts_qualificado is null e ts_transferido is null e
ts_desqualificado is null — quatro guardas. Nenhum fluxo de SDR ou FUP retoma
atuação depois do FIM SOL. Exposição residual: sol.followup.reprocessa-parados e
sol.ops.altera-status-lead são webhooks sem autenticação que conseguem reescrever
status e ressuscitar um lead encerrado.
Nas duas saídas a atuação da SOL como SDR termina naquele lead. Depois do
handoff quem conduz é o closer, e o desfecho comercial mora no SolarMarket — não na SOL.
ts_transferido não serve como prova de handoff: está em 153 leads contra 57 reais.
Visão canônica da SOL. OPS e OBSERVABILIDADE são camadas de suporte, não etapas da jornada. Continua pilar único SDR — as divisões abaixo são cadeia:*, não pilares. Elo marcado NÃO ANALISADO não foi provado.
| etapa | workflow(s) | objeto supabase | estado | revisão |
|---|---|---|---|---|
| CAPTAÇÃO Meta / Google → entrada → Supabase → SolarMarket → 1º contato | SOL - Captação - Coleta de Leads Meta [SOL] Meta Leadgen SOL - Captação - Ingestão de Leads Meta | lead + conversa(capture) | QUALIFICACAO | provado |
| QUALIFICAÇÃO Inbound → SDR → FUP → qualifica / desqualifica | sol.inbound.whatsapp [SOL] SDR Engine sol.followup.janela-24h sol.followup.reprocessa-parados sol.crm.garante-cliente-projeto | conversa + campos de qualificação | QUALIFICACAO | provado |
| HANDOVER Qualificado → closer → entrega → confirmação | [SOL] Qualificar Lead [SOL] Desqualificar [SOL] Router Tag sol.roteamento.fallback-tags | transferido_comercial + closer_id | QUALIFICADO / DESQUALIFICADO | provado |
| FIM SOL Qualificou e entregou, ou desqualificou. A SOL sai de cena. | — | ts_handoff / ts_desqualificado | terminal | provado |
| OPS · camada de suporte Ferramentas internas de leitura e correção | sol.crm.token [SOL] Ops Query (read-only) sol.ops.le-lead sol.ops.meta-form-readonly [SOL] Ops SM Lookup (read-only) [SOL] Ops SM GraphQL (read-only) [SOL] Ops Krolik Lookup (read-only) [SOL] Ops Sheet Read (read-only) sol.ops.altera-status-lead | — | transversal | provado |
| OBSERVABILIDADE · camada de suporte Vigias, métricas e briefing | sol.observabilidade.silencio-inbound sol.comercial.resposta-closer [SOL] Briefing Diário Rafael (08h BRT) | alertas | transversal | provado |
Linha enxuta; a ficha completa abre abaixo, na seção de fichas.
| id | workflow | etapa | vida | n8n | workplace | nós | decisão |
|---|---|---|---|---|---|---|---|
2gZdr2EvcuB6UoRX | SOL - Captação - Coleta de Leads Landing Page | NÃO ANALISADO | sem eixo vida | ativo | sem eixo revisão | 7 | — |
syCkKOzOyX7Uydbj | SOL - Captação - Coleta de Leads Meta | CAPTAÇÃO | vivo | ativo | pendente | 7 | pendente |
TysfJ4xg1kvfKlx2 | SOL - Captação - Ingestão de Leads Landing Page | NÃO ANALISADO | sem eixo vida | ativo | sem eixo revisão | 30 | — |
Q8HFEmithXX9Do2b | SOL - Captação - Ingestão de Leads Meta | CAPTAÇÃO | vivo | ativo | pendente | 37 | pendente |
YIfTKTi28C1R4z7b | SOL - TESTE - Prepara E2E 14770 (one-shot) | NÃO ANALISADO | sem eixo vida | inativo | sem eixo revisão | 5 | — |
MIJwx1qcLAJW6Lrt | [SOL] Briefing Diário Rafael (08h BRT) | OBSERVABILIDADE | vivo | ativo | pendente | 6 | pendente |
1NW8E0etgiPUc8kn | [SOL] Desqualificar | HANDOVER | vivo | ativo | pendente | 23 | pendente |
vtkHm3dMPdQu4bsB | [SOL] Ops Krolik Lookup (read-only) | OPS | vivo | ativo | pendente | 3 | pendente |
eEkCmi1xfiXlAqYz | [SOL] Ops Query (read-only) | OPS | vivo | ativo | pendente | 3 | pendente |
wwnlcgDy8f3gvkTA | [SOL] Ops SM GraphQL (read-only) | OPS | vivo | ativo | pendente | 4 | pendente |
ElyzB7oOlfIyC39k | [SOL] Ops SM Lookup (read-only) | OPS | vivo | ativo | pendente | 4 | pendente |
4a7NUQbfsbMQTBQN | [SOL] Ops Sheet Read (read-only) | OPS | vivo | ativo | pendente | 3 | pendente |
S2lRZ4ihpAiMMCHj | [SOL] Qualificar Lead | HANDOVER | vivo | ativo | pendente | 40 | pendente |
Vdc0MQeGJl5yvnp2 | [SOL] Router Tag | HANDOVER | vivo | ativo | pendente | 21 | pendente |
EsLDYIxZvp7jmr9D | [SOL] SDR Engine | QUALIFICAÇÃO | vivo | ativo | pendente | 15 | pendente |
RkaGtxj71VYewn8A | sol.comercial.resposta-closer | OBSERVABILIDADE | vivo | ativo | pendente | 9 | pendente |
XNjrr2RSn2TEzfoo | sol.crm.garante-cliente-projeto | QUALIFICAÇÃO | vivo | ativo | pendente | 17 | pendente |
zkgVYMEviJ3NvoZw | sol.crm.token | OPS | vivo | ativo | pendente | 4 | pendente |
voSpd9sEtmMoREAz | sol.followup.janela-24h | QUALIFICAÇÃO | vivo | ativo | pendente | 20 | pendente |
gP5UBqGVqdSmSrAb | sol.followup.reprocessa-parados | QUALIFICAÇÃO | vivo | ativo | pendente | 10 | pendente |
28WqoWNKIEanBI7G | sol.inbound.whatsapp | QUALIFICAÇÃO | vivo | ativo | pendente | 62 | pendente |
DJAnXCzk4ptkxZ1r | sol.obs.registra-uso-ia | NÃO ANALISADO | sem eixo vida | ativo | sem eixo revisão | 5 | — |
KBLy8U1eSBjjCzWk | sol.observabilidade.silencio-inbound | OBSERVABILIDADE | vivo | ativo | pendente | 8 | pendente |
ls6fMFxOKVNVJJF9 | sol.ops.altera-status-lead | OPS | vivo | ativo | pendente | 3 | pendente |
PKcR12bXg2DHuZZp | sol.ops.le-lead | OPS | vivo | ativo | pendente | 4 | pendente |
RYCHPYTrFE0NSKd9 | sol.ops.meta-form-readonly | OPS | vivo | ativo | pendente | 4 | pendente |
PxsIxCyRuxDBU00k | sol.roteamento.fallback-tags | HANDOVER | vivo | ativo | pendente | 5 | pendente |
Arquivados no n8n em 14/08/2026 — fora da contagem, dentro da memória.
Continuam exportados em Sol-estrategia/n8n/workflows/ e o arquivamento é reversível.
| id | workflow | nós | por que saiu |
|---|---|---|---|
pZ6aenKD92QjT755 | [SOL] Meta Leadgen | 9 | — |
Clique para abrir. Workflow ainda não revisado mostra só o que o n8n PROD sabe.
2gZdr2EvcuB6UoRXNÃO ANALISADONÃO ANALISADO — este workflow ainda não passou pela revisão nó a nó. O que se sabe vem só do n8n PROD: 7 nós, ativo.
syCkKOzOyX7Uydbjrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
TysfJ4xg1kvfKlx2NÃO ANALISADONÃO ANALISADO — este workflow ainda não passou pela revisão nó a nó. O que se sabe vem só do n8n PROD: 30 nós, ativo.
Q8HFEmithXX9Do2brevisado em 13/08/2026decisão: pendenteQUALIFICACAOcanal_origem · chat_id · contact_id · email · etapa_funil · gclid · identificador_sm · origem · sm_status · status · telefone_normalizado · ts_ultima_interacao · ultimo_canal
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
YIfTKTi28C1R4z7bNÃO ANALISADONÃO ANALISADO — este workflow ainda não passou pela revisão nó a nó. O que se sabe vem só do n8n PROD: 5 nós, inativo.
MIJwx1qcLAJW6Lrtrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
1NW8E0etgiPUc8knrevisado em 13/08/2026decisão: pendenteDESQUALIFICADOdesqualificado · sm_status · status
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
vtkHm3dMPdQu4bsBrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
eEkCmi1xfiXlAqYzrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
wwnlcgDy8f3gvkTArevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
ElyzB7oOlfIyC39krevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
4a7NUQbfsbMQTBQNrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
S2lRZ4ihpAiMMCHjrevisado em 13/08/2026decisão: pendenteQUALIFICADO—
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
Vdc0MQeGJl5yvnp2revisado em 13/08/2026decisão: pendenteQUALIFICADO/DESQUALIFICADOorigem
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
EsLDYIxZvp7jmr9Drevisado em 13/08/2026decisão: pendenteQUALIFICACAOtelefone_normalizado
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
RkaGtxj71VYewn8Arevisado em 13/08/2026decisão: pendenteQUALIFICADOnome
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
XNjrr2RSn2TEzfoorevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
zkgVYMEviJ3NvoZwrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
voSpd9sEtmMoREAzrevisado em 13/08/2026decisão: pendenteQUALIFICACAOorigem · telefone_normalizado · ts_transferido
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
gP5UBqGVqdSmSrAbrevisado em 13/08/2026decisão: pendenteQUALIFICACAOdesqualificado · nome · origem · status · telefone_normalizado · ts_ultima_interacao
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
28WqoWNKIEanBI7Grevisado em 13/08/2026decisão: pendentevárioscidade · etapa_funil · identificador_sm · nome · origem · sm_status · status · telefone_normalizado · ts_ultima_interacao · valor_conta
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
DJAnXCzk4ptkxZ1rNÃO ANALISADONÃO ANALISADO — este workflow ainda não passou pela revisão nó a nó. O que se sabe vem só do n8n PROD: 5 nós, ativo.
KBLy8U1eSBjjCzWkrevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
ls6fMFxOKVNVJJF9revisado em 13/08/2026decisão: pendente—closer_id · status
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
PKcR12bXg2DHuZZprevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
RYCHPYTrFE0NSKd9revisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
PxsIxCyRuxDBU00krevisado em 13/08/2026decisão: pendente——
este fluxo não produz comunicação a cliente
Nenhuma foi executada. Auditoria ≠ correção.
revisado em 13/08/2026 · fonte: n8n PROD ·
prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md
Período 2026-07-01 a 2026-08-18. Toda linha vem de contagem sobre a base, não de estimativa.
| etapa | quantidade | observação |
|---|---|---|
| Leads no Supabase (todos os canais) | 277 | |
| Leads do Fluxo 01 (captacao) | 206 | 173 Meta + 33 site |
| Leads do inbound direto (WhatsApp) | 71 | |
| Receberam 1o contato gravado | 196 | 95.1% dos de captacao |
| Responderam | 67 | 32.5% |
| QUALIFICADO | 3 | 1.1% do total |
| DESQUALIFICADO | 34 | 12.3% |
| Entregues ao closer (transferido_comercial + closer_id) | 84 | handoff PROVADO |
| Ainda com a SOL (QUALIFICACAO) | 135 | |
| Em regua de FUP (fup_count>0) | 159 | |
| Sem SolarMarket (identificador_sm nulo) | 12 | todos do canal WhatsApp; 0 na captacao |
| Sem nenhuma conversa | 5 | |
| Perdidos por erro (comprovado) | 1 | Marciel Freitas — ECONNRESET 12/08. exec 808717 ja expurgada |
| Reprocessados/replay por dia | 32.256 | reinjecoes do feeder contra o Ads Capture |
A mediana é a leitura honesta: a média é distorcida pelo lote de reparo manual de 17/07.
| transição | n | mediana | média | P90 |
|---|---|---|---|---|
| entrada → 1º contato | 196 | 12 s | 11.4 min | 24 s |
| 1º contato → resposta | 60 | 8.8 min | 11.4 h | 52.3 h |
| resposta → qualificação | 39 | 60 s | 28.2 min | 3.4 min |
| qualificação → handoff | SEM AMOSTRA | |||
13550083626778861835018456356694509544755984242120248170693270511CONFLITO RESOLVIDO 17/08: houve divergencia sobre qual seria o form atual (1355008362677886 x 4509544755984242). A propria Meta decide, e ela carimba form_id e campaign_id em cada lead. Na ultima leitura boa (exec 872671, 16/08 00:15 UTC): 122/122 leads com form_id=1355008362677886 e 120/122 com campaign_id=120248170693270511 (os 2 sem campanha sao leads de teste da propria Meta). Ou seja, a campanha 120248170693270511 entrega NESTE form. O 4509544755984242 e o form ANTERIOR, de onde vieram os 42 leads do backlog de julho. Ressalva honesta: essa prova vale ate 16/08 00:15; depois disso a credencial OAuth caiu e nao ha como ver a Graph — se o formulario do anuncio tiver sido trocado depois, so saberemos ao reconectar. PROVADO por leitura da Graph API em 13/08/2026. O nome "Formulário com Lógica Condicional" é da CAMPANHA, não do formulário — foi essa a armadilha que levou à leitura errada anterior. Os 42 leads meta_ads que não estão neste form são o backlog do form anterior, injetado em 17/07 pelo poll hoje morto.
Executadas com GO explícito, protocolo desativa → edita → valida → ativa, com golden provado antes de fechar. Todo o resto da auditoria segue sem correção.
O [SOL] Captura Meta Form Novo ganhou CHECKPOINT POR TELEFONE: le os telefones ja gravados na tabela lead e so entrega ao Ads Capture quem ainda nao existe. Fail-closed — se a leitura do Supabase falhar, aborta em vez de reinjetar a base. Auto-curativo: se o n8n ficar parado horas, o lead continua pendente e entra na proxima varredura, entao nao existe janela de tempo que crie buraco. Backfill controlado via 00_CONFIG.modo_backfill. Tambem ganhou errorWorkflow, retry e limite de varredura 500 com falha alta se o form crescer alem disso.
prova: Execucao 861282: checkpoint leu 236 telefones, Monta payloads devolveu 0 itens, POST sol-ads-inbound NAO executou. Dois ciclos consecutivos (23:05 e 23:10) com zero POSTs. Volume do Ads Capture caiu de 113 execucoes a cada 5 min para 1 (so o cron da planilha). Aritmetica fecha: 114 leads no form = 112 ja na base + 2 de teste + 0 entregues.
O /sol-ads-inbound passou a validar o x-webhook-token que os chamadores ja enviavam. A verificacao ficou depois do 00_CONFIG, comparando contra o campo inbound_token — sem segredo escrito em condicao de no. Webhook em responseMode=responseNode com Respond 200 e Respond 401. A lane do cron da planilha nao foi tocada. O segredo interno (n8n->n8n) foi rotacionado nos 5 pontos: receptor + 4 chamadores. Nada da Meta foi tocado — Graph token, Page e Form intactos.
prova: POST sem token = 401. POST com o token antigo = 401. POST com o token da primeira rotacao = 401. POST com o token atual = 200 e o fluxo segue. Nenhum lead criado pelos testes; o lead usado no golden (597661) ficou byte a byte igual.
Migration 0005 (100% aditiva, 7 colunas + 5 indices) aplicada em 17/08. As duas lanes do tronco passaram a gravar tres dimensoes SEPARADAS: origem_entrada (macro), pagina_origem (coluna F da planilha) e canal_aquisicao (coluna G). Antes tudo virava canal_origem=GOOGLE_SITE e 43% dos leads de site ficavam com canal errado. Lane Meta persiste meta_page_id, meta_form_id, meta_leadgen_id e meta_campaign_name com valores reais do payload; o feeder busca o page_id na Graph (/{form_id}?fields=page) em vez de hardcodar constante. canal_origem NAO foi removido — segue por compatibilidade.
prova: Lane Meta (lead 597661): origem_entrada=META_LEAD_ADS, canal_aquisicao=META, page/form/leadgen/campanha reais, pagina_origem=null. Lane planilha (lead 612376, Fernando Ferreira): origem_entrada=LANDING_PAGE, pagina_origem=OLIMPIA, canal_aquisicao=FACEBOOK — corrigiu um caso REAL que estava gravado como google_site. Planilha voltou a estado terminal (JA CADASTRADO), sem loop. Nenhum lead novo criado, nenhum campo existente alterado.
O no da Graph tem onError=continueRegularOutput: erro de credencial virava um item {error} e o fluxo seguia marcando SUCCESS com zero leads. Foi assim que a captacao ficou dois dias parada sem ninguem saber. Agora o Monta payloads detecta a resposta de erro e LANCA excecao, disparando o errorWorkflow.
prova: Execucao 880823 passou a reportar status=error em vez de success falso.
Cada uma foi comprovada por leitura direta do PROD nesta auditoria. Nenhuma foi corrigida.
A credencial OAuth "Facebook Lead Ads EVOLVE" (aQioFPafaFKd3BNL) responde "refreshToken is required". O ultimo lead da Meta entrou em 15/08/2026 20:05; desde entao NENHUM lead de anuncio foi capturado. Ficou invisivel por ~2 dias porque o onError do no da Graph transformava a falha em success com zero leads. Os leads NAO se perderam: continuam na Meta, e o checkpoint por telefone reentrega todos assim que a credencial for reconectada. Acao necessaria: refazer o OAuth da credencial na UI do n8n (exige navegador e login Meta).
O feeder [SOL] Captura Meta Form Novo busca os 112 leads do form a cada 5 min sem filtro de data nem cursor, e reinjeta todos. 112 replays + 1 cron = 113 execucoes a cada 5 min = 32.544/dia. Retencao de execucoes do n8n caiu para 85 MINUTOS; a exec 808717 do lead perdido ja responde HTTP 404. A SOL perdeu a capacidade de auditar qualquer incidente.
POST /sol-ads-inbound sem autenticacao. O feeder JA envia x-webhook-token e nenhum no le. Qualquer POST anonimo cria lead, cria cliente/projeto no SolarMarket e dispara WhatsApp real.
sol.ops.altera-status-lead: a auditoria disse "sem autenticacao". ERRADO — o no Code valida um token no corpo, tem allowlist de status e limita lote a 40. O problema real e menor: segredo de 5 caracteres, sem rate limit, responde 500 em vez de 401. Rebaixado de CRITICO para MEDIO.
No Ads Capture, 7 dos 8 nos do SolarMarket sao continueRegularOutput. SM fora do ar produz lead com identificador_sm vazio e sm_status Abertos, WhatsApp enviado, execucao marcada success e errorWorkflow inalcancavel.
sol.ops.le-form-meta responde, sem auth, nome/telefone/e-mail/cidade dos 114 leads do formulario.
chave da API ElevenLabs como literal no header do no ElevenLabs TTS (sol.followup.janela-24h), sem credencial n8n.
ts_transferido tem 2 escritores com semanticas diferentes: Qualificar Lead (handoff real) e FUP (marcador de saida da regua). 122 dos 206 registros nao sao handoff.
etapa_funil: 2 escritores (TRAFEGO PAGO no Ads Capture, SOL SDR no inbound), 0 leitores no n8n inteiro. 23 leads de site marcados como trafego pago.
Ads Capture: 0 de 34 nos com retry. Inbound: 0 de 50. Um ECONNRESET transitorio perde o lead inteiro — ja aconteceu.
PATCH lead enriquecido roda mesmo com is_new=false: 5 leads que chegaram pelo WhatsApp foram reetiquetados como google_site.
13 dos 26 workflows nao tem errorWorkflow configurado.
17 webhooks publicados na SOL; apenas 2 realmente autenticados ([SOL] Router Tag e sol.inbound.whatsapp).
O que a operação ainda não consegue responder, e o campo que falta para conseguir.
A operação funcionar não basta: ela precisa deixar rastro suficiente para
administrar o produto. Auditoria do lead 612449 (execuções
890615 e 890617), campo a campo.
Ausência de dado aparece como NÃO MENSURÁVEL, nunca como número bonito.
lead| SLA | duração | início → fim | fonte | confiança |
|---|---|---|---|---|
| CAPTAÇÃO | 5s | lead.created_at → conversa[capture/out].ts | backend | ALTA |
| ENGAJAMENTO | 3.19h | 1ª abordagem → conversa[in].ts | backend | ALTA |
| SDR | 7s | resposta do cliente → conversa[sdr/out].ts | backend | ALTA |
| QUALIFICAÇÃO | 13s | resposta (proxy) → lead.ts_qualificado | backend, com proxy | MÉDIA — não existe timestamp de entrada em SOL SDR |
| HANDOVER | INVERTIDO | lead.ts_qualificado → lead.ts_handoff | backend | BAIXA — ts_handoff 02:31:25.323 é ANTES de ts_qualificado 02:31:30.689 |
Observado na execução (evidência efêmera, não persistida):
Anthropic · claude-sonnet-4-6 · input 315 ·
cache-creation 3894 · cache-read 0 ·
output 349.
Gap: Para responder "quanto custou este lead" seria preciso persistir usage por conversa + tabela de preço por modelo. NÃO criado neste turno.
| outro custo | estado | observação |
|---|---|---|
| Krolik / template WhatsApp | NÃO MENSURÁVEL | nenhum campo de custo; o fornecedor cobra por janela/template fora do n8n |
| SolarMarket | NÃO APLICÁVEL | licença, não custo por lead |
| ElevenLabs (áudio do FUP) | NÃO MENSURÁVEL | sem persistência de caracteres/custo |
| OpenAI OCR | NÃO MENSURÁVEL | não houve OCR neste lead; e não há writer de usage |
| tabela | função | linhas | colunas | PK | única | escrevem | leem |
|---|---|---|---|---|---|---|---|
lead | Registro operacional do lead — a verdade da jornada | 277 | 87 | id | telefone_normalizado (UNIQUE no banco) | entrada-lead, inbound.whatsapp, Qualificar, Desqualificar, FUP, Router, resposta-closer, ops.altera-status | SDR Engine, FUP, Qualificar, Desqualificar, silencio-inbound, Briefing, ops |
conversa | Historico de mensagens, entrada e saida | 1525 | 14 | id | — | entrada-lead, inbound.whatsapp, SDR Engine, FUP, reprocessa | SDR Engine, silencio-inbound |
closer | Cadastro dos closers para a roleta | 2 | 7 | id | sm_id, krolik_id | ops.altera-status (campo ativo) | Qualificar (roleta), resposta-closer |
config | Configuracao operacional da franquia: modelos de IA, faixas de score, horarios de FUP, tags do Krolik, stages do SolarMarket, vozes | 1 | 35 | franquia_id | — | NENHUM | NENHUM — a configuracao efetiva vive hardcoded nos nos 00_CONFIG de cada workflow |
lead por responsabilidade| campo | tipo | preenchido | quem escreve | quem lê | estado |
|---|---|---|---|---|---|
id | bigint | 277/277 100% | [SOL] Qualificar Lead, [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead, sol.comercial.resposta-closer, sol.followup.janela-24h, sol.followup.reprocessa-parados, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), [SOL] Desqualificar, [SOL] Qualificar Lead, [SOL] Reparo Rajada 17/07 (one-shot), [SOL] Router Tag, [SOL] SDR Engine, sol.captacao.entrada-lead, sol.comercial.resposta-closer, sol.followup.janela-24h, sol.followup.reprocessa-parados, sol.inbound.whatsapp, sol.observabilidade.silencio-inbound, sol.ops.altera-status-lead | CANÔNICO |
telefone_normalizado | text | 277/277 100% | [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead, sol.followup.janela-24h, sol.followup.reprocessa-parados, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), [SOL] Desqualificar, [SOL] Reparo Rajada 17/07 (one-shot), [SOL] Router Tag, sol.captacao.entrada-lead, sol.captacao.meta-poll, sol.followup.janela-24h, sol.inbound.whatsapp | CANÔNICO |
franquia_id | text | 277/277 100% | — | — | CANÔNICO |
nome | text | 277/277 100% | [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), [SOL] Desqualificar, [SOL] Qualificar Lead, [SOL] Reparo Rajada 17/07 (one-shot), [SOL] Router Tag, sol.captacao.entrada-lead, sol.comercial.resposta-closer, sol.crm.garante-cliente-projeto, sol.followup.janela-24h | CANÔNICO |
created_at | timestamp with time zone | 277/277 100% | — | [SOL] Briefing Diário Rafael (08h BRT), sol.ops.le-lead | CANÔNICO |
updated_at | timestamp with time zone | 277/277 100% | — | — | CANÔNICO |
cidade | text | 235/277 85% | sol.captacao.entrada-lead | [SOL] Desqualificar, [SOL] Qualificar Lead, [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead | PARCIAL |
email | text | 206/277 74% | sol.captacao.entrada-lead | [SOL] Qualificar Lead, [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead | PARCIAL |
estado | text | 31/277 11% | — | — | SEM USO |
cep | text | 31/277 11% | — | — | SEM USO |
bairro | text | 25/277 9% | — | — | SEM USO |
cpf_cnpj | text | 12/277 4% | — | — | SEM USO |
tipo_pessoa | text | 4/277 1% | — | — | SEM USO |
| campo | tipo | preenchido | quem escreve | quem lê | estado |
|---|---|---|---|---|---|
canal_origem | text | 277/277 100% | sol.captacao.entrada-lead | [SOL] Briefing Diário Rafael (08h BRT) | CANÔNICO |
ultimo_canal | text | 277/277 100% | sol.captacao.entrada-lead | — | SUSPEITO |
origem_entrada | text | 274/277 99% | sol.captacao.entrada-lead, sol.inbound.whatsapp | sol.inbound.whatsapp | PARCIAL |
etapa_funil | text | 254/277 92% | [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead, sol.inbound.whatsapp | sol.inbound.whatsapp | PARCIAL |
canal_aquisicao | text | 204/277 74% | sol.captacao.entrada-lead | sol.inbound.whatsapp | PARCIAL |
pagina_origem | text | 33/277 12% | sol.captacao.entrada-lead | — | SUSPEITO |
meta_page_id | text | 12/277 4% | sol.captacao.entrada-lead | — | SUSPEITO |
meta_form_id | text | 12/277 4% | sol.captacao.entrada-lead | — | SUSPEITO |
meta_leadgen_id | text | 12/277 4% | sol.captacao.entrada-lead | — | SUSPEITO |
meta_campaign_name | text | 12/277 4% | sol.captacao.entrada-lead | — | SUSPEITO |
meta_campaign_id | text | 12/277 4% | sol.captacao.entrada-lead | — | SUSPEITO |
utm_source | text | 0/277 0% | — | — | SEM USO |
utm_campaign | text | 0/277 0% | — | — | SEM USO |
fbclid | text | 1/277 0% | sol.captacao.entrada-lead | — | SUSPEITO |
gclid | text | 0/277 0% | sol.captacao.entrada-lead | — | SUSPEITO |
| campo | tipo | preenchido | quem escreve | quem lê | estado |
|---|---|---|---|---|---|
score | integer | 277/277 100% | — | [SOL] Desqualificar | CANÔNICO |
temperatura | text | 277/277 100% | — | [SOL] Desqualificar | CANÔNICO |
status | text | 277/277 100% | [SOL] Desqualificar, [SOL] Qualificar Lead, sol.captacao.entrada-lead, sol.followup.reprocessa-parados, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), [SOL] Desqualificar, [SOL] Reparo Rajada 17/07 (one-shot), [SOL] Router Tag, sol.followup.janela-24h | CANÔNICO |
total_mensagens_ia | integer | 277/277 100% | — | — | SEM USO |
tem_geracao | boolean | 277/277 100% | — | — | SEM USO |
aguardando_conta | boolean | 277/277 100% | — | sol.followup.janela-24h | CANÔNICO |
total_audios | integer | 277/277 100% | — | — | SEM USO |
valor_conta | numeric | 235/277 85% | sol.captacao.entrada-lead | [SOL] Briefing Diário Rafael (08h BRT), [SOL] Desqualificar | PARCIAL |
resumo_qualificacao | text | 122/277 44% | [SOL] Desqualificar | — | SUSPEITO |
ts_qualificado | timestamp with time zone | 103/277 37% | [SOL] Qualificar Lead | [SOL] Briefing Diário Rafael (08h BRT), sol.comercial.resposta-closer, sol.followup.janela-24h, sol.observabilidade.silencio-inbound | PARCIAL |
preferencia_contato | text | 85/277 31% | — | — | SEM USO |
prazo_decisao | text | 55/277 20% | sol.inbound.whatsapp | sol.inbound.whatsapp | PARCIAL |
tipo_imovel | text | 34/277 12% | — | — | SEM USO |
ocr_status | text | 34/277 12% | — | — | SEM USO |
ocr_confianca | numeric | 34/277 12% | — | — | SEM USO |
instalacao_uc | text | 32/277 12% | — | — | SEM USO |
distribuidora | text | 32/277 12% | — | — | SEM USO |
ts_desqualificado | timestamp with time zone | 32/277 12% | [SOL] Desqualificar, sol.followup.reprocessa-parados | sol.followup.janela-24h, sol.observabilidade.silencio-inbound | PARCIAL |
consumo_kwh_mes | numeric | 29/277 10% | — | — | SEM USO |
consumo_historico | jsonb | 24/277 9% | — | — | SEM USO |
tendencia_consumo | text | 24/277 9% | — | — | SEM USO |
classificacao_conta | text | 23/277 8% | — | — | SEM USO |
tipo_fornecimento | text | 23/277 8% | — | — | SEM USO |
consumo_kwh_min | numeric | 0/277 0% | — | — | SEM USO |
consumo_kwh_max | numeric | 0/277 0% | — | — | SEM USO |
forma_pagamento | text | 0/277 0% | — | — | SEM USO |
tipo_telhado | text | 0/277 0% | — | — | SEM USO |
acrescimo_carga | text | 0/277 0% | — | — | SEM USO |
consumo_medio_3m | numeric | 0/277 0% | — | — | SEM USO |
consumo_medio_12m | numeric | 1/277 0% | — | — | SEM USO |
| campo | tipo | preenchido | quem escreve | quem lê | estado |
|---|---|---|---|---|---|
transferido_comercial | boolean | 277/277 100% | [SOL] Qualificar Lead | — | SUSPEITO |
ts_transferido | timestamp with time zone | 206/277 74% | [SOL] Qualificar Lead, sol.followup.janela-24h | [SOL] Briefing Diário Rafael (08h BRT), sol.comercial.resposta-closer, sol.followup.janela-24h | PARCIAL |
handoff_tipo | text | 90/277 32% | [SOL] Router Tag, sol.followup.janela-24h, sol.inbound.whatsapp | sol.observabilidade.silencio-inbound | PARCIAL |
handoff_origem | text | 90/277 32% | [SOL] Router Tag, sol.followup.janela-24h, sol.inbound.whatsapp | sol.observabilidade.silencio-inbound | PARCIAL |
ts_handoff | timestamp with time zone | 87/277 31% | [SOL] Router Tag, sol.followup.janela-24h, sol.inbound.whatsapp | sol.observabilidade.silencio-inbound | PARCIAL |
closer_id | bigint | 84/277 30% | [SOL] Qualificar Lead | — | SUSPEITO |
ts_resposta_closer | timestamp with time zone | 65/277 23% | sol.comercial.resposta-closer | sol.comercial.resposta-closer | PARCIAL |
closer_respondeu_krolik_id | text | 65/277 23% | sol.comercial.resposta-closer | — | SUSPEITO |
tempo_resposta_closer_seg | integer | 65/277 23% | sol.comercial.resposta-closer | — | SUSPEITO |
| campo | tipo | preenchido | quem escreve | quem lê | estado |
|---|---|---|---|---|---|
identificador_sm | text | 265/277 96% | [SOL] Qualificar Lead, [SOL] Reparo Rajada 17/07 (one-shot), sol.captacao.entrada-lead, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), [SOL] Desqualificar, [SOL] Reparo Rajada 17/07 (one-shot), sol.inbound.whatsapp | PARCIAL |
sm_status | text | 264/277 95% | [SOL] Desqualificar, [SOL] Qualificar Lead, sol.captacao.entrada-lead, sol.inbound.whatsapp | — | SUSPEITO |
contact_id | text | 218/277 79% | sol.captacao.entrada-lead | — | SUSPEITO |
chat_id | text | 202/277 73% | sol.captacao.entrada-lead | sol.comercial.resposta-closer, sol.followup.janela-24h | PARCIAL |
project_id_sm | text | 103/277 37% | [SOL] Qualificar Lead | [SOL] Desqualificar | PARCIAL |
template_entregue | boolean | 3/277 1% | sol.captacao.entrada-lead | — | SUSPEITO |
client_id_sm | text | 0/277 0% | — | — | SEM USO |
whatsapp_valido | boolean | 0/277 0% | — | — | SEM USO |
template_msg_id | text | 0/277 0% | — | — | SEM USO |
| campo | tipo | preenchido | quem escreve | quem lê | estado |
|---|---|---|---|---|---|
fup_count | integer | 277/277 100% | sol.followup.janela-24h, sol.followup.reprocessa-parados, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), sol.followup.janela-24h | CANÔNICO |
reativado_fup | boolean | 277/277 100% | sol.followup.janela-24h, sol.followup.reprocessa-parados | sol.followup.janela-24h | CANÔNICO |
respondeu | boolean | 277/277 100% | sol.followup.reprocessa-parados, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), sol.followup.janela-24h | CANÔNICO |
ts_ultima_interacao | timestamp with time zone | 263/277 95% | sol.captacao.entrada-lead, sol.followup.reprocessa-parados, sol.inbound.whatsapp | [SOL] Briefing Diário Rafael (08h BRT), sol.followup.janela-24h | PARCIAL |
ts_ultimo_fup | timestamp with time zone | 170/277 61% | sol.followup.janela-24h, sol.followup.reprocessa-parados | [SOL] Briefing Diário Rafael (08h BRT), sol.followup.janela-24h | PARCIAL |
ts_reativacao | timestamp with time zone | 158/277 57% | sol.followup.janela-24h, sol.followup.reprocessa-parados, sol.inbound.whatsapp | sol.followup.janela-24h | PARCIAL |
acao_manual | text | 8/277 3% | [SOL] Router Tag | — | SUSPEITO |
ts_acao_manual | timestamp with time zone | 8/277 3% | [SOL] Router Tag | — | SUSPEITO |
ts_primeira_resposta | timestamp with time zone | 0/277 0% | — | — | SEM USO |
tempo_resposta_seg | integer | 0/277 0% | — | — | SEM USO |
ts_template_reprocesso | timestamp with time zone | 0/277 0% | — | — | SEM USO |
Mapeamento do que já existe. Onde leitura e ingestão vivem no mesmo workflow, está mostrado como está — nada foi separado por estética.
| canal | papel | workflow | nó / branch | entrada | saída |
|---|---|---|---|---|---|
| META | LEITURA | sol.captacao.meta-poll | Cron 5min · 24h → GET page do form → GET leads form novo → GET telefones existentes (checkpoint) → Monta payloads | Graph API, form 1355008362677886 | POST /sol-ads-inbound |
| META | INGESTAO | sol.captacao.entrada-lead | Webhook Meta Lead → IF token válido → Parse Meta lead → tronco comum | POST /sol-ads-inbound | lead + conversa + SM + 1a abordagem |
| LANDING PAGE | LEITURA | sol.captacao.entrada-lead | Cron Google 5min → GET planilha Google → Novos leads (planilha) → É processar? | planilha Google (gate coluna F) | mesmo workflow |
| LANDING PAGE | INGESTAO | sol.captacao.entrada-lead | Normaliza + monta → tronco comum | saida do no anterior | lead + conversa + SM + 1a abordagem |
| WHATSAPP DIRETO | LEITURA | sol.inbound.whatsapp | Webhook · sol-wa-inbound → Normaliza telefone → IF tel_status → IF token válido | evento 7 do Krolik | mesmo workflow |
| WHATSAPP DIRETO | INGESTAO | sol.inbound.whatsapp | Supabase capture_lead → IF lead novo (entry) [TRUE] → PATCH status QUALIFICACAO | saida do no anterior | lead (so quando o telefone nao existia) |
| campo | META | LANDING | WHATSAPP DIRETO |
|---|---|---|---|
telefone_normalizado | 173/173 | 33/33 | 71/71 |
origem_entrada | 173/173 | 33/33 | 68/71 |
canal_aquisicao | 173/173 | 31/33 | 0/71 |
pagina_origem | 0/173 | 33/33 | 0/71 |
meta_form_id | 12/173 | 0/33 | 0/71 |
meta_leadgen_id | 12/173 | 0/33 | 0/71 |
identificador_sm | 173/173 | 33/33 | 59/71 |
chat_id | 111/173 | 28/33 | 63/71 |
contact_id | 127/173 | 28/33 | 63/71 |
template_entregue | 2/173 | 1/33 | 0/71 |
status | 173/173 | 33/33 | 71/71 |
ts_ultima_interacao | 163/173 | 31/33 | 69/71 |
atendidos 0 · sem atendimento 0 · QUALIFICADO 0 · DESQUALIFICADO 0 · ABERTO 0 · handover concluído 0 · handover pendente 0 · sem SolarMarket 0
atendidos 49 · sem atendimento 0 · QUALIFICADO 19 · DESQUALIFICADO 3 · ABERTO 27 · handover concluído 19 · handover pendente 0 · sem SolarMarket 0
| tabela | linhas | colunas | pk | rls | observação |
|---|---|---|---|---|---|
lead | 277 | 87 | id | ligado. acesso só pela chave de serviço | 206 do Fluxo 01 · 71 do inbound · 0 telefones duplicados |
conversa | 1.525 | 14 | id | ligado. acesso só pela chave de serviço | direcao tem 3 vocabularios: in / out / outbound |
closer | 2 | 7 | id | ligado. acesso só pela chave de serviço | Vitoria Coelho e Danieli Nicasso |
config | 0 | 0 | — | — | INACESSIVEL pela ferramenta ops — tabela nao existe ou sem permissao |
Prosa completa em Sol-estrategia/docs/AUDITORIA-SOL-13-08.md.
⚠️ Este bloco não vem do n8n — vem do censo de 08/08/2026 e é mantido à mão.
| agente | papel | modelo | via |
|---|---|---|---|
| sol-briefing | estagiario | sem-modelo | Code node |
| sol-desqualificador | worker | sem-modelo | sub-workflow |
| sol-detector-resposta-closer | estagiario | sem-modelo | Code node |
| sol-ocr-conta | estagiario | gpt-4o | httpRequest api.openai.com |
| sol-parse-meta | estagiario | sem-modelo | Code node |
| sol-qualificador | worker | sem-modelo | sub-workflow |
| sol-regua-fup | worker | sem-modelo | Code node |
| sol-roleta-closer | estagiario | sem-modelo | Code node |
| sol-router-tag | estagiario | sem-modelo | webhook Krolik evento 22/31 |
| sol-score-e-travas | worker | sem-modelo | Code node |
| sol-sdr-conversa | worker | claude-sonnet-4-6 | httpRequest api.anthropic.com |
| sol-sm-ensure | estagiario | sem-modelo | sub-workflow |
| sol-voz-fup | estagiario | eleven_turbo_v2_5 | httpRequest api.elevenlabs.io |
| sol-watchdog | estagiario | sem-modelo | Code node |
API n8n PROD, leitura de 19/08/2026 11:47 BRTdados-revisao.json (extrato da revisão fluxo a fluxo)leitura direta do Supabase hsnglsjmiefgxghljgsz em 13/08/2026Graph API v21.0, leitura de 13/08/2026censo SOL de 08/08/2026 — mantido à mão./refresh-sol.sh e commita. É deliberado: ligar visual vivo exige o
contrato n8n → Workplace → frontend, que é transversal a toda a plataforma — e não se
cria arquitetura especial só para a SOL.