Contexto
A consultoria presta suporte de TI terceirizado a várias empresas. O assistente de atendimento rodava numa plataforma low-code de terceiros que já tinha obrigado a duas migrações em menos de um ano. Todo o trabalho deste case roda no laboratório da consultoria, como prova de conceito.
Problema
- A categorização por palavra-chave cobria uma fração do catálogo de categorias e mandava o resto para triagem manual.
- Em linguagem natural, número de chamado se confunde com outros números da conversa.
- Lógica de negócio dentro da ferramenta do fornecedor se perde a cada migração.
- O canal de mensageria não guarda o estado da conversa entre turnos.
O que fiz
- Levei toda a lógica para SDKs próprios em TypeScript, um por cliente, com banco e credenciais próprios na conexão.
- Classificação de categoria com LLM sobre o catálogo inteiro, com fallback determinístico, e reconhecimento de número de chamado por formato, testado contra uma bateria de casos-armadilha.
- Continuidade da conversa dentro do SDK, num grupo de workers atrás de um único router, com a credencial de cada bot escolhida pelo destino da mensagem.
- Sobre a mesma base: portal de automações de RH integrado ao ERP de RH, agente N3 que consulta o Zabbix e integração com RPA.
- Teste pelo canal real (Teams) antes de cada entrega e suíte que roda sem credencial real.
Resultado
A lógica deixou de depender do fornecedor low-code: o transporte mudou e a lógica ficou intacta. Os agentes atendem N1 a N3 no laboratório, com um SDK isolado por cliente.