O problema
Todo o atendimento acontecia no WhatsApp, e o histórico ficava só lá. Saber quem perguntou sobre o quê, em que mês, e o que ficou combinado exigia rolar centenas de conversas. O dado existia — só não era consultável.
O que construí
- Coleta — a Evolution API expõe as conversas; um script Python lê as mensagens novas desde a última execução.
- Classificação — cada conversa passa pela API da Anthropic, que devolve o estágio do funil e um resumo estruturado.
- Persistência — banco local, com deduplicação por mensagem para que reexecuções não inflem o histórico.
- Agendamento — o Task Scheduler do Windows dispara às 07h30. Ninguém precisa lembrar de rodar.
- Espelho de catálogo — consome a API pública do site e mantém um cache local, então a ficha do cliente já mostra o item sobre o qual ele perguntou.
Decisões técnicas
Simplificação que também resolveu privacidade. A primeira versão passava por um orquestrador de workflows na nuvem. Funcionava, mas era mais uma peça para manter e fazia dado de cliente sair da máquina sem necessidade. Trocar por um script agendado deixou o sistema mais simples e mais privado — a decisão rara em que as duas coisas andam juntas. O orquestrador foi aposentado.
Saída de IA tratada como entrada não confiável. A classificação vem de um modelo, então a resposta é validada contra um conjunto fechado de estágios antes de tocar o banco. Se vier algo fora do esperado, a conversa fica sem classificação em vez de gravar um valor inventado — prefiro campo vazio a dado errado que ninguém vai auditar depois.
Deduplicação na fonte. Reexecutar é normal (falha de rede, máquina desligada). Sem chave de deduplicação por mensagem, cada reexecução duplicaria o histórico.
Como verifiquei
Reexecução sobre o mesmo intervalo para confirmar que nada duplica; conferência manual da classificação de uma amostra de conversas contra o que eu sabia do caso real; e verificação de que o espelho do catálogo continua batendo com a API depois de o site mudar.