Todos os artigosPublicado a

Apoio ao cliente na 360Películas: uma só caixa de entrada e agentes de IA com rédea curta

Conversas de WhatsApp esquecidas durante dias levaram-me ao Chatwoot como caixa única, à loja como cérebro do bot e a agentes do Rakazo que propõem antes de agir.

Ilustração: numa secretária, um portátil com a caixa de entrada única, um telemóvel com uma conversa e um braço robótico a arrumar as mensagens, tudo ligado por rastos de luz.
Ilustração: numa secretária, um portátil com a caixa de entrada única, um telemóvel com uma conversa e um braço robótico a arrumar as mensagens, tudo ligado por rastos de luz.

A 360Películas, a minha loja online de películas pré-cortadas para vidros de automóveis, recebe perguntas pelo WhatsApp, por email e pelo Instagram. Durante meses, o apoio ao cliente assentou num agente de IA ligado diretamente ao WhatsApp e num punhado de ferramentas avulsas. Com o volume de hoje, deixou de chegar.

Neste outono comecei a montar outra coisa, em três peças: um backoffice novo na aplicação da loja, o Chatwoot como caixa de entrada única e uma plataforma de agentes, o Rakazo, para o trabalho de fundo. Ainda está em curso. Este texto conta o que mudou, as regras que pus à volta dos agentes, o que custou e o que aprendi pelo caminho.

Antes: um bom agente sem caixa de entrada

O agente de WhatsApp da loja passou por vários modelos, primeiro com o Grok e depois com outros fornecedores, e respondia bem ao que sabia: preços, estado das encomendas, tracking. O problema não estava nas respostas que dava. Estava em tudo à volta.

  • Conversas esquecidas. Quando uma conversa precisava de uma pessoa, podia ficar vários dias sem resposta. Não havia uma caixa de entrada organizada nem uma forma de ver, de relance, quem estava à espera e há quanto tempo.
  • Sem dono claro. Os tickets existiam, mas só para o WhatsApp e só depois de o agente passar a conversa. Não havia ninguém claramente de serviço a vigiá-los nem uma vista de há quanto tempo cada cliente esperava. Quando todos podem responder, muitas vezes ninguém responde.
  • Canais espalhados. O email e o Instagram viviam noutros sítios, cada um com o seu histórico. O mesmo cliente podia escrever pelos três e ninguém juntava as peças.
  • Tom e factos. Algumas mensagens automáticas tratavam o cliente por «tu», que não é o tom da loja. E o agente às vezes dizia coisas erradas, como que só vendíamos kits completos, quando o vidro traseiro se vende sozinho a partir de 89 €.

Nada disto se resolve com um modelo melhor. É um problema de organização, e a organização tinha de existir antes de pôr mais IA em cima.

Três peças, uma função cada

A aplicação da loja guarda os dados e decide. O Chatwoot é onde as conversas vivem. Os agentes do Rakazo fazem o trabalho de fundo, e só tocam na loja através da aplicação, nunca diretamente na base de dados.

Diagrama: o WhatsApp, o email e o Instagram chegam ao Chatwoot; o Chatwoot fala com a aplicação da 360Películas, que responde como Agent Bot; os agentes do Rakazo ligam-se à aplicação por um servidor MCP; o dono aprova as propostas.
A arquitetura nova. A aplicação da loja está no centro: é a única peça que mexe em encomendas e dinheiro.
Diagrama: o WhatsApp, o email e o Instagram chegam ao Chatwoot; o Chatwoot fala com a aplicação da 360Películas, que responde como Agent Bot; os agentes do Rakazo ligam-se à aplicação por um servidor MCP; o dono aprova as propostas.

A arquitetura nova. A aplicação da loja está no centro: é a única peça que mexe em encomendas e dinheiro.

O backoffice: onde estão os factos

