Detecção
| parâmetro | valor inicial | quem altera |
|---|
O motor de alertas da cabine de comando: vigia a operação em tempo real sobre o stream de eventos, nomeia a causa candidata e aciona o Investigador. Este documento especifica o produto para o time construir.
O Sentinela lê o stream de eventos da operação em tempo real e dispara alertas contra a banda de normalidade de cada conta, triados por impacto em R$. Ele não diagnostica: nomeia uma causa candidata, sempre como hipótese, e aciona o Investigador. Todo alerta é configurável, todo desfecho vira log, e o log calibra os limiares.
Vigia padrões sobre o stream evento_lead e as projeções derivadas: pacing, timing, quebra de funil, mix, score, conduta do agente, pagamento e saúde do próprio dado.
Não investiga causa, não muda agente, não abre ação sozinho. Detecta, precifica em R$, sugere a hipótese e entrega ao dono a decisão.
Precisão: a fração dos alertas que geram ação real, com piso de 60% por família. Abaixo do piso, o limiar recalibra. O log de desfecho é o mecanismo.
O módulo HOJE (fila de alertas do head), o Estrategista (priorização por R$), o Investigador (deep-link de diagnóstico) e a ROTINA (ação com origem rastreada).
| Família | Nome | Alertas | Pergunta que responde |
|---|---|---|---|
| F1 | Pacing e volume | 4 | A operação sabe já de manhã se o período fecha na meta? |
| F2 | Timing e SLA | 5 | O lead está esperando mais do que o combinado em algum ponto da jornada? |
| F3 | Quebra de funil | 6 | Alguma etapa do funil está perdendo fora do padrão dela? |
| F4 | Mix e entrada | 5 | O que entra no funil (volume, origem, perfil) sustenta a meta e a leitura das taxas? |
| F5 | Executor: score e esforço | 5 | Cada executor, humano ou agente, sustenta o padrão de qualidade e de volume que a meta exige? |
| F6 | Pipeline esfriando | 5 | Quanto dinheiro está parado no funil sem ação agendada? |
| F7 | Conformidade e guardrail | 5 | O agente fala com o lead apenas o que a conta aprovou e o que a regulação permite? |
| F8 | Saúde do agente conversacional | 7 | O agente conversa e fecha como projetado, ou uma falha de canal, de cadastro ou de versão trava lead sem ninguém ver? |
| F9 | Pagamento e checkout | 3 | O sim do lead está virando dinheiro confirmado, ou a venda morre entre o link e o pagamento? |
| F10 | Saúde do dado e da própria Sentinela | 5 | Dá para confiar no dado que alimenta todos os outros alertas, ou a Sentinela está operando cega? |
| F11 | Reincidência | aberta | Os erros que já conhecemos e demos como resolvidos estão ficando resolvidos? |
Todo alerta do catálogo segue estas regras. Elas vêm da doutrina de vendas e do que a operação real já mediu. Alerta novo que desviar de alguma delas não entra.
| # | Regra | Origem | Na prática |
|---|---|---|---|
| 1 | Taxa se compara com a banda de normalidade da própria etapa, nunca com número redondo | G2 | O gatilho é banda_inferior ou banda_superior(etapa, conta). Sem banda definida, a regra não liga. |
| 2 | Agregação por média ponderada de volumes absolutos, nunca média de percentuais | G8 | Todo agregado declara o volume que o sustenta. |
| 3 | Comparação entre executores só estratificada por mix de lead | G10 + regra de leitura 5 | Alerta de disparidade sem estrato não dispara: sem estratificar, atribui a comportamento o que é seleção de lead. |
| 4 | Todo R$ é margem e carrega memória de cálculo | V14 + camada econômica | Fórmula, premissas, janela e n visíveis no card. Referência do caso validado: gap de 8pp × R$ 10,5 mil/pp = R$ 84 mil/mês, sobre 343 negociações. |
| 5 | Abaixo do n mínimo da família: badge de amostra pequena e causa candidata suprimida | Rubrica §7 | O número aparece; a atribuição de causa não. |
| 6 | Causa candidata é hipótese e só é nomeada com desvio fora da banda com significância | G3 | O rótulo de hipótese fica visível no card; a confirmação é do diagnóstico. |
| 7 | Threshold é parâmetro de calibração por conta, nunca número fixo dentro da regra | Processo de análise contínua | Todo limiar vive no catálogo de parâmetros da conta, marcado a calibrar. |
| 8 | Conformidade é validador em código com bateria de casos adversariais, nunca prompt | Governança da doutrina | O alerta de conformidade lê o registro do guardrail. |
| 9 | Canal e artefato técnico se investigam antes do comportamento do agente | Operação Hapvida: debounce 6.804 ocorrências em 14 dias, régua de terceiro, pixel fora da whitelist | Ordem fixa dos playbooks: canal → dado → comportamento. |
| 10 | Todo alerta disparado registra desfecho, e a precisão por família tem piso de 60% | Processo de análise contínua | Abaixo do piso por 2 semanas, o limiar da família recalibra. Cooldown, dedup e orçamento de atenção completam o controle de fadiga. |
Todo alerta é um registro com estrutura fixa em 5 blocos e uma máquina de estados auditável. Este capítulo define o schema, os estados e um registro exemplo completo.
Todo alerta carrega os mesmos 5 blocos:
Id, família, tipo, conta, versão da regra que disparou e timestamp de criação. Sem identidade estável não há deduplicação, cooldown, nem série histórica de precisão por família.
Nome em linguagem de negócio, severidade, impacto em R$ de margem com memória de cálculo, janela e n. O leitor é um head comercial; o bloco precisa se sustentar sozinho.
Métrica, fórmula com parâmetros nomeados, valor observado, banda, estratificação e causa candidata rotulada como hipótese. Existe para o diagnóstico começar do ponto certo e para a regra ser auditável depois.
Estado atual, histórico de transições com timestamp e ator, canal de notificação, deep-link e ação criada com dono e prazo. É o que permite medir o tempo entre detecção e ação.
Desfecho, contribuição para a precisão da família e reincidência. O log de desfecho é o insumo da calibração de limiares.
A máquina de estados: disparado → visto → em diagnóstico → ação criada ou falso positivo → desfecho registrado. Dois estados laterais completam o ciclo: suprimido (cooldown) e agrupado (digest).
| Estado | Significado | Quem transiciona |
|---|---|---|
| disparado | A regra cruzou o gatilho; o registro nasce completo | Sentinela (sistema) |
| suprimido (cooldown) | Mesma família e mesmo objeto dentro da janela de cooldown; registra sem notificar | Sentinela (sistema) |
| agrupado (digest) | Severidade Atenção; entra no resumo agrupado do período | Sentinela (sistema) |
| visto | Um humano abriu o card; começa o relógio de resposta | Usuário no HOJE |
| em diagnóstico | Alguém assumiu a investigação via deep-link; o ator vira dono temporário | Usuário no Investigador |
| ação criada | O diagnóstico gerou ação na ROTINA, com dono e prazo; o alerta aponta para ela | Usuário na ROTINA |
| falso positivo | Descartado com motivo; alimenta a precisão da família | Usuário |
| desfecho registrado | Estado terminal: ação re-medida ou descarte documentado; matéria-prima da calibração | Usuário ou sistema (re-medição) |
Toda transição grava timestamp e ator: é o que permite medir a precisão por família e o tempo entre detecção e ação.
Registro exemplo do alerta canônico, com todos os campos do schema. Os números de negócio vêm do caso validado no produto; ids e timestamps são ilustrativos (formato D0, D1 = dias desde o disparo).
| parâmetro | valor inicial | quem altera |
|---|
Cada registro segue o schema do capítulo 2. Severidade: 17 críticos, 23 altos, 12 de atenção. Nenhum threshold é compromisso: todo valor de disparo é parâmetro de calibração por conta.
A operação sabe já de manhã se o período fecha na meta?
A família traduz G14 (escopo v1: pacing) e o monitor S1 em cards: o presente projetado contra o target do dia e do mês, e a boca do funil contra a banda dela. Permite corrigir no mesmo dia o que hoje só aparece no fechamento. A entrada tem alertas simétricos (G13: ociosidade e saturação): lead faltando é meta em risco, lead sobrando é SLA em risco. O pacing por alavanca amarra a régua econômica combinada com o cliente (A1-A5 na Hapvida) ao acompanhamento semanal.
O dia fecha na meta, ou já dá para saber no meio da tarde que não fecha?
projecao_fim_do_dia(vendas, curva_intradiaria(conta, dia_semana)) < target_dia × (1 - tolerancia_pacing) em C_cortes consecutivos do dia| parâmetro | valor inicial | quem altera |
|---|---|---|
| tolerancia_pacing | 15% abaixo do target · a calibrar | head |
| C_cortes | 2 cortes consecutivos · a calibrar | FDE |
| grade_de_cortes | corte a cada 2h dentro do horário de operação · a calibrar | FDE |
| curva_intradiaria | curva por dia da semana sobre 8 semanas móveis · a calibrar | head + FDE |
| n_min_dia | PLACEHOLDER eventos de funil no dia até o corte · a calibrar | head + FDE |
A boca do funil parou de encher e ninguém decidiu isso?
entrada_leads(janela_movel) < banda_inferior(entrada, conta, dia_semana_hora) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_entrada | piso da banda por dia da semana e hora, sobre 8 semanas móveis · a calibrar | head + FDE |
| P_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela de 1h dentro do horário de entrada · a calibrar | FDE |
| n_min_entrada | PLACEHOLDER leads esperados na janela · a calibrar | head + FDE |
Chegou mais lead do que a operação atende dentro do SLA?
entrada_leads(janela_movel) > banda_superior(entrada, conta, dia_semana_hora) por P_periodos consecutivos OU fila_de_espera > capacidade_planejada × fator_saturacao| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior_entrada | teto da banda por dia da semana e hora, sobre 8 semanas móveis · a calibrar | head + FDE |
| fator_saturacao | 120% da capacidade planejada · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| perda_por_sla_estourado | PLACEHOLDER (fator da conta) · a calibrar | head + FDE |
| n_min_pico | PLACEHOLDER leads na janela · a calibrar | head + FDE |
Cada alavanca combinada com o cliente anda na trajetória do mês?
projecao_fechamento_mes(alavanca) < trajetoria_combinada(alavanca, mes) × (1 - tolerancia_alavanca) por P_semanas consecutivas; taxas calculadas por volumes absolutos (média ponderada, nunca média de percentuais)| parâmetro | valor inicial | quem altera |
|---|---|---|
| tolerancia_alavanca | 10% abaixo da trajetória do mês · a calibrar | head |
| P_semanas | 2 semanas consecutivas · a calibrar | FDE |
| trajetoria_combinada | curva mensal por alavanca, acordada com o cliente · a calibrar | head |
| n_min_alavanca | PLACEHOLDER eventos da alavanca no mês · a calibrar | head + FDE |
O lead está esperando mais do que o combinado em algum ponto da jornada?
Velocidade é estratégia (V8): o lead de alta intenção esfria em minutos, e a referência da doutrina para a motion M1 é 1ª resposta em 5 min. Esta família vigia o tempo em todos os pontos em que o lead espera: 1ª resposta humana, 1ª resposta do agente, intervalos em conversa ativa, o contrato bilateral com marketing (G12) e a passagem de bastão no transbordo. Para o agente, que responde em segundos, degradação de tempo é sinal de infraestrutura, não de vendas. Deriva do monitor S2 da Sentinela e dos critérios P1 e P2 da rubrica. Protege a conversão de topo e meio do funil.
O lead quente que chegou agora esperou mais do que o combinado para ouvir a primeira palavra?
taxa_dentro_sla(1a_resposta ≤ T_sla_humano, executor_tipo=humano, janela_movel) < banda_inferior(taxa_1a_resposta, conta) por P_periodos seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_sla_humano | 5 min (referência doutrina M1) · a calibrar | head + FDE |
| banda_inferior | 20% abaixo da mediana do baseline da conta · a calibrar | FDE |
| janela_movel | 4 h · a calibrar | FDE |
| P_periodos | 3 períodos consecutivos · a calibrar | FDE |
| N_min | 30 entradas na janela (referência rubrica §7) · a calibrar | FDE |
| H_cooldown | 24 h · a calibrar | FDE |
O agente responde em segundos; quando passa disso, a pergunta não é de vendas, é de infraestrutura: o que está segurando a resposta?
p95(tempo_1a_resposta, executor_tipo=agente, janela_movel) > banda_superior(tempo_1a_resposta_agente, agente_versao) por P_periodos seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior | 3x a mediana do baseline da versão do agente · a calibrar | FDE |
| janela_movel | 30 min · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| N_min | 50 entradas na janela · a calibrar | FDE |
| H_cooldown | 6 h · a calibrar | FDE |
O lead que está conversando agora ficou falando sozinho?
taxa_conversas_com_gap(gap_entre_turnos > T_intervalo, conversa_ativa=verdadeiro, janela_movel) > banda_superior(taxa_gap, conta, executor_tipo) por P_periodos seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_intervalo | 10 min (referência rubrica P2) · a calibrar | head + FDE |
| banda_superior | 20% acima da taxa histórica de gaps da operação · a calibrar | FDE |
| janela_movel | 4 h · a calibrar | FDE |
| P_periodos | 3 períodos consecutivos · a calibrar | FDE |
| N_min | 30 conversas ativas na janela · a calibrar | FDE |
| H_cooldown | 24 h · a calibrar | FDE |
O contrato entre marketing e vendas está sendo cumprido dos dois lados, ou a quebra de topo virou jogo de empurra?
taxa_dentro_sla(atendimento, janela_movel) < banda_inferior(atendimento, conta) E taxa_informacao_minima(leads_entrantes, janela_movel) < banda_inferior(qualidade_entrada, origem) na mesma janela| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_sla_atendimento | 5 min (referência doutrina M1) · a calibrar | head |
| criterios_informacao_minima | lista do contrato marketing↔vendas (campos obrigatórios do lead: contato válido, origem, interesse declarado) · a calibrar | head |
| banda_inferior_bilateral | 20% abaixo do baseline de cada lado · a calibrar | head + FDE |
| janela_movel | 7 dias · a calibrar | FDE |
| N_min | 50 leads por origem na janela · a calibrar | FDE |
| H_cooldown | 48 h · a calibrar | FDE |
Quando o agente passa o bastão, quanto tempo o lead fica sem ninguém do outro lado?
percentil(tempo entre transbordo e 1a_mensagem_humana, percentil_pickup, janela_movel) > banda_superior(tempo_pickup, conta) por P_periodos seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| percentil_pickup | p90 · a calibrar | FDE |
| banda_superior | 50% acima da mediana histórica de pickup da conta · a calibrar | FDE |
| T_pickup_max | 30 min (referência V8, transbordo) · a calibrar | head + FDE |
| janela_movel | 24 h · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| N_min | 20 transbordos na janela · a calibrar | FDE |
| H_cooldown | 12 h · a calibrar | FDE |
Alguma etapa do funil está perdendo fora do padrão dela?
É a família do alerta canônico do produto: taxa de etapa contra a banda de normalidade da própria etapa (G2), nunca contra número redondo, com persistência para não reagir a uma terça-feira ruim. Cobre o funil canônico Leads → Conversas → Qualificados → Negociação → Vendas, mais dois sinais de saúde do diagnóstico: perda sem motivo registrado (V11) e tempo de ciclo esticando (V10). Toda quebra nasce com causa candidata estratificada por mix de lead (G10) e vira pauta na weekly de quebras com dono. Deriva do monitor S3 e do gabarito indicador → gap → ação da doutrina.
Os leads que entram estão virando conversa no ritmo padrão da conta?
taxa_etapa(leads→conversas, janela_movel) < banda_inferior(etapa, conta) por N_periodos consecutivos; taxa calculada por volumes absolutos (média ponderada, nunca média de percentuais)| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_etapa | piso da banda de normalidade da etapa, baseline de 6 meses quando existir · a calibrar | head + FDE |
| N_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_etapa | PLACEHOLDER leads na etapa na janela · a calibrar | head + FDE |
As conversas estão virando leads qualificados no ritmo padrão da conta?
taxa_etapa(conversas→qualificados, janela_movel) < banda_inferior(etapa, conta) por N_periodos consecutivos; taxa por volumes absolutos (média ponderada)| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_etapa | piso da banda de normalidade da etapa, baseline de 6 meses quando existir · a calibrar | head + FDE |
| N_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_etapa | PLACEHOLDER conversas na janela · a calibrar | head + FDE |
Os qualificados estão chegando à mesa de negociação no ritmo padrão da conta?
taxa_etapa(qualificados→negociacao, janela_movel) < banda_inferior(etapa, conta) por N_periodos consecutivos; taxa por volumes absolutos (média ponderada)| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_etapa | piso da banda de normalidade da etapa, baseline de 6 meses quando existir · a calibrar | head + FDE |
| N_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_etapa | PLACEHOLDER qualificados na janela · a calibrar | head + FDE |
As negociações estão virando venda no ritmo padrão, ou a etapa do dinheiro está vazando?
taxa_etapa(negociacao→venda, janela_movel) < banda_inferior(etapa, conta) por N_periodos consecutivos; taxa por volumes absolutos (média ponderada)| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_etapa | piso da banda de normalidade da etapa, baseline de 6 meses quando existir · a calibrar | head + FDE |
| N_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_etapa | PLACEHOLDER negociações na janela · a calibrar | head + FDE |
Sabemos por que estamos perdendo os leads que perdemos?
pct_perdas_sem_motivo(janela_movel) > banda_superior(higiene_de_motivo, conta) por N_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior_higiene | teto da banda da própria série de % sem motivo · a calibrar | head + FDE |
| N_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_encerramentos | PLACEHOLDER encerramentos na janela · a calibrar | head + FDE |
O lead está demorando mais que o padrão para atravessar a etapa?
mediana(tempo_na_etapa, janela_movel) > banda_superior_mediana(etapa, conta) OU p90(tempo_na_etapa, janela_movel) > banda_superior_p90(etapa, conta), por N_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior_mediana | teto da banda da mediana de tempo da própria etapa · a calibrar | head + FDE |
| banda_superior_p90 | teto da banda do p90 de tempo da própria etapa · a calibrar | head + FDE |
| N_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_etapa | PLACEHOLDER leads que saíram da etapa na janela · a calibrar | head + FDE |
O que entra no funil (volume, origem, perfil) sustenta a meta e a leitura das taxas?
A conta pode quebrar pela entrada mesmo com o funil saudável: origem com conversão zerada, fit abaixo do contrato, mix que desloca e distorce toda leitura, fonte que seca, fonte nova sem baseline. A regra da casa manda investigar o canal antes de culpar o funil (monitor S4): o caso do pixel fora da whitelist (CPA de R$ 110 mil/lead) veio daí. A família também protege a leitura: taxa agregada e comparação só valem com o mix declarado (G8, G10). Liga direto com o quadro de fontes da conta e com o contrato de entrada entre marketing e vendas (G12).
Alguma origem virou ralo: entra lead e verba, não sai venda?
vendas(origem, janela_movel) = 0 E leads(origem, janela_movel) >= n_min_zero, OU taxa_composta(origem, janela_movel) < banda_inferior(origem, conta) × fator_deslocamento por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| n_min_zero | PLACEHOLDER leads sem venda para caracterizar zero · a calibrar | head + FDE |
| fator_deslocamento | 50% do piso da banda da própria origem · a calibrar | head + FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 3 dias · a calibrar | FDE |
O lead que entra tem o perfil que o contrato entre marketing e vendas promete?
media_ponderada(fit_score, janela_movel) < fit_minimo_contratado(conta) OU pct_leads_abaixo_do_fit(janela_movel) > teto_contratado(conta), por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| fit_minimo_contratado | definido no contrato de entrada da conta · a calibrar | head |
| teto_contratado | % de leads fora de perfil tolerado no contrato · a calibrar | head |
| P_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_fit | PLACEHOLDER leads com fit calculado na janela · a calibrar | head + FDE |
A mudança na composição das origens está distorcendo a leitura de todas as taxas?
distancia_mix(mix_origem(janela_movel), mix_origem(periodo_referencia)) > limiar_deslocamento por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_deslocamento | 10 pontos de share somados entre origens · a calibrar | head + FDE |
| periodo_referencia | 8 semanas móveis · a calibrar | FDE |
| P_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| n_min_mix | PLACEHOLDER leads na janela · a calibrar | head + FDE |
Alguma fonte de leads está secando sem que alguém tenha decidido isso?
leads(origem, janela_movel) < banda_inferior(volume, origem, dia_semana) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_volume_origem | piso da banda de volume da própria origem, por dia da semana · a calibrar | head + FDE |
| P_periodos | 3 períodos consecutivos · a calibrar | FDE |
| janela_movel | janela móvel de 1 dia · a calibrar | FDE |
| n_min_origem | PLACEHOLDER leads/dia esperados pela banda · a calibrar | head + FDE |
Entrou fonte nova rodando sem baseline, sem banda e sem régua registrada?
origem(evento_entrada) fora_do_quadro_de_fontes(conta) E leads(origem, janela_movel) >= n_min_fonte_nova| parâmetro | valor inicial | quem altera |
|---|---|---|
| n_min_fonte_nova | PLACEHOLDER leads na janela para gerar o alerta · a calibrar | head + FDE |
| janela_movel | janela móvel de 7 dias · a calibrar | FDE |
| prazo_baseline | 4 semanas de coleta para formar a banda da fonte · a calibrar | head |
Cada executor, humano ou agente, sustenta o padrão de qualidade e de volume que a meta exige?
Agente de IA é vendedor (Lei 2 da doutrina): mesma régua, mesmos painéis, mesmo ciclo de cobrança. Esta família vigia cada executor em duas dimensões: o score (qualidade medida pela rubrica) e o esforço (volume e disciplina, E1-E6). Para o agente, esforço vira cobertura, uptime e volume atendido vs demanda. Deriva do monitor S5, de G6 (execução se diagnostica em processo, discurso e esforço) e de G13 (capacidade antes de cobrar conversão); toda comparação entre executores sai estratificada por mix de lead (G10). Protege contra degradação gradual de qualidade e de volume, no humano e no agente.
Algum executor, humano ou agente, está entregando abaixo do próprio padrão de forma persistente?
media_movel(score_dimensao, executor, janela_media_movel) < baseline_propria(executor, dimensao) - delta_queda por P_semanas seguidas, comparando só na mesma rubrica_versao| parâmetro | valor inicial | quem altera |
|---|---|---|
| delta_queda | 1,0 ponto abaixo da baseline própria · a calibrar | head + FDE |
| janela_media_movel | 4 semanas · a calibrar | FDE |
| P_semanas | 2 semanas consecutivas · a calibrar | FDE |
| N_min | 10 conversas pontuadas por semana por executor (referência da amostragem semanal do processo) · a calibrar | FDE |
| H_cooldown | 1 semana · a calibrar | FDE |
O volume de trabalho de cada executor está no nível que a meta exige, antes de qualquer discussão de conversão?
media(score_esforco_E1_E4, executor, janela_movel) < limiar_esforco(conta) por P_dias seguidos, com referências definidas no formato do Arquiteto| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_esforco | média E1-E4 abaixo de 6,0 · a calibrar | head + FDE |
| referencias_operacao | por executor, definidas no formato do Arquiteto (nunca copiadas de outra empresa) · a calibrar | head |
| janela_movel | 5 dias úteis · a calibrar | FDE |
| P_dias | 3 dias úteis consecutivos · a calibrar | FDE |
| N_min | 3 dias com dado completo na janela · a calibrar | FDE |
| H_cooldown | 72 h · a calibrar | FDE |
Tem executor sobrando capacidade enquanto outro tria lead por falta de braço?
leads_dia(executor, janela_movel) < capacidade_planejada(executor) × fator_ociosidade por P_dias seguidos OU leads_dia(executor, janela_movel) > capacidade_planejada(executor) × fator_saturacao por P_dias seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| fator_ociosidade | 70% da capacidade planejada · a calibrar | head |
| fator_saturacao | 120% da capacidade planejada · a calibrar | head |
| capacidade_planejada | por executor, definida no formato (G13) · a calibrar | head |
| janela_movel | 5 dias úteis · a calibrar | FDE |
| P_dias | 3 dias úteis consecutivos · a calibrar | FDE |
| N_min | 10 leads/dia distribuídos na operação · a calibrar | FDE |
| H_cooldown | 72 h · a calibrar | FDE |
O agente está de pé e dando conta da demanda que chega, ou existe lead ficando sem atendimento?
cobertura(volume_atendido ÷ demanda, agente, janela_curta) < banda_inferior(cobertura, agente_versao) OU uptime(agente, janela_curta) < uptime_minimo| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_cobertura | 10% abaixo da cobertura mediana do baseline da versão · a calibrar | FDE |
| uptime_minimo | 99% na janela · a calibrar | head + FDE |
| janela_curta | 60 min · a calibrar | FDE |
| N_min | 20 entradas na janela · a calibrar | FDE |
| H_cooldown | 2 h · a calibrar | FDE |
O farol diário de velocidade acendeu: o dia de hoje já mostra o resultado que vai faltar na semana?
E5(executor, dia) < banda_inferior(E5, executor_tipo, conta) por P_dias seguidos, onde E5 = % do dia com taxa de resposta dentro de T_sla ≥ alvo_intradiario| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_sla | 5 min (referência doutrina M1) · a calibrar | head + FDE |
| alvo_intradiario | 90% de respostas dentro do SLA por faixa do dia (referência rubrica E5) · a calibrar | head + FDE |
| banda_inferior_E5 | 20% abaixo do E5 mediano do executor_tipo · a calibrar | FDE |
| P_dias | 2 dias consecutivos · a calibrar | FDE |
| N_min | 20 entradas no dia · a calibrar | FDE |
| H_cooldown | 24 h · a calibrar | FDE |
Quanto dinheiro está parado no funil sem ação agendada?
Pipeline desatualizado dá diagnóstico falso (V10) e todo lead termina em um nó com destino (V11). Esta família vigia o dinheiro parado: negociação sem ação, régua de follow-up não cumprida, lead sem próximo passo, estoque esfriando e lead órfão depois do transbordo. Mede em contagem e em R$ em risco. Deriva dos critérios P3, P5 e P6 da rubrica, do monitor S3 e do roadmap de agosto da conta (follow-up D0 a D+6). Protege a conversão de fundo: o lead que não fechou hoje é o ativo mais barato de reativar.
Quantas negociações com dinheiro na mesa estão esperando uma ação que ninguém fez?
contagem(conversas em etapa=negociacao com tempo_sem_evento > T_estagnacao) > banda_superior(estoque_estagnado, conta) OU valor_em_risco(estagnadas) > limiar_valor_risco, por P_periodos seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_estagnacao | 48 h (referência rubrica P3) · a calibrar | head + FDE |
| banda_superior_estoque | 20% acima do estoque estagnado mediano da conta · a calibrar | FDE |
| limiar_valor_risco | definido pelo head em R$ por conta · a calibrar | head |
| P_periodos | 2 leituras diárias consecutivas · a calibrar | FDE |
| N_min | 10 negociações ativas na janela · a calibrar | FDE |
| H_cooldown | 24 h · a calibrar | FDE |
Quem não fechou hoje está recebendo o retorno combinado de amanhã, com motivo novo, ou foi esquecido?
taxa_cumprimento(disparo_regua na posicao_dia ÷ leads_elegiveis na posicao_dia, janela_movel) < banda_inferior(cumprimento_regua, posicao) por P_dias seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| posicoes_regua | D0 a D+6 (roadmap de agosto da conta) · a calibrar por conta | head |
| banda_inferior_cumprimento | 90% de cumprimento por posição como piso inicial · a calibrar | head + FDE |
| janela_movel | leitura diária por posição · a calibrar | FDE |
| P_dias | 2 dias consecutivos · a calibrar | FDE |
| N_min | 20 leads elegíveis por posição na janela · a calibrar | FDE |
| H_cooldown | 24 h por posição · a calibrar | FDE |
Todo lead vivo tem um próximo passo com data, ou existe lead pendurado sem destino?
taxa(leads_ativos sem proximo_passo_registrado, janela_movel) > banda_superior(sem_proximo_passo, conta) por P_periodos seguidos, onde proximo_passo = posição de régua agendada OU tarefa com data OU encerramento com motivo e destino| parâmetro | valor inicial | quem altera |
|---|---|---|
| definicao_proximo_passo | posição de régua agendada OU tarefa com data OU encerramento com motivo e destino · a calibrar por conta | head + FDE |
| banda_superior | 20% acima da taxa histórica de leads sem próximo passo · a calibrar | FDE |
| janela_movel | leitura diária · a calibrar | FDE |
| P_periodos | 2 leituras diárias consecutivas · a calibrar | FDE |
| N_min | 30 leads ativos na janela · a calibrar | FDE |
| H_cooldown | 24 h · a calibrar | FDE |
Quanto vale o estoque de conversas esfriando no funil neste momento?
valor_em_risco(leads_parados com dias_parado > T_esfriamento, por etapa) > banda_superior(valor_estoque_parado, conta) OU crescimento(valor_em_risco, janela_movel) > taxa_crescimento_maxima por P_periodos seguidos| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_esfriamento | 5 dias (referência do mockup) · a calibrar | head + FDE |
| banda_superior_valor | 20% acima do valor mediano de estoque parado da conta · a calibrar | FDE |
| taxa_crescimento_maxima | crescimento do valor em risco acima de 15% na janela · a calibrar | FDE |
| janela_movel | leitura diária · a calibrar | FDE |
| P_periodos | 2 leituras diárias consecutivas · a calibrar | FDE |
| N_min | 10 conversas paradas na janela · a calibrar | FDE |
| H_cooldown | 48 h · a calibrar | FDE |
O lead que o agente passou para um humano tem dono agora, ou morreu na passagem de bastão?
contagem(leads com transbordo sem dono_atribuido OU sem primeira_acao_do_dono dentro de T_atribuicao) ≥ limite_absoluto na janela_curta| parâmetro | valor inicial | quem altera |
|---|---|---|
| T_atribuicao | 15 min entre transbordo e 1ª ação do dono · a calibrar | head + FDE |
| limite_absoluto | 1 lead (tolerância zero) · a calibrar | head + FDE |
| janela_curta | 60 min · a calibrar | FDE |
| H_cooldown | 2 h por lead · a calibrar | FDE |
O agente fala com o lead apenas o que a conta aprovou e o que a regulação permite?
Conformidade não espera banda: uma promessa indevida já é exposição regulatória e comercial, por isso a família nasce toda crítica. A lição da operação real é direta: prompt não segura conformidade; a barreira é guardrail determinístico em código, com bateria de casos adversariais. A família cobre as duas pontas: o que o agente fala (bloco 0 da rubrica) e o que o sistema grava (proposta). Deriva do bloco 0 da rubrica, da categoria 3 dos modos de falha e da regra de governança da doutrina: conformidade nunca via prompt. Roda sobre conversas: exige base legal LGPD registrada na conta (campo de governança); sem ela, a família não liga.
O agente está oferecendo ao lead uma condição de pagamento que a conta nunca aprovou?
existe(mensagem_enviada em que condicao_comercial_detectada NOT IN lista_aprovada(conta, data)) OU contagem(registro_guardrail(tipo = condicao_nao_aprovada), janela_movel) >= limiar_ocorrencias| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_ocorrencias | 1 ocorrência confirmada · a calibrar apenas o mecanismo de confirmação, nunca a tolerância | head |
| janela_movel | 24 horas · a calibrar | FDE |
O lead está ouvindo um preço e assinando outro?
para cada proposta gravada na janela_movel: |valor_dito_na_conversa - valor_gravado_na_proposta| > tolerancia_reais define ocorrência; dispara quando contagem(ocorrencias, janela_movel) >= limiar_ocorrencias| parâmetro | valor inicial | quem altera |
|---|---|---|
| tolerancia_reais | R$ 1,00 de tolerância de arredondamento · a calibrar | head |
| limiar_ocorrencias | 1 proposta divergente confirmada · a calibrar apenas a confirmação, nunca a tolerância | head |
| janela_movel | 24 horas · a calibrar | FDE |
O agente está prometendo ao lead o que a regulação não permite prometer?
existe(mensagem_enviada com promessa_regulatoria_detectada(lista_termos_regulatorios) confirmada pelo detector) OU contagem(registro_guardrail(tipo = promessa_regulatoria), janela_movel) >= limiar_ocorrencias| parâmetro | valor inicial | quem altera |
|---|---|---|
| lista_termos_regulatorios | dicionário inicial: carência, cobertura, ANS e derivados · a calibrar com a bateria de casos adversariais | head + FDE |
| limiar_ocorrencias | 1 ocorrência confirmada · a calibrar apenas a confirmação, nunca a tolerância | head |
| janela_movel | 24 horas · a calibrar | FDE |
O guardrail é código determinístico: se ele bloqueia mais que o normal, o que mudou atrás dele?
taxa_bloqueio(registro_guardrail, conta, agente_versao, janela_movel) > banda_superior(historico_guardrail, conta, agente_versao) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior | banda do histórico da conta por versão; gatilho inicial: 50% acima da mediana móvel · a calibrar | head + FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | 24 horas · a calibrar | FDE |
Uma conversa reprovou em conformidade na avaliação: quem responde pelo risco já foi avisado?
conversa_scores.incidente_conformidade = true → notifica em até atraso_maximo_notificacao; sem janela de cálculo, sem persistência| parâmetro | valor inicial | quem altera |
|---|---|---|
| atraso_maximo_notificacao | 15 minutos após o registro do incidente · a calibrar | FDE |
O agente conversa e fecha como projetado, ou uma falha de canal, de cadastro ou de versão trava lead sem ninguém ver?
Agente de IA é vendedor (Lei 2 da doutrina): quando o canal reentrega mensagem, o cadastro trava proposta ou o handoff não executa, a conta perde venda sem que o funil aponte o culpado certo. Esta família vigia a máquina por trás da conversa, com a regra da casa como bússola: investigar o canal antes de culpar o modelo. Deriva das categorias 2, 4 e 5 dos modos de falha, todas com caso real medido na primeira conta. Métrica de agente sempre carrega par de versões declarado (ex.: v3.3 vs v3.2), para ligar qualquer subida de erro à mudança que a causou, com canary como rota de saída. Roda sobre conversas: exige base legal LGPD registrada na conta; sem ela, a família não liga.
Quando a lead escreve em rajada, o agente responde a mensagem antiga e repete pergunta que ela já respondeu?
resposta_defasada := mensagem_enviada que responde a turno anterior quando já existe mensagem_recebida mais nova com gap < limiar_gap_rajada; dispara quando taxa_resposta_defasada(janela_movel) > banda_superior(conta, agente_versao) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_gap_rajada | 10 segundos entre mensagens da lead · a calibrar (gap mediano real medido: 9,7s, Hapvida jul/2026) | FDE |
| banda_superior | banda do histórico da conta; gatilho inicial: 20% acima da banda · a calibrar | head + FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | 24 horas · a calibrar | FDE |
O lead recebe resposta duplicada porque o canal reentregou a mesma mensagem e ninguém deduplicou?
duplicada := mensagem_recebida com payload idêntico à anterior da mesma conversa dentro de janela_dedupe E respondida como turno novo; dispara quando contagem(duplicadas, janela_movel) >= limiar_ocorrencias| parâmetro | valor inicial | quem altera |
|---|---|---|
| janela_dedupe | 60 segundos para payload idêntico · a calibrar | FDE |
| limiar_ocorrencias | 20 ocorrências/dia · a calibrar | FDE |
| janela_movel | 24 horas · a calibrar | FDE |
Quantas conversas morrem porque o agente pede o mesmo dado de novo e de novo?
conversa_em_loop := conversa com pedidos_do_mesmo_dado >= limiar_repeticoes; dispara quando taxa(conversas_em_loop, janela_movel) > banda_superior(conta, agente_versao) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_repeticoes | 3 pedidos do mesmo dado na mesma conversa · a calibrar (caso real: 3 vezes, Hapvida jul/2026) | FDE |
| banda_superior | banda do histórico da conta; gatilho inicial: 20% acima da banda · a calibrar | head + FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | 24 horas · a calibrar | FDE |
A mensagem que atrapalha a contratação é mesmo do agente, ou é régua de terceiro entrando na conversa?
invasao := mensagem_enviada dentro de conversa ativa cuja origem NOT IN {agente, regua_propria(disparo_regua)}; dispara quando contagem(invasoes, janela_movel) >= limiar_ocorrencias| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_ocorrencias | 5 conversas invadidas/dia · a calibrar | FDE |
| definicao_conversa_ativa | conversa com evento nas últimas 48 horas · a calibrar | head + FDE |
| janela_movel | 24 horas · a calibrar | FDE |
Quantas vendas já aceitas pelo lead estão travando por erro de cadastro ou de fechamento?
taxa_travamento := propostas sem confirmação após transicao_etapa(fechamento) ÷ propostas iniciadas; dispara quando taxa_travamento(janela_movel) > banda_superior(etapa_fechamento, conta) por P_periodos consecutivos OU quando contagem(catalogo_erros(classe = cadastro_fechamento), janela_movel) > banda_superior(classe, conta) OU quando taxa_travamento(segmento) >= teto_absoluto| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior | banda da etapa de fechamento da conta, definida no baseline do P8 · a calibrar | head + FDE |
| teto_absoluto | 100% de travamento em um segmento (ex.: propostas com dependente) dispara imediato · a calibrar | head + FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | 24 horas · a calibrar | FDE |
A versão do agente em produção erra mais que a anterior?
taxa_erro(agente_versao_atual, janela_movel) > banda_superior(historico_por_versao, conta) por P_periodos consecutivos; o card declara o par (agente_versao_atual vs agente_versao_anterior) e marca se a subida coincide com virada de versão ou de fração de canary| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior | banda do histórico por versão; gatilho inicial: 20% acima da taxa da versão anterior no mesmo estrato · a calibrar | head + FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| janela_movel | 24 horas · a calibrar | FDE |
Quando a regra manda passar o lead adiante, alguém de fato recebe?
lead_preso := lead com condicao_de_handoff satisfeita E sem evento de transbordo/handoff executado em até limiar_tempo_execucao; dispara quando contagem(leads_presos, janela_movel) >= limiar_leads_presos| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_tempo_execucao | 10 minutos entre condição satisfeita e handoff executado · a calibrar (referência: SLA de 1ª resposta de 5 min da doutrina M1) | head + FDE |
| limiar_leads_presos | 3 leads presos na janela · a calibrar | FDE |
| janela_movel | 4 horas · a calibrar | FDE |
O sim do lead está virando dinheiro confirmado, ou a venda morre entre o link e o pagamento?
Vendeu não é fechado (V6): leads somem no checkout. Esta família vigia o trecho entre o link de pagamento e a confirmação: abandono acima da banda, boleto emitido que não vira pagamento e velocidade de resgate quando o lead silencia com o link na mão. Nasce em status roadmap porque depende do evento de pagamento, que entra na conta em agosto junto com o boleto dentro da conversa. O remédio operacional já está definido: timers de resgate (gabarito da doutrina) e a régua D0-D+6.
Quantos leads que já disseram sim estão parando no link de pagamento além do que é normal para esta etapa?
taxa_abandono(link_enviado → pagamento_iniciado, janela_movel) > banda_superior(etapa_checkout, conta) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior_abandono | banda da própria etapa, definida no baseline do P8 · a calibrar | head + FDE |
| janela_movel | 7 dias · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| taxa_resgate_esperada | histórico de resgate da própria conta · a calibrar | FDE |
Quanta venda dada como feita ainda não virou dinheiro, e a régua de acompanhamento está agindo nesses casos?
share_sem_pagamento(safra_emissao, idade > D_dias) > banda_superior(serie_boletos, conta) OU n_absoluto_vencidos(janela) > N_teto| parâmetro | valor inicial | quem altera |
|---|---|---|
| D_dias | 6 dias, espelhando a régua D0-D+6 · a calibrar | head + FDE |
| banda_superior_boletos | banda da série de boletos da conta · a calibrar | FDE |
| N_teto | teto absoluto de casos abertos · a calibrar | head |
Quando o lead para de responder com o link de pagamento na mão, quanto tempo passa até alguém agir, e esse tempo está dentro do padrão?
mediana(tempo entre silencio_do_lead_no_checkout e primeira_acao_de_resgate, janela_movel) > banda_superior(serie_resgate, executor) por P_periodos consecutivos| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior_resgate | banda da série de resgate por executor · a calibrar | FDE |
| janela_movel | 7 dias · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
Dá para confiar no dado que alimenta todos os outros alertas, ou a Sentinela está operando cega?
Alerta de funil sobre dado podre é falso positivo garantido: por isso esta é a primeira família a implementar, a fundação de todas as outras. Ela transforma cegueira em estado de primeira classe do produto: 'dado atrasado' e 'conector caído' são alertas daqui, e enquanto um deles vale, os alertas de funil do recorte afetado ficam suprimidos. Os 5 registros derivam de casos reais da categoria 6 dos modos de falha (mídia e dados) vividos na primeira conta: adapter que quebrou em silêncio, pixel fora da whitelist que distorceu decisão de mídia, série truncada pela fonte, visões que divergem entre si.
O silêncio no funil é falta de lead ou falta de dado?
tempo_desde_ultimo_evento(stream, recorte) > limiar_silencio(faixa_horaria, recorte) OU atraso_mediano_de_ingestao(janela_curta) > limiar_atraso| parâmetro | valor inicial | quem altera |
|---|---|---|
| limiar_silencio | percentil alto do gap histórico entre eventos, por faixa horária · a calibrar | FDE |
| limiar_atraso | atraso de ingestão tolerado antes de marcar 'dado atrasado' · a calibrar | FDE |
O dado que alimenta as decisões continua chegando inteiro, ou um conector quebrou sem avisar?
volume_registros(conector, janela_movel) < banda_inferior(serie_do_conector, faixa_horaria) por P_periodos consecutivos OU share_registros_sem_match_no_schema(janela) > limiar_rejeicao| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_inferior_volume | banda da série de volume do próprio conector · a calibrar | FDE |
| limiar_rejeicao | share de registros que não casam com o schema esperado · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
A queda de conversão da origem é real, ou é um evento de tracking que ninguém cadastrou distorcendo o custo por lead?
existe evento_de_tracking(nome fora da whitelist) com volume(janela) > N_min_ocorrencias E conversao_atribuida(origem, janela) < banda_inferior(serie_da_origem, conta)| parâmetro | valor inicial | quem altera |
|---|---|---|
| N_min_ocorrencias | volume mínimo do evento desconhecido para sair do ruído · a calibrar | FDE |
| banda_inferior_conversao_origem | banda da série de conversão da própria origem · a calibrar | head + FDE |
| janela_movel | 3 dias · a calibrar | FDE |
O período que estamos lendo está completo, ou a fonte parou antes do fim sem avisar?
max_data_presente(fonte, extracao) < data_fim_esperada(janela) - tolerancia_atraso_fonte OU n_linhas_recebidas(extracao) = limite_conhecido(fonte)| parâmetro | valor inicial | quem altera |
|---|---|---|
| limite_conhecido | teto de linhas documentado por fonte · a calibrar | FDE |
| tolerancia_atraso_fonte | defasagem normal de publicação da fonte, em dias · a calibrar | FDE |
O mesmo número conta a mesma história em todas as telas, ou o cliente vai encontrar duas verdades e desconfiar das duas?
abs(metrica(visao_a, janela) - metrica(visao_b, janela)) > tolerancia_reconciliacao(metrica) em R_rodadas seguidas de reconciliação automática| parâmetro | valor inicial | quem altera |
|---|---|---|
| tolerancia_reconciliacao | gap máximo aceito por métrica, em pp ou % · a calibrar | FDE |
| R_rodadas | 2 rodadas seguidas · a calibrar | FDE |
| frequencia_reconciliacao | diária · a calibrar | FDE |
Os erros que já conhecemos e demos como resolvidos estão ficando resolvidos?
Esta família não tem registros fixos: são 2 templates instanciados por item do catálogo de erros conhecidos, que o Bibliotecário mantém na régua o quê aconteceu → por que aconteceu → como não acontece mais. O catálogo entra no produto na semana 3 de agosto (cadastrar o caso, identificar repetição, medir se a correção pegou), e cada caso cadastrado liga os 2 templates automaticamente. R1 vigia o caso corrigido que volta: reincidência reabre o caso, nunca cria caso novo. R2 vigia o caso que nunca zerou e passa a ocorrer acima da banda histórica da própria série (G2). A família cresce junto com o catálogo de erros.
A correção que demos como aplicada segurou, ou o erro voltou e estamos reabrindo um problema que o cliente considera resolvido?
ocorrencias(assinatura_do_caso, janela_pos_correcao) >= N_reincidencia E status_do_caso = corrigido. A assinatura de detecção (padrão de conversa, registro de guardrail, motivo de transbordo) vem do cadastro do caso no catálogo, por instância| parâmetro | valor inicial | quem altera |
|---|---|---|
| N_reincidencia | 1 ocorrência confirmada para caso de conformidade; N maior para caso de UX · a calibrar por caso | head + FDE |
| janela_pos_correcao | começa na data em que a correção foi dada como aplicada · a calibrar por caso | FDE |
| severidade_da_instancia | herdada do cadastro do caso no catálogo (o valor 'alto' deste template é default) | head |
O erro com que convivemos sob controle saiu do nível histórico, e o que mudou na operação para ele crescer?
taxa_ocorrencia(assinatura_do_caso, janela_movel) > banda_superior(serie_historica_do_caso) por P_periodos consecutivos; taxa medida por mil conversas ou por mil leads, conforme o cadastro do caso| parâmetro | valor inicial | quem altera |
|---|---|---|
| banda_superior_caso | banda da série histórica do próprio caso · a calibrar por caso | FDE |
| janela_movel | 7 dias · a calibrar | FDE |
| P_periodos | 2 períodos consecutivos · a calibrar | FDE |
| severidade_da_instancia | herdada do cadastro do caso no catálogo (o valor 'atenção' deste template é default) | head |
Quando o alerta dispara, o Investigador assume pelo deep-link e conduz o diagnóstico na régua da casa: o quê, por quê, como, com causa medida e hipóteses descartadas registradas. Ordem fixa: canal antes de dado, dado antes de comportamento. Cada alerta referencia um playbook e carrega só o seu delta.
Uma taxa ou um volume do funil saiu da banda de normalidade da própria etapa. A queda é real, em qual degrau ela nasce e o que a explica?
Validar que o alerta tem base antes de investir tempo de diagnóstico.
Descartar ou confirmar que o desvio nasce do canal ou da infraestrutura, antes de olhar comportamento. Regra da casa: investigar o canal antes de culpar o modelo.
Descartar ilusão estatística: o número caiu de verdade ou a conta está errada?
Localizar o degrau exato da perda e isolar a variável que mudou, confirmando o que NÃO mudou.
Nomear a classe com medição que prova. A candidata entra como hipótese e só vira causa quando a query ou a amostra confirma e as alternativas estão descartadas.
Transformar causa medida em ação reversível com dono e prazo, e fechar o ciclo que calibra a Sentinela.
O lead espera mais do que o combinado (1ª resposta, meio de conversa ou follow-up) ou o pipeline esfria parado numa etapa. Em qual relógio o tempo se perde e por quê?
Garantir que a leitura de tempo é de distribuição, no relógio certo, com n suficiente.
Descartar que a demora é criada pelo canal ou pela infraestrutura antes de cobrar qualquer executor.
Garantir relógio, fuso e agregação corretos antes de ler tendência.
Localizar o relógio que estourou, isolar a variável que mudou e confirmar o que não mudou.
Nomear a classe com medição que prova. A candidata entra como hipótese e só vira causa com a prova registrada e as alternativas descartadas.
Devolver o tempo ao lead com ação reversível, dono e prazo, e fechar o ciclo.
O score ou o resultado de um executor (vendedor ou agente) caiu ou destoa do time. A diferença vem do comportamento dele ou do lead que ele recebe?
Garantir que a comparação é válida: mesma rubrica, n suficiente, baseline do próprio executor.
Descartar que a nota caiu por artefato de canal, não por mudança de comportamento.
Separar comportamento de seleção de lead: sem estratificação, a comparação atribui a pessoa o que é sorteio.
Abrir o score por critério e aplicar a leitura processo/discurso/esforço (G6) para localizar o gap.
Nomear a classe com medição que prova. A candidata é hipótese até a query ou a amostra confirmar e as alternativas caírem.
Converter o gap em coaching (humano) ou hipótese de ajuste (agente), com re-medição pareada ao desfecho comercial.
O agente disse algo fora das regras aprovadas ou a conversa degradou (repetição, loop, resposta fora de contexto). O desvio é do agente, do canal ou do dado que o alimenta?
Reproduzir antes de concluir e classificar a severidade na entrada.
Investigar o canal antes de culpar o modelo: boa parte dos 'bugs do agente' nasce fora do agente.
Checar se o dado que alimentou o agente estava certo antes de mexer no comportamento.
Com canal e dado descartados, isolar a instrução ou condição que dispara o desvio e confirmar o que não mudou.
Nomear a classe com a prova que a confirma. Toda candidata é hipótese até a reprodução controlada fechar.
Corrigir com validação de ponta a ponta e rollout gradual, e alimentar o catálogo.
O lead disse sim e a venda não confirmou. Onde a venda morre entre o sim e o pagamento: sistema, dado, resgate ou o próprio lead?
Separar falha de sistema de abandono do lead antes de qualquer leitura.
Confirmar que o link chegou, a página funcionou e nenhuma régua externa atravessou o resgate.
Checar a integridade da proposta: valor, cadastro e espelhamento. É onde moram as travas silenciosas.
Auditar o resgate: os últimos 10 minutos da venda são código e disciplina, não sorte.
Nomear a classe com a prova que a confirma. Candidata é hipótese até a reprodução ou o diff fechar.
Recuperar a venda que morre no fim do funil e provar a recuperação em R$.
Um número do painel parece errado, sumiu ou briga com outra fonte. O problema está no dado, no conector ou na operação de verdade? Nesta família, a checagem de canal e conector É o diagnóstico principal.
Congelar a evidência e mapear quem já foi contaminado pelo número errado.
Varrer a cadeia de coleta: é aqui que a maioria dos números errados nasce.
Descartar erro de conta: agregação, fuso, atraso e reconciliação por amostra.
Decidir se o número conta uma história técnica ou uma história de negócio.
Nomear a classe com a prova. Aqui a classe dominante é técnica/canal; a exceção relevante é o falso positivo por atraso.
Corrigir, reprocessar, avisar quem leu errado e blindar contra reincidência.
Severidade decide o canal; R$ decide a posição na fila. Este capítulo define os 3 níveis, a precedência entre eles e o orçamento de atenção.
| Nível | Regra de cálculo | Comportamento de canal |
|---|---|---|
| Crítico | Violação de conformidade OU perda ativa acima de limiar_critico_rs_dia(conta) OU cegueira de dado (o Sentinela deixou de enxergar o funil) | Notifica imediato. Fura cooldown. Nunca agrupa. |
| Alto | Fora da banda com significância E impacto projetado ≥ 1 × valor_do_ponto(alavanca, conta) por mês | Topo do HOJE. Sem push fora de horário. |
| Atenção | Desvio persistente abaixo do limiar de R$ OU amostra abaixo do n mínimo da família | Só digest agrupado do período. |
Precedência: conformidade sobrepõe R$ sempre. Um incidente de conformidade de R$ 0 é Crítico; uma perda de margem sem violação nunca fura a fila dele.
Dentro do mesmo nível, o Estrategista ordena por R$ de margem projetada. Nenhum alerta muda de nível por ter R$ alto; ele sobe na fila do próprio nível.
Orçamento de atenção: cada conta tem teto de alertas ativos por dia (parâmetro teto_alertas_dia(conta), a calibrar). Estourado o teto, os de menor R$ descem para o digest.
O valor do ponto (V14) converte qualquer gap em R$ de margem e permite comparar alertas de famílias diferentes na mesma régua. Exemplo do caso validado: R$ 10,5 mil por ponto percentual em negociação→venda. Cada conta carrega o próprio valor do ponto por alavanca no catálogo de parâmetros.
O Sentinela consome o espinhaço de eventos e os parâmetros da conta, e emite um único objeto: o alerta com sua máquina de estados, que os demais módulos do Khal.os consomem. Este capítulo fixa esses contratos em linguagem de negócio.
O que o Sentinela consome:
O que o Sentinela emite: um único objeto, o alerta com o schema de 5 blocos e a máquina de estados do capítulo 2. O log de desfecho faz parte do contrato: consumidor que atualiza estado devolve desfecho. Sem desfecho, a calibração para.
| Consumidor | O que recebe | Contrato |
|---|---|---|
| HOJE | Card do alerta | Severidade decide posição e canal; o card carrega impacto em R$, estado atual e badge de amostra quando houver. |
| Investigador | Deep-link com estado completo | Módulo + aba + filtro + origem + banner vindo do alerta. Quem clica cai na tela do diagnóstico já filtrada no recorte que disparou. |
| ROTINA | Ação criada a partir do alerta | Origem rastreada pelo alerta_id; estado único entre as portas: fechar a ação na ROTINA fecha o ciclo do alerta. |
| Estrategista | Fila de alertas do nível | Dentro do nível de severidade, ordena por R$ de margem projetada. |
| Bibliotecário | Desfechos registrados | Alimentam o catálogo de erros conhecidos e a detecção de reincidência (família F11). |
Estados vazios são contrato de primeira classe. O Sentinela sempre responde uma de três coisas:
Sem esses 3 estados, o usuário não distingue operação saudável de sistema cego. Cegueira de dado é Crítico.
O Sentinela nasce multi-conta: nenhuma regra carrega número absoluto, todo número vive no catálogo de parâmetros da conta. A Hapvida é a conta zero da calibração.
Zero threshold absoluto em regra. A regra diz taxa_etapa < banda_inferior(etapa, conta); vale para qualquer operação. O que muda de conta para conta é o catálogo de parâmetros, nunca o texto da regra.
| Parâmetro | O que define | Origem |
|---|---|---|
| Bandas por etapa e por motion | Banda de normalidade de cada taxa do funil | Histórico da própria conta (mínimo de histórico: ver dependências, cap. 9) |
| Targets | Pacing diário e semanal por etapa | Plano da conta |
| Valor do ponto por alavanca | Conversor gap → R$ de margem | Matemática reversa (V14) sobre dado da conta |
| SLAs | 1ª resposta, intervalos, transbordo | Formato do Arquiteto (referência M1: 5 min de 1ª resposta) |
| Calendário e sazonalidade | Dias úteis, campanhas, picos | Conta |
| Base legal LGPD | Autorização para famílias que leem conversa (F7, F8) | Jurídico da conta |
Conta nova entra em modo sombra: as regras disparam e registram, ninguém é notificado. A sombra constrói as bandas com o mínimo de histórico e mede a precisão que o sistema teria tido. A saída da sombra segue o critério da fase 5 do capítulo 9: precisão de 60% ou mais na janela de calibração.
Hapvida como conta zero: o funil de junho/2026 entra como valor inicial do catálogo. São valores de um único mês, todos marcados a calibrar; banda exige mais histórico.
| Alavanca | Valor inicial (junho/2026) | Status |
|---|---|---|
| A1 · % de leads que chegam na Seller | 26,93% | a calibrar |
| A2 · % handoff | 14,36% | a calibrar |
| A3 · % qualificação | 5,10% | a calibrar |
| A4 · % conversão | 35,51% | a calibrar |
| A5 · ticket médio | R$ 330 | a calibrar |
Receita Khal por venda na conta zero: R$ 82,50 (25% do ticket, junho/2026). É o insumo do valor do ponto por alavanca da Hapvida, a calcular sobre esses valores iniciais.
Loop de recalibração: precisão de uma família abaixo de 60% por 2 semanas seguidas força revisão de limiar. A evidência é o log de desfecho: cada alerta com ação real ou falso positivo registrado.
Este capítulo define quem altera o quê, o que é bloqueante e o mecanismo acoplado a cada risco conhecido.
Quem altera parâmetro: o head da conta com o FDE responsável pela família. Toda mudança registra autor, motivo e data; o catálogo de parâmetros tem changelog como qualquer código.
LGPD é pré-requisito bloqueante: as famílias que leem conversa (F7 e F8) não ligam sem base legal registrada na conta (aviso ao time, finalidade, política de retenção). É o mesmo pré-requisito do motor de análise contínua.
Alerta nunca vira mudança direta no comportamento do agente. Toda mudança derivada de alerta entra pela régua de A/B da casa: 5% → 10% → 30% → 50% → padrão, com critério de sucesso pré-registrado e encerramento se perder em qualquer degrau. O alerta abre a hipótese; o A/B decide.
| Risco | Mecanismo acoplado |
|---|---|
| Fadiga de alerta | Orçamento de atenção + cooldown + digest + precisão por família com recalibração forçada abaixo de 60%. |
| Causa candidata errada minando confiança | Rótulo de hipótese sempre visível + taxa de acerto histórica da família exibida no card + supressão da causa sob amostra pequena. |
| Multi-conta com bandas diferentes | Parâmetro por conta + modo sombra até a banda aquecer com o mínimo de histórico. |
| Alerta virando mudança direta no agente | Proibido por governança; o único caminho é a régua de A/B com canary e critério pré-registrado. |
Implementação em 5 fases, cada uma com critério de aceite verificável. Dependência externa carrega dono; onde não existe data real, o prazo é PLACEHOLDER.
| Fase | Escopo | Critério de aceite |
|---|---|---|
| 1 · Fundação | F10 (saúde do dado) + espinhaço evento_lead + catálogo de parâmetros de conta | Os 5 alertas de F10 disparando em conta sombra. |
| 2 · Funil e tempo | F1-F6 em modo sombra na conta zero | 2 semanas de sombra com log de desfecho preenchido e primeira calibração de limiares executada. |
| 3 · Conduta | F7-F8, somente após base legal LGPD registrada na conta | Incidente de conformidade notificado em tempo real. |
| 4 · Pagamento e reincidência | F9 após o evento de pagamento do roadmap de agosto; F11 após o catálogo de erros conhecidos da semana 3 | F9 disparando sobre evento de pagamento real; F11 reconhecendo reincidência a partir do catálogo. |
| 5 · Ligar notificação real | Sair do modo sombra na conta zero | Precisão ≥ 60% na janela de calibração. |
Dependências externas com dono. Sem elas, as fases correspondentes não abrem:
| Dependência | Dono | Prazo |
|---|---|---|
| Definição operacional de handoff e de qualificado | Paulo + conta | antes de 03/08/2026 (compromisso do plano de alavancas) |
| Bandas por etapa (dado histórico; mínimo de histórico: PLACEHOLDER) | PLACEHOLDER | prazo: PLACEHOLDER |
| Base legal LGPD para F7-F8 | Paulo + jurídico | prazo: PLACEHOLDER |
| Evento de pagamento | roadmap de agosto (dono do item: PLACEHOLDER) | agosto/2026 (roadmap) |
| Catálogo de erros conhecidos | PLACEHOLDER | semana 3 do roadmap de agosto (17-23/08/2026) |
Data só entra quando existe no roadmap real. O resto fica PLACEHOLDER até o dono definir.