A maioria das soluções de automação para WhatsApp funciona por assinatura: você paga todo mês enquanto usar. Faz sentido para quem não tem equipe técnica e precisa de algo funcionando rápido. Mas para quem pode investir no desenvolvimento inicial, existe uma alternativa — e o custo de longo prazo é completamente diferente.
Este post explica a arquitetura de um sistema de atendimento automatizado no WhatsApp construído do zero, sem dependência de plataforma SaaS.
A arquitetura em três camadas
Um sistema de atendimento WhatsApp próprio tem três componentes principais:
1. Camada de conexão (Evolution API)
A Evolution API é a ponte entre o seu número de WhatsApp e o seu sistema. Ela expõe uma API REST que você chama para enviar mensagens e recebe webhooks quando mensagens chegam. Você hospeda em um servidor próprio.
WhatsApp ↔ Evolution API (VPS) ↔ Seu sistema
2. Camada de lógica (Node.js ou Python)
Quando uma mensagem chega via webhook, o seu servidor precisa decidir o que fazer. Isso pode ser:
- Consultar um banco de dados
- Chamar um LLM com o contexto da conversa
- Executar uma regra de negócio
- Enviar de volta a resposta
3. Camada de dados (PostgreSQL)
O banco de dados guarda o histórico de conversas, os dados dos clientes e qualquer informação que o agente precisa consultar em tempo real. É o que separa um agente que "sabe" sobre o cliente de um que começa do zero a cada mensagem.
O stack mínimo para funcionar
Para uma empresa de pequeno a médio porte, esse stack é suficiente:
├── VPS Linux (Ubuntu 22.04)
│ ├── Evolution API (Docker ou PM2)
│ ├── Node.js + TypeScript (sua lógica)
│ └── PostgreSQL (banco de dados)
├── Nginx (reverse proxy + SSL)
└── OpenAI / Anthropic API (LLM, pago por uso)
Custo mensal estimado:
- VPS 4GB RAM: R$80–150/mês (DigitalOcean, Vultr, ou VPS brasileiro)
- LLM (OpenAI GPT-4o): R$0,30–3,00 por 1.000 mensagens processadas
- Total para volume médio: R$100–200/mês
Compare com R$500–2.000/mês de uma plataforma SaaS fazendo o mesmo volume.
Como o fluxo de uma mensagem funciona
Quando um cliente manda uma mensagem para o seu WhatsApp:
- A mensagem chega na Evolution API
- Evolution API dispara um webhook POST para o seu servidor
- Seu servidor recebe o payload com o conteúdo da mensagem e o número do remetente
- Busca no banco o histórico de conversa desse número
- Monta o contexto (histórico + dados do cliente + instruções do negócio)
- Envia para o LLM e recebe a resposta
- Chama a Evolution API para enviar a resposta de volta
- Salva a mensagem e a resposta no histórico
Todo esse ciclo, bem implementado, leva menos de 3 segundos.
O sistema de instruções (prompt do agente)
A qualidade do agente depende principalmente das instruções que você passa para o LLM. Um exemplo simplificado:
Você é o atendente virtual da GoldGás, especializada em instalação e conversão de sistemas GNV para automóveis.
CONTEXTO DO CLIENTE:
Nome: {nome}
Veículo cadastrado: {veiculo}
Último agendamento: {ultimo_agendamento}
HISTÓRICO DESTA CONVERSA:
{historico}
REGRAS:
- Só agende serviços para veículos cadastrados. Se o cliente mencionar outro veículo, colete os dados antes.
- Verifique a disponibilidade da agenda antes de confirmar qualquer horário (use a função check_agenda).
- Não ofereça desconto sem autorização explícita no sistema.
- Se não souber responder algo, diga que vai verificar e acione o atendente humano.
O detalhe importante: o LLM não tem acesso ao banco de dados por si só. Você precisa buscar as informações relevantes e injetar no contexto antes de chamar o modelo. Isso é conhecido como RAG (Retrieval-Augmented Generation) na forma mais simples.
Function calling: quando o agente precisa agir
Além de responder, o agente pode executar ações. Com function calling, você define funções que o LLM pode "chamar" e você implementa no servidor:
const functions = [
{
name: "check_stock",
description: "Verifica disponibilidade de produto em estoque",
parameters: {
type: "object",
properties: {
product_id: { type: "string" },
},
},
},
{
name: "create_order",
description: "Cria um novo pedido para o cliente",
parameters: {
type: "object",
properties: {
product_id: { type: "string" },
quantity: { type: "number" },
},
},
},
];
Quando o LLM decide chamar check_stock, o seu servidor executa a consulta no banco e devolve o resultado para o LLM continuar a resposta. O cliente vê uma resposta fluida, mas por baixo houve uma consulta real ao banco de dados.
O que você precisa para construir isso
Opção 1: você tem desenvolvedor interno
Um desenvolvedor Node.js ou Python com experiência em integração de APIs consegue construir um agente básico em 2–4 semanas. O principal aprendizado é a Evolution API e o modelo de conversação com LLM.
Recursos:
- Documentação Evolution API: github.com/EvolutionAPI
- OpenAI Cookbook para function calling
- Exemplos de RAG com PostgreSQL
Opção 2: você contrata desenvolvimento
O escopo de um agente completo (com integração ao banco, function calling e fallback para humano) fica entre R$5.000 e R$12.000 dependendo da complexidade. O código é entregue, você hospeda onde quiser.
Pontos para avaliar em qualquer proposta:
- O código é seu? Ou fica na plataforma do fornecedor?
- Você tem acesso ao banco de dados?
- Quanto custa fazer uma alteração no comportamento do agente depois da entrega?
O que não construir do zero
Nem tudo vale a pena desenvolver internamente. Para envio de campanhas em larga escala (marketing outbound), plataformas com API oficial têm melhor custo-benefício porque gerenciam a aprovação de templates e a conformidade com os termos da Meta.
O desenvolvimento próprio compensa mais para atendimento receptivo, integração com dados internos e fluxos complexos de qualificação e agendamento.
Resumo do que avaliar
| Critério | Plataforma SaaS | Desenvolvimento próprio | |---|---|---| | Custo inicial | Baixo | R$5.000–12.000 | | Custo mensal | R$500–2.000+ | R$100–200 | | Breakeven | — | 6–12 meses | | Integração com dados próprios | Limitada | Total | | Você fica com o código | Não | Sim | | Risco de banimento | Baixo (API oficial) | Médio (Evolution API) |
A decisão depende do horizonte de tempo e do nível de integração que você precisa. Para quem pensa em 2+ anos de operação e tem processo interno com dados relevantes para o atendimento, o desenvolvimento próprio tem retorno claro.