Noutro texto contei como as encomendas saíram do Notion e o Filament deu lugar a um backoffice à medida. Foi a base para tudo o resto: um agente só responde bem sobre uma encomenda se essa encomenda estiver num sítio com regras. Desde então o backoffice ganhou o que o apoio ao cliente precisa.

  • Encomendas, tracking e saldo do fornecedor, agora com créditos do fornecedor registados como movimentos próprios.
  • Reembolsos e propostas. Uma ação que mexe em dinheiro ou numa encomenda pode começar como proposta e só é executada depois de aprovada.
  • Registo de comunicações. Cada email, mensagem e notificação enviada a um cliente, num só sítio.
  • Histórico com antes e depois. Cada alteração a uma encomenda guarda o valor antigo e o novo, como «Estado: Enviado → Entregue», e quem a fez.
  • Encomendas devolvidas, com um estado próprio, «Devolvida», em vez de uma nota perdida num comentário.
  • Uma página para problemas de tracking, para ver num sítio as encomendas cujo envio precisa de atenção.
  • Notificações em espera. As notificações automáticas ficam retidas 30 minutos antes de saírem, para poderem ser revistas. Mais abaixo explico porquê.
Maqueta do histórico de uma encomenda no backoffice, com linhas como Estado: Enviado para Entregue, cada uma com a hora e quem fez a alteração.
Maqueta com dados fictícios: o histórico de uma encomenda, com o valor antigo e o novo.
Maqueta do histórico de uma encomenda no backoffice, com linhas como Estado: Enviado para Entregue, cada uma com a hora e quem fez a alteração.

Maqueta com dados fictícios: o histórico de uma encomenda, com o valor antigo e o novo.

Maqueta da página Notificações em espera, com emails automáticos retidos e o tempo que falta até cada um sair.
Maqueta com dados fictícios: as notificações automáticas esperam 30 minutos antes de sair.
Maqueta da página Notificações em espera, com emails automáticos retidos e o tempo que falta até cada um sair.

Maqueta com dados fictícios: as notificações automáticas esperam 30 minutos antes de sair.

O Chatwoot: uma só caixa de entrada

O Chatwoot é uma plataforma de apoio ao cliente de código aberto. Alojo-o num servidor meu, e é agora a caixa de entrada única para o WhatsApp, o email e o Instagram. O WhatsApp chega lá por uma ponte a partir da API de WhatsApp que a loja já usava, o WhatsMiau. Cada conversa tem estado, responsável e prioridade, e qualquer pessoa da equipa vê de relance o que está por responder.

Captura de ecrã de demonstração do Chatwoot: lista de conversas de vários canais à esquerda, a conversa aberta ao centro e os dados do contacto à direita.
O ecrã de conversas do Chatwoot, com os dados de demonstração do próprio projeto. Imagem do repositório do Chatwoot, licença MIT.
Captura de ecrã de demonstração do Chatwoot: lista de conversas de vários canais à esquerda, a conversa aberta ao centro e os dados do contacto à direita.

O ecrã de conversas do Chatwoot, com os dados de demonstração do próprio projeto. Imagem do repositório do Chatwoot, licença MIT.

O Chatwoot é a interface. O cérebro continua a ser a aplicação da loja: o Chatwoot entrega cada mensagem nova a um Agent Bot, que é a própria aplicação, e é ela que decide o que fazer.

  • Ferramentas, não memória. Para responder, o bot consulta o estado da encomenda, o tracking, o catálogo e os preços, e a base de conhecimento.
  • Passagem com nota. Quando passa a conversa a uma pessoa, deixa uma nota privada com o que já apurou, para quem pega não ter de ler tudo desde o início.
  • Horas de silêncio. O que for escrito para um cliente durante a noite espera até às 09:00.
  • Prioridade automática. A classificação que o bot faz da conversa define a prioridade. Só a sobe, nunca a desce, e deixa de lhe mexer assim que uma pessoa a altera.
  • Um cliente, vários canais. O mesmo cliente no WhatsApp, no email e no Instagram fica ligado a um só contacto, com o histórico junto.

Notas «@bot»

É a peça de que mais gosto. Numa nota privada, que o cliente não vê, a equipa pode dar uma instrução ao bot. Um exemplo real:

nota privada
@Bot 360p vai buscar a fatura do fornecedor e manda para a ups diretamente

O bot vai buscar a fatura do fornecedor ao nosso sistema, envia-a por email à transportadora numa conversa separada, que o cliente nunca vê, e diz ao cliente apenas que o assunto está a ser tratado. Uma frase numa nota substitui descarregar um documento, escrever um email e voltar à conversa para avisar o cliente.

