Estudo de caso
GL SYSTEM
Painel de operação de uma consultoria de treino, que virou sistema para outras consultorias.

no ar em glteamconsultoria.com.br
O problema
Uma consultoria de treino rodava tudo espalhado entre planilha, Notion, WhatsApp e Drive, sem controle de acesso por pessoa e com risco de perder dado a cada exclusão. Eu precisava de um painel único que lesse onde a equipe já trabalhava e depois tirasse essa dependência sem parar a operação.
Uma consultoria de treino tocada em planilha, Notion e WhatsApp.
O que construí
Juntei planilha, Notion e WhatsApp num painel só, com os check-ins dos alunos lidos por IA, e depois abri o sistema para outras consultorias.
Como funciona
- 4 públicospor área
- AcessoSupabase Auth
- Consultoria certamulti-cliente
- Regras do negócioPostgres
- IA e WhatsAppOpenAI + Z-API
- RotinasVercel cron
Decisões
- Inverti a fonte da verdade: o banco manda e a planilha virou cópia de segurança. Só espelhar sairia mais barato, mas não tiraria a dependência.
- Nada é apagado: toda exclusão vira arquivamento. Achei 7 caminhos que apagavam linhas da planilha sem lixeira.
- Separação por cliente no contexto de cada requisição: deu para converter cerca de 50 rotas sem mudar nenhuma função do domínio, e depois abrir o sistema para outras consultorias.
Desafios
As regras de acesso do banco estavam ligadas, mas sem nenhuma regra escrita
criei 12 regras de leitura e 16 permissões.
O Notion do cliente bateu o limite do plano e travou a escrita em produção
migrei os módulos um por um para o banco, mantendo as mesmas funções, conferido por um inventário que reprova no CI.
Uma integração com 230 commits de diferença deu 57 conflitos
resolvi um a um, preservando a separação por cliente.
Resultado
em produção · 230 commits · projeto para cliente
Stack
- Next.js 15
- Supabase
- Stripe
- Resend
- Notion
Telas



