analise-officers

Model card — Lead Scorer

Data de referência (“hoje”): 31/12/2017. As tabelas entre marcadores AUTO são geradas por python -m scorer.docs a partir de solution/data/processed/backtest_metrics.json; os números da prosa são conferidos contra os mesmos arquivos por tests/test_docs_numbers.py. Detalhes e provas: SCORING.md, DATA_QUALITY.md e SCOPE.md.

1. Propósito e uso pretendido

Ajudar o vendedor, na segunda de manhã, a decidir onde pôr a próxima hora: quais deals abertos focar, quais reativar e quais limpar do CRM (mais a lista Qualifique, para o Prospecting, que não tem score). O manager usa a mesma tela, filtrada, no 1:1 semanal. Quem responde pelo uso é a Head de RevOps.

O score é uma ordenação de prioridade. Ele não prevê “este deal vai fechar”: ele diz que, entre deals abertos, os do topo concentram mais da receita que costuma ser ganha em seguida.

Correção após revisão do Rafael. A primeira versão do modelo (v1) dava a mesma chance de 0 a 95 dias, o que o Rafael viu na página como vendedor e contradizia o briefing. A versão atual (v2) tem uma chance que cai com a idade desde o primeiro dia e é treinada só com as fotos do mesmo ponto do trimestre. É uma mudança feita depois do backtest, a pedido dele; o histórico está no SCORING, seções 0 e 9.

2. Uso NÃO pretendido

3. Dados e período

4. Desempenho

Receita capturada pelos 20% de deals no topo da ordenação, como fração da receita realmente ganha depois do corte (métrica primária, fixada antes do backtest), para a curva v2 e, ao lado, para a v1:

| | Receita no top 20%: score v2 | score v1 | valor | recência | aleatório | AUC do score v2 | AUC da recência | | :— | —: | —: | —: | —: | —: | —: | —: | | Média dos 4 cortes | 62,5% | 61,1% | 48,1% | 29,7% | 20,0% | 0,66 | 0,70 | | Pior corte (31/07/2017) | 57,4% | 57,9% | 48,7% | 12,8% | 20,1% | 0,63 | 0,58 |

Pior corte = o de menor margem do score v2 sobre o melhor baseline. Critério pré-registrado: PASSOU para a v2 e PASSOU para a v1. A v2 é uma mudança pós-backtest, pedida pelo Rafael depois de revisar a ferramenta.

Leitura honesta:

| Método (deals de até 90 dias, média dos cortes) | AUC | Receita no top 20% | | :— | —: | —: | | Score v2 (curva por faixas) | 0,52 | 52,5% | | Score v1 (platô) | 0,51 | 49,7% | | Ordenar por valor | 0,50 | 49,1% | | Mais recentes primeiro | 0,56 | 23,5% | | Aleatório (referência) | 0,50 | 20,1% |

O score v2 só ordena melhor que o preço no corte de fim de trimestre; a AUC fica perto de um sorteio.

5. Limitações

6. Riscos e mitigação

Risco Como aparece Mitigação
Profecia autorrealizável Deal em Limpe deixa de ser trabalhado e, por isso, nunca ganha, o que “confirma” o score Limpe significa confirmar com o cliente e então encerrar ou atualizar, nunca descartar. O texto do card e o brief dizem isso. A recalibração (seção 7) usa os desfechos novos, inclusive dos deals que foram reativados
Viés contra vendedores Um vendedor com muitos deals velhos parece “pior” e é cobrado por isso O vendedor não entra no score. Há teste de permutação: trocar os vendedores de lugar não muda nenhum score (test_permuting_sales_agent_changes_no_score). Nenhuma tela mostra taxa de vitória por vendedor
Valor estático O valor esperado usa o preço de tabela, não o valor negociado Nos 4.238 ganhos, a razão close_value / preço de tabela tem média 0,996, e a média por produto fica entre 0,985 e 1,004 (DATA_QUALITY, seção 4). Em CRM real, rever com o valor da proposta
Confiar numa ordem que errou na história O Foque de hoje parece mais seguro do que é A interface mostra o modo teste, com o que o score teria dito em datas passadas e o que aconteceu (os resumos seguem os filtros); a ordem dentro do Foque é fraca e isso está nas Limitações
Dado de outro time exposto Qualquer pessoa que abre o arquivo data.js lê a carteira de todos os vendedores Em produção, o dado fora do escopo do usuário nunca chega ao navegador: login com SSO e acesso por linha no banco, descritos em ARQUITETURA_PRODUCAO.md. Nesta versão, o aviso está na tela de entrada, no “Como funciona” e no README
Contagem por vendedor lida como desempenho O mapa do time mostra vivos, esfriando e zumbis por vendedor, e alguém usa isso para ranquear pessoas O mapa é rotulado “higiene de carteira, não desempenho”, não traz taxa de vitória nem ranking, e a ordem padrão é alfabética
Corrigir o modelo olhando o teste A curva v2 foi desenhada depois de ver o backtest, e passar no critério não prova que generalize O critério foi mantido e reportado para as duas curvas, a mudança está declarada como pós-backtest, e o próximo teste honesto é com cortes novos (seção 7)

7. Quando recalibrar

Recalibrar (rodar python -m scorer.validate e python -m scorer.build com a base nova) em qualquer um destes casos:

  1. A cada trimestre, porque o modelo aprende com fotos mensais e o padrão do trimestre pesa: a cada fim de trimestre entra uma foto nova da fase de fim de trimestre (SCORING, seção 0).
  2. Quando a taxa de ganho em 90 dias de alguma faixa de idade se mover mais que X pp em relação à que o modelo usa. X é um parâmetro documentado:

X = 10 pp (config.RECALIBRATION_SHIFT_PP). Teste de bom senso no backtest: entre as 24 faixas de idade com pelo menos 100 deals (corte x faixa), 8 teriam acendido o alerta, isto é, a chance do modelo ficou a mais de 10 pp da taxa de ganho em 90 dias observada.

  1. Ao migrar para um CRM real com histórico de estágios. O modelo atual só vê a data de engajamento e o desfecho; com o histórico de estágios dá para medir tempo parado por etapa, que é uma idade melhor do que “dias desde o engajamento”. O teto de 138 dias e a regra Q/Q+1 devem desaparecer ou mudar, e o critério pré-registrado precisa ser rodado de novo, com cortes novos.

8. Governança do desenvolvimento

O modelo foi construído com agentes de IA, sob controles definidos antes da execução:

Mudanças no modelo seguem a mesma regra: novo backtest com critério fixado antes, nunca ajuste depois de ver o resultado. A troca para a curva v2 não seguiu a regra: foi feita depois do backtest, a pedido do Rafael, depois de ele usar a ferramenta como vendedor; está declarada como mudança pós-backtest.

9. Dono e revisão