← Todos os projetos
03Produto LinkDev · 2026

AtendeLink.

Atendimento pelo WhatsApp com várias pessoas no mesmo número e um agente de IA que segue o fluxo desenhado pela empresa.

WhatsApp multiatendenteRAG com pgvectorFlow builder com IA
Flow builder do AtendeLink com o bloco Agente IA ligado às saídas de transferir e encerrar
Lista de atendimentos do AtendeLink no celular

O problema

Processo manual

Pequenas empresas atendem pelo WhatsApp com várias pessoas dividindo o mesmo número. Elas precisam saber quem está com cada cliente, automatizar o começo da conversa e vender pelo próprio chat, sem perder o controle do que o robô responde. O AtendeLink não é omnichannel, por escolha: é WhatsApp mais chat interno, integrado ao ERP Web da LinkDev.

O que construí

O AtendeLink é um produto da LinkDev, onde trabalho desde 2021. Nele, construí o flow builder visual com o bloco de Agente IA, que responde em texto e voz, e um playground que simula o fluxo sem mandar nada para o WhatsApp. Fiz a base de conhecimento com RAG, as vendas pelo WhatsApp (pedido pelo fluxo, carrinho abandonado e comissão), o CRM de leads, clientes e documentos e a assinatura na Stripe, com Checkout, Portal e webhook. Também fiz os módulos por empresa, migrei as telas para shadcn e Tailwind 4, corrigi o isolamento entre empresas e escrevi as specs que guiaram cada etapa.

Decisões técnicas

  1. 01Conhecimento separado por empresa, chave guardada no servidor

    Cada empresa tem a própria base. O texto é quebrado em trechos, vira embedding com text-embedding-3-small e vai para o pgvector, e a busca só olha os trechos daquela empresa. A chave de IA nunca volta numa listagem nem pelo socket, e as falhas usam erros tipados (ERR_AI_*) para a tela saber o que deu errado.

    Onde está no código: services/KnowledgeServices/chunkText.ts · embeddings.ts · searchKnowledge.ts

  2. 02O fluxo é um grafo, e dá para simular

    O fluxo desenhado no front com @xyflow/react é salvo como grafo e validado ao salvar. O motor percorre os blocos: início, mensagem, menu, pergunta, agente IA, catálogo, checkout, condição, transferência e encerramento. O mesmo motor tem um modo de simulação, e o playground simula a conversa pelo fluxo, inclusive o bloco de agente, sem mandar nada ao WhatsApp.

    Onde está no código: services/FlowServices/FlowEngine.ts · flowGraph.ts · SimulateFlowService.ts · aiAgent.ts · salesTools.ts

  3. 03Webhook da Stripe conferido nos bytes

    A rota do webhook recebe o corpo cru, antes de qualquer parser de JSON, porque a Stripe assina os bytes exatos. Evento sem assinatura válida é recusado. Um POST forjado não ativa plano nenhum.

  4. 04Spec antes do código

    Features, regras e a padronização das telas foram escritas primeiro como spec, e a padronização andou em etapas.

    Onde está no código: docs/specs/

Números

64

models no produto

210

migrações

40

páginas

Stack

  • Node.js
  • TypeScript
  • Express
  • Sequelize
  • PostgreSQL 16
  • pgvector
  • Redis
  • Bull
  • Socket.io
  • Baileys
  • OpenAI SDK
  • Stripe
  • React 19
  • Vite
  • Tailwind 4
  • shadcn/ui
  • Electron
  • Docker

Telas

Playground do agente IA simulando uma conversa de teste ao lado do fluxo
Base de conhecimento de uma empresa, com o teste que mostra os trechos que o agente receberia
Kanban de vendas do CRM, com as oportunidades por fase
Próximo case

Kaelith