Maqueta de uma conversa no Chatwoot: a cliente pergunta pela encomenda retida na alfândega, a equipa escreve uma nota privada para o bot, o bot confirma na nota que enviou a fatura à transportadora e responde à cliente que o assunto está a ser tratado.
Maqueta com dados fictícios: uma nota «@bot» e o que o cliente vê a seguir.
Maqueta de uma conversa no Chatwoot: a cliente pergunta pela encomenda retida na alfândega, a equipa escreve uma nota privada para o bot, o bot confirma na nota que enviou a fatura à transportadora e responde à cliente que o assunto está a ser tratado.

Maqueta com dados fictícios: uma nota «@bot» e o que o cliente vê a seguir.

O Rakazo: agentes para o trabalho de fundo

O Rakazo é uma plataforma de agentes de código aberto, criada por elie222, que também alojo num servidor meu. Cada agente tem instruções, ferramentas, rotinas e, quando precisa, um computador com browser. Hoje há três tipos:

  • O «CEO». Orquestra o apoio e as operações três vezes por dia: percorre as conversas, propõe reembolsos, substituições e respostas para aprovação, e volta ao que ficou pendente.
  • Ops Fornecedor. Fala com o fornecedor através de um browser, como uma pessoa faria.
  • Agentes de apoio por canal, para o email, o Instagram e o WhatsApp.
Captura de ecrã de demonstração do Rakazo: uma lista de agentes à esquerda e, ao lado, a conversa com um deles, que resume o trabalho feito numa caixa de correio.
A interface do Rakazo, com os dados de demonstração do próprio projeto. Imagem do repositório do Rakazo, licença Apache 2.0, recortada.
Captura de ecrã de demonstração do Rakazo: uma lista de agentes à esquerda e, ao lado, a conversa com um deles, que resume o trabalho feito numa caixa de correio.

A interface do Rakazo, com os dados de demonstração do próprio projeto. Imagem do repositório do Rakazo, licença Apache 2.0, recortada.

Um servidor MCP em vez de um robô a clicar

Passar os agentes para um servidor meu obrigou-me a pensar em eficiência. O caminho óbvio era um «bot mestre» a clicar no backoffice através de um browser, como uma pessoa faria. Funciona, mas é lento e caro: cada ecrã lido custa tokens e tempo, e tudo depende de o ecrã não mudar.

Em vez disso, fiz um servidor MCP à medida do sistema. Os agentes falam diretamente com a aplicação da loja, por ferramentas com âmbito limitado, guardas e registo de auditoria. É mais rápido, mais barato e mais seguro. O browser ficou só para onde não há alternativa, como a conversa com o fornecedor.

O servidor MCP é reservado à equipa, com um token por agente e acessos limitados ao que cada um precisa. As ferramentas são poucas e genéricas:

  • Leitura de encomendas, conversas e tracking, e pesquisa na base de conhecimento.
  • Propor uma alteração. Nada acontece sem aprovação. Quando aprovo, a ação é executada: a resposta segue para o cliente ou a substituição é criada.
  • Enviar uma mensagem de apoio, com guardas no servidor: respeita as horas de silêncio, não fala de dinheiro a não ser que um reembolso tenha sido mesmo executado no backoffice, nunca trata o cliente por «tu» e não envia mais de três mensagens por cliente por dia.

Há uma razão prática para serem poucas: o Rakazo só mostra diretamente até 20 ferramentas por servidor. Pareceu uma limitação e acabou por ser um bom desenho. Em vez de uma ferramenta por cada caso, há um conjunto pequeno que serve para quase tudo, e as regras importantes vivem no servidor, não nas instruções de cada agente.

Maqueta de uma proposta no backoffice: o agente CEO propõe uma película de substituição para uma encomenda, com o motivo e a mensagem para a cliente, e os botões Aprovar e Rejeitar.
Maqueta com dados fictícios: uma proposta de um agente à espera de aprovação.
Maqueta de uma proposta no backoffice: o agente CEO propõe uma película de substituição para uma encomenda, com o motivo e a mensagem para a cliente, e os botões Aprovar e Rejeitar.

Maqueta com dados fictícios: uma proposta de um agente à espera de aprovação.

As guardas

