Kyber CRM

Sistema interno de um estúdio de tecnologia, construído para substituir planilha, agenda e memória por um lugar só. Está no ar em crm.somoskyber.com.br e é usado todo dia na operação real.

Papel
Autor único, do modelo de dados ao deploy
Contexto
Kyber Tech
Situação
Em produção, uso diário
Acesso
Privado, sistema interno
Central do dia do Kyber CRM: navegação com treze módulos, cinco indicadores no topo, fila de tarefas do dia e o painel de leitura escrita por IA
Central do dia. Nomes de cliente e valores estão borrados de propósito.

O problema

A operação de um estúdio pequeno cabe em planilha até deixar de caber. Proposta em um arquivo, cobrança em outro, o que foi combinado com cada cliente na memória de quem atendeu, e o próximo passo de cada negociação em lugar nenhum. O custo não aparece de uma vez: aparece como cobrança esquecida, follow-up que não saiu e pergunta de cliente que ninguém sabe responder sem procurar.

O objetivo não era ter um CRM. Era ter um lugar onde vendas, produção, financeiro e suporte olhassem para os mesmos dados, com a mesma regra de quem pode ver o quê, e onde o trabalho do dia estivesse montado antes de alguém perguntar o que fazer.

Quatro superfícies, um modelo

Uma aplicação Next.js serve quatro coisas bem diferentes sobre o mesmo modelo de dados e a mesma camada de autorização.

  1. 01 Painel web Onde a operação acontece: funil kanban, fila do dia, financeiro e métricas.
  2. 02 Servidor MCP 70 ferramentas que permitem a um agente de IA operar o sistema por conversa.
  3. 03 Páginas públicas por token Proposta comercial, portal do cliente e status de projeto, abertos por link, sem login.
  4. 04 Rotinas agendadas Cobranças, snapshot de receita e briefing diário, em cron.

O ponto interessante não é a quantidade de superfícies, é que as quatro compartilham as mesmas regras de negócio e o mesmo isolamento por usuário, em vez de cada uma reimplementar a sua versão. Uma regra corrigida vale para o painel, para o agente, para a página pública e para o cron ao mesmo tempo.

Como foi resolvido

Identidade por token no servidor MCP

As 70 ferramentas rodam sob o mesmo endpoint, e quem está operando é resolvido a partir do token da requisição. A identidade é propagada por AsyncLocalStorage, para não vazar entre requisições concorrentes. Cada parceiro opera só os próprios dados, com as mesmas regras do painel.

Autorização no banco, não na aplicação

133 policies de RLS sobre 29 tabelas, com funções SECURITY DEFINER para as decisões compostas: quem pode ver qual lead, quem é admin. O front nunca é a fronteira de segurança. Mesmo com a chave pública em mãos, o Postgres recusa.

Motor de cadência de prospecção

Sequência de quatro toques com ângulos distintos e intervalos crescentes. A priorização usa sinais do lead: nota pública, volume de avaliações, presença digital e nicho histórico. Há teto diário por pessoa e lista de descadastro global. Resposta do lead pausa a automação e devolve o caso para tratamento humano.

IA aplicada de forma estreita e com trava

Quatro usos específicos: gerar abordagem inicial, rascunhar proposta a partir do catálogo, escrever follow-up lendo o histórico da conversa e produzir a leitura diária dos números. Cada um com regras explícitas contra inventar preço, prazo ou entrega, mais uma camada de revisão que relê o texto gerado e sinaliza afirmações que o estado do sistema não sustenta.

Multiusuário com divisão de receita

Compartilhamento de lead entre parceiros, percentual por lead e apuração de repasse, com o financeiro respeitando a divisão. O isolamento por usuário e a divisão de receita são o mesmo problema visto de dois lados.

Automatizar tudo, menos a última milha

O sistema não envia mensagem automaticamente, em canal nenhum, e isso é intencional. Ele monta a fila, escreve o texto e registra o envio, mas o clique de enviar é sempre humano.

O motivo é risco operacional e legal. A API oficial exige consentimento documentado que a base não tem. As alternativas não oficiais violam os termos e derrubam a conta. E o número usado na prospecção é o mesmo que atende os clientes que já pagam.

Automatizar o envio economizaria minutos e colocaria em risco o canal principal do negócio. A conta não fecha. O sistema é desenhado em torno dessa escolha, não apesar dela.

O que existe hoje

Linhas de TypeScript
21.133
Arquivos
103
Ferramentas MCP
70
Policies de RLS
133
Tabelas
29
Migrations
32
Rotas
21
Rotinas em cron
3

Das 21 rotas, 17 são protegidas e 4 são públicas por token. Dez dependências de produção no total: sem Tailwind e sem biblioteca de componentes, o estilo é inline sobre variáveis CSS, com tema claro e escuro.

  • Next.js 15
  • React 19
  • TypeScript
  • Supabase
  • Postgres RLS
  • Realtime
  • Storage
  • Vercel
  • @vercel/mcp-adapter
  • Anthropic SDK
  • @dnd-kit
  • Zod

Quer ver o resto do trabalho, ou conversar sobre um projeto?

Atualizado em 5 de agosto de 2026