Como eu construí uma auditoria automatizada de atendimentos com IA (e estou disponibilizando o código)
Fala gente, tudo bem? Me chamo Thiago Fagundes e hoje resolvi compartilhar com vocês um projeto pessoal que vem me ajudando bastante (e que talvez possa ser útil a vocês).
Um pouco de contexto
Primeiro, um pouco de contexto sobre quem eu sou. Eu sou gerente de áreas de atendimento em uma grande empresa de SaaS. Não sou desenvolvedor, mas sou entusiasta de programação e escrevo código, entre idas e vindas, há mais ou menos 13 anos.
A maior parte desse tempo, escrevi código em linguagens matemáticas como MATLAB e R. Uns 4 anos atrás aprendi e comecei a usar Python e, de uns 3 anos para cá, estudei mais sobre desenvolvimento web. Mas ainda, sem nenhuma experiência em ambientes reais.
Eu não trabalho diretamente com desenvolvimento e nem pretendo. Eu gosto de programar exatamente por não ser uma obrigação. Faço por pura diversão. Gosto de pegar um problema e tentar resolver. De forma simples, só para mim.
Isso quer dizer que antes de tudo, meu código não é perfeito. Não é limpo, bonito, não segue boas práticas nem nada. Sinto por isso, eu até tenho interesse em aprender mais sobre isso, mas até o momento eu sou um "leigo" em desenvolvimento de software. Peço desculpas antecipadamente por partes técnicas erradas.
Um pouco sobre o projeto
Atendimento ao cliente, principalmente no WhatsApp, é complicado. É importante garantir a qualidade do atendimento e, portanto, um processo de "auditoria" de atendimento é super importante.
Durante muito tempo no meu time, eu tinha uma analista de qualidade que era responsável por:
- Ler as conversas entre clientes e analistas de Customer Success
- "Auditar" essas conversas, seguindo alguns critérios práticos
- Consolidar os principais motivos de contatos dos clientes e dar uma "nota" ao atendimento do time.
Isso ajudava MUITO nas minhas decisões práticas sobre o atendimento. Mas, devido a uma mudança de estrutura, essa posição deixou de fazer sentido. Então, comecei a pensar em alternativas para isso de forma mais "escalável".
Hoje, meu time de atendimento usa o Hubspot (inclusive no atendimento via WhatsApp) e eu já tenho bastante experiência usando a API deles. Por isso, comecei a dar uma lida na API de conversas e vi que talvez seria possível automatizar esse processo.
O resultado do projeto é um dashboard que me permite acompanhar as performances individuais do time, ver casos em alerta e entender os principais motivos de acionamento por parte dos clientes.

O Dashboard não está bonito, mas para mim é altamente funcional. Eu usei os componentes padrão do Windmill (falarei mais sobre ferramentas adiante) para criar o dashboard e não dediquei nada a "beleza". Além da tela inicial, há uma "aba" de performance individual com insights:

O fluxo de trabalho que resolvi construir
Eu resolvi escrever um código que, uma vez por dia:
- Consultasse as conversas do time no Hubspot no dia anterior
- Tratasse os dados, agregando todas as informações importantes
- Conversa a conversa, pedisse que um modelo de IA:
- Categorizasse os motivos de contato
- Identificasse possíveis riscos e sinalizasse clientes em alerta
- Justificasse o motivo de alerta
- Desse uma nota para o atendimento
- Justificasse a nota
- Retornasse uma base de dados que pudesse ser analisada, visualizada e etc.
Além disso, resolvi criar outro código que, uma vez por semana:
- Analisasse todas as conversas do time nos últimos 7 dias
- De acordo com a análise, fizesse:
- Resumo geral do atendimento da semana anterior
- Sugestões de melhoria para a semana atual
- Insights sobre as performances individuais
E para visualizar disso, eu vou usei o Windmill (uma ferramenta open source), hospedada por mim mesmo, para criar o dashboard que me traga esses dados de forma mais simples para consumir (como as imagens lá em cima)
A "stack" de tecnologias e ferramentas
- API da Hubspot
- Python para o código
- Colab para escrever o código e ir testando (eu amo demais o Colab, por hábito)
- Windmill (ferramenta Open Source para criação de flows, apps e scripts) hospedado numa VM minha na Hostinger (a Hostinger facilita isso bastante, por já ter a opção de comprar uma máquina com o Windmill instalado, pra mim que não sou técnico, foi uma mão na roda. Não sei se é o mais barato ou melhor, mas pra mim valeu a pena)
- API da OpenAI (eu usei também outros fornecedores e funcionou igualmente bem)
- Supabase para armazenar os dados como banco de dados, com apenas duas tabelas:
- Conversas (armazena todas as conversas processadas)
- Relatórios (armazena os relatórios semanais em texto gerados)