Agentes com acesso a clientes e a dinheiro precisam de limites que não dependam do que está escrito nas instruções.

  • Aprovação antes de mexer em dinheiro. Reembolsos e substituições são propostas. Quem aprova é uma pessoa.
  • Tudo auditado. Cada ação de um agente fica registada: quem, o quê e quando.
  • Custos com teto. Uma vez, uma execução num browser descontrolou-se e custou cerca de 48 dólares. Hoje as rotinas correm três vezes por dia, há um alerta acima de 4 dólares por dia ou de 1 dólar por execução, e cada agente tem um número máximo de ações no ecrã por execução.
  • Travões. Retenções de segurança e interruptores para desligar cada automatismo sem mexer no código.
  • Notificações em espera. Uma reverificação de envios antigos mandou a clientes emails de «atualização do envio» sobre encomendas que já não tinham nada de novo. Desde então, todas as notificações automáticas esperam 30 minutos, numa página onde a equipa as pode rever antes de saírem.
  • Dados pessoais fora das instruções. Nenhum dado de cliente entra nas instruções dos agentes, e os registos de auditoria guardam-se com os dados pessoais tapados.

O que custou: a IA não resolveu tudo

Seria fácil contar isto como se a IA tivesse feito o trabalho. Não fez. Acelerou sobretudo a escrita de código. Se ainda estou a falar disto é porque há sempre alguma coisa a afinar, e só com horas investidas se passa pela maioria dos casos reais e se deixa tudo mesmo pronto para produção.

  • Tempo. Escolhi dois dias calmos e fui a fundo. Foi o arranque, não o fim: a afinação continua.
  • Uso de IA. Pôr tudo a funcionar bem teve um custo grande em IA, tanto a programar como nos próprios agentes.
  • Remendos em aplicações que já funcionam. O Chatwoot é bom, mas não nasceu para o meu sistema. Precisou de uma imagem Docker própria para encaixar na loja e no WhatsMiau, a ponte para o WhatsApp.
  • Mais uma máquina. Montei uma VPS nova só para alojar isto: o Chatwoot, o Rakazo e os agentes. É mais um servidor para manter e atualizar.

Para mim valeu a pena, porque o problema de base era real. Mas convém entrar nisto a saber que a IA encurta o caminho, não o elimina.

O que aprendi

  • Organização antes de inteligência. As conversas esquecidas não eram culpa do modelo. Eram falta de uma caixa de entrada, de um dono claro e de uma vista do tempo de espera.
  • As instruções orientam, o servidor garante. Não tratar por «tu», não falar de dinheiro sem reembolso, não escrever de madrugada: tudo isto está no código da ferramenta, não só no prompt.
  • Aprovar é mais rápido do que escrever. O meu trabalho passou de redigir respostas para ler propostas e carregar em aprovar, ou corrigir.
  • Um bot tem de saber parar. Passa a conversa com uma nota, deixa a prioridade quando uma pessoa lhe mexe e tem um limite de mensagens por dia.
  • Poucas ferramentas genéricas envelhecem melhor do que muitas específicas.
  • Agentes num browser gastam de formas imprevisíveis. Os limites de custo têm de existir antes da primeira rotina, não depois da primeira fatura.

Onde está

É cedo para números, e não os vou inventar. O que já se nota: nenhuma conversa fica esquecida durante dias, há uma só caixa de entrada para os três canais, eu aprovo em vez de escrever tudo, e os bots sabem quando parar.

Entretanto, já ficou feito:

  • Um painel da loja dentro do Chatwoot. Com as Dashboard Apps do Chatwoot, a encomenda, o envio e as mensagens agendadas aparecem ao lado da conversa, sem mudar de separador.
  • OAuth no servidor MCP. O mesmo servidor liga-se como conector no ChatGPT e no Claude, com as mesmas ferramentas e as mesmas guardas.

O resto é afinação: cada caso novo que aparece passa a ser uma regra ou uma guarda a mais.

Se o apoio ao cliente do seu negócio está espalhado entre WhatsApp, email e redes sociais, e quer juntar tudo com automatismos que sabem quando parar, pode falar comigo.

Precisa de um site que a sua equipa atualize sem ligar a um programador?

Começar um projeto