Projeto · Agente de IA

Agente SDR no WhatsApp com RAG no PostgreSQL

Antes de responder, o agente precisava achar o trecho certo no conteúdo da empresa, e o banco não tinha pgvector. Construí em n8n um agente de primeiro atendimento comercial, com 127 nós e 3 agentes de LLM, e coloquei a busca semântica dentro do próprio PostgreSQL. O agente está homologado e ainda não tem volume real de leads.

Cliente
Reduzzi Brasil
Meu papel
Construí
Estado
Homologado, sem volume real de leads
Diagrama: mensagens em fila viram nós de uma rede, e um nó em azul marca o trecho encontrado dentro do banco de dados.

Contexto

Um primeiro atendimento comercial pelo WhatsApp

O projeto era um agente SDR no WhatsApp para a Reduzzi Brasil. SDR é quem faz o primeiro atendimento comercial, antes do vendedor. O agente responderia com base no conteúdo curado da empresa e marcaria a reunião na agenda, em rodízio.

Eu era o único desenvolvedor da casa.

O problema

Responder certo pedia uma busca que o banco não tinha

Para não responder errado, o agente tinha de consultar o conteúdo da empresa e achar o trecho certo. Isso pede busca semântica, a busca por significado. O PostgreSQL que já estava em uso não tinha pgvector, a extensão que faz esse tipo de busca. Subir um serviço novo só para isso resolveria, mas seria mais uma peça para manter.

Meu papel

Construí

Decidi não subir serviço nenhum. Escrevi a similaridade de cosseno em plpgsql, dentro do próprio banco. Também montei o fluxo, escrevi a engenharia de prompt e deixei a memória no mesmo PostgreSQL. Trabalhei sozinho, sem outro engenheiro revisando.

A virada

A busca foi para dentro do banco

  • Escrevi a similaridade de cosseno em plpgsql, dentro do próprio PostgreSQL. Nenhum serviço novo entrou.
  • A busca roda sobre 109 blocos de conteúdo curado.
  • Montei o fluxo em n8n self-hosted, com 127 nós e 3 agentes de LLM.
  • Deixei a memória de cada conversa no PostgreSQL. O fluxo também usa Redis.
  • O agente trata mensagem de áudio.
  • Liguei a agenda no Cal.com, com rodízio.
  • Passei o agente por 4 rodadas de QA e 3 auditorias antes de dar por homologado.

Resultado

Pronto, testado e homologado

  • 127 nósNo fluxo do agente, em n8n.
  • 3 agentes de LLMDentro do mesmo fluxo.
  • 109 blocosDe conteúdo curado, consultados por similaridade de cosseno em plpgsql.
  • 4 rodadas de QA e 3 auditoriasAntes de eu dar o agente por homologado.

A busca semântica ficou no mesmo banco que já guardava a memória do agente. Nenhum serviço novo entrou por causa dela.

Limites

O que este projeto não prova

  • O agente está homologado. A diretoria pausou o go-live, então ele não tem volume real de leads.
  • Não tenho número de conversão, de reunião marcada nem de receita. Este projeto prova arquitetura e construção. Não prova resultado comercial.
  • A busca roda sobre 109 blocos. Este projeto não diz nada sobre bases muito maiores.
  • Trabalhei sozinho. Nenhum outro engenheiro revisou o código.

Stack

  • n8n self-hosted
  • Agentes de LLM
  • RAG
  • Engenharia de prompt
  • PostgreSQL
  • plpgsql
  • Redis
  • Cal.com