Aqui cabe uma melhoria: eu não inseri nenhum tipo de política de RLS. 1. por não dominar e 2. por ser usado só por mim, em ambiente controlado. Mas pretendo.
Código
Este foi o código que eu escrevi. Eu coloquei ele em um Google Colab para facilitar quem quiser testar por aí.
O processo de "subir" isso no Windmill foi simples. Eu criei:
- Um script para rodar as auditorias, com schedule uma vez por dia
- Um script para rodar o relatório semanal, com schedule uma vez por semana
- Um app para visualizar os dados

Scripts:
Script das auditorias
Script do relatório semanal
Caso você queira testar no próprio Colab basta adicionar suas chaves nas variáveis de ambiente.
Na hora de "transferir" pra dentro do Windmill, basta trocar o from google.colab import userdata por import os e os userdata.get por os.environ.get e pronto.
A performance geral até agora: quão "útil" tá a coisa?
Sinceramente, eu tenho gostado bastante das auditorias. Os casos de clientes que foram sinalizados como "alerta vermelho" foram assertivos em maioria e já valem como alerta real para o time. Além disso, eu rodei essa auditoria em mais de um time e vi que as notas de um time eram piores que a outra em média e, de fato, o atendimento era pior num geral.
Então, para mim, já me dá bastante insight de tomada de decisão e controle da melhoria de atendimento. Claro que cabem melhorias, mas já é infinitamente melhor que estar "cego" de como o time está atendendo o cliente.
Melhorias futuras
- Melhorias nos prompts: ainda tem bastante espaço de melhoria no prompt que está indo para a IA. Os meus estão bem simples, mas eu futuramente pretendo orientar que a IA siga uma série de regras para atribuir as notas. Na minha operação eu tinha um formulário de avaliação de atendimento, que pretendo replicar como prompt, para notas mais assertivas.
- Transformar os alertas vermelhos em gatilhos: o meu próximo passo é fazer com que, para cada cliente marcado como alerta vermelho, seja criado um ticket de acompanhamento do cliente no Hubspot, em um pipeline de "clientes em risco". Com isso, vou conseguir medir quantos desses casos de fato eram alertas reais e quantos puderam ser revertidos.
- Captura da "voz do cliente": quero criar um novo prompt que, ao ler as conversas, tente capturar feedbacks dos clientes e classificar como "sugestões", "críticas" ou "elogios". Então, pretendo automatizar o envio desses feedbacks aos times responsáveis. Ex: feedback de produto é enviado ao time de produto.
- Melhorar tratamento de erros: acontecem alguns erros quando a API tenta consultar dados de um agente "Desconhecido" por exemplo. Isso só aparece quando vou observar como o processo rodou, e ele não costuma falhar. Então não me atrapalha em nada praticamente, mas eu acho feio. Então no futuro pretendo melhorar.
- Melhorias de código e segurança: autoexplicativas.
Conclusão
Bom, basicamente é isso. Caso surja alguma dúvida relacionada a qualquer parte do projeto, podem me procurar. Ele tem sido bastante útil na minha operação e espero que seja pra algum de vocês também.
Caso vocês se interessem por atendimento ao cliente e Customer Success, eu escrevo sobre este assunto e a minha vivência em uma Newsletter chamada Operando CS. Eu estou compartilhando por lá também o desenvolvimento de um agente de IA para desenho e gestão de processos de Customer Success que pretendo compartilhar como projeto Open Source no futuro também.
Qualquer sugestão ou crítica é bem-vinda! Mas peguem leve, por favor. Não se esqueçam que sou só um entusiasta. Hahahaha!