← Todos os cases

Produção · empresa de educação

Agente de vendas e matrículas

Desenvolvimento de agente conversacional em LangGraph com roteador, três subagentes e ferramentas integradas a sistemas internos: atende, tira dúvidas sobre cursos e conduz a matrícula, 24/7.

Papel
Tech lead · arquitetura e desenvolvimento
Status
Em produção, 24/7
Stack
  • Python
  • FastAPI
  • LangGraph
  • LangChain
  • Qdrant
  • Redis
  • MongoDB
  • Celery
  • Langfuse
  • Cloud Run
aluno“quanto custa? quais disciplinas?”planilhas+ documentosfragmentado, formatos diferentesv1: chunksestruturadosv2: entidade“curso”valoresdisciplinasinfo acadêmicaRedis (STM)MongoDB (LTM)sessão expirou →resumo LTM voltaroteadoratendimentomatrículahandoff p/ consultortoolsQdrant híbrido+ rerank70–120 vendas/diaoperando 24/7

Problema

Vender um curso exige responder com precisão sobre valores, disciplinas, polos e regras de elegibilidade — informações que variam por curso e por cliente. Um agente que erra o preço ou a grade perde a venda; um que responde de forma genérica não converte.

Dados disponíveis

O ponto de partida eram documentos e planilhas fragmentados: regulamentos, FAQs, matrizes curriculares e catálogos com a mesma informação espalhada em formatos diferentes. Antes de qualquer prompt, o trabalho foi de curadoria — entender cada fonte, relacionar as informações e decidir qual era a verdade.

Decisões de arquitetura

Curadoria em duas etapas

Primeiro, organização dos documentos em chunks estruturados, com scripts de ingestão para documentos e planilhas. Depois, migração para uma plataforma de gestão de dados em que valores, disciplinas e informações acadêmicas se vinculam à entidade pai “curso”.

Roteamento explícito

Um roteador com saída estruturada decide o caminho de cada mensagem: atendimento, matrícula ou handoff para um consultor humano. Matrículas já iniciadas seguem por um desvio determinístico, sem depender do modelo.

Busca híbrida com cache

Vetores densos e esparsos no Qdrant, fusão de resultados e reranking, com filtros por categoria e curso. Um cache semântico com TTL evita repetir buscas e reranking para perguntas equivalentes.

Memória que sobrevive à sessão

Redis guarda a sessão ativa (STM); MongoDB guarda o histórico durável. Quando a sessão expira, o contexto é reconstruído a partir do histórico e um modelo mais barato gera o resumo de longo prazo (LTM) usado na conversa seguinte.

Implementação

  • Grafo em LangGraph: roteador → subagentes de atendimento, matrícula e notificação → resposta final.
  • Ferramentas para base de conhecimento, polos, catálogo e elegibilidade de cursos, gravação e checagem dos dados de matrícula e handoff para consultor.
  • Guardrails que validam regras de negócio e comparam valores citados na resposta com o que as ferramentas retornaram.
  • Buffer de mensagens, deduplicação e bloqueio de spam por janela de tempo; tarefas de remarketing em Celery, fora do fluxo da conversa.
  • Golden set com LLM como juiz, rastreamento no Langfuse e registro de tokens e custo por conversa.

Resultado

  • 70–120vendas por dia

O agente opera 24/7 e fecha de 70 a 120 vendas por dia.

Limitações e aprendizados

  • A evolução de chunks para a entidade “curso” aparece aqui como decisão de arquitetura, não publico uma métrica isolada de ganho entre as duas versões.
  • Integrações, dados de clientes e prompts ficam de fora por confidencialidade.
Próximo caseCorreção de atividades em escala →