Produto próprio · em produção
CRM para salões: a cliente que sumiu volta pra agenda
Um CRM white-label para salões de beleza, com uma versão para lojas no mesmo código. O salão vê quem sumiu, quem faz aniversário e quem combina com a promoção do mês, e manda a mensagem pronta no WhatsApp. Fiz do banco à tela; aqui vai como ele funciona por dentro.
O problema
O atendimento termina e o salão perde o fio da cliente.
- Ninguém percebe que a cliente sumiu até a agenda esvaziar.
- O aniversário passa e a mensagem não sai.
- A promoção do mês vai pra todo mundo, ou pra ninguém.
- A base de clientes mora numa planilha com telefone digitado de qualquer jeito.
O que ele faz
Quem sumiu, na hora certa
Cada procedimento tem o próprio prazo de retorno, com padrão de 45 dias. Vale o menor prazo da última visita, então coloração e corte são cobrados cada um no seu tempo.
Sino de alertas
Quem passou do prazo e quem faz aniversário hoje ou amanhã. O alerta some sozinho quando a cliente volta.
Mensagem pronta no WhatsApp
Listas de sem retorno, aniversariantes e promoções, cada item com o botão que abre o WhatsApp com a mensagem do salão. Quem envia é sempre uma pessoa do salão.
Equipe com papéis
Admin, profissional e assistente. A assistente só vê o que precisa, e o bloqueio vale no menu, na rota e na API.
Rodízio de cortesia
A tela diz com quem fica a cortesia hoje e nas próximas quatro semanas. A escala é calculada; só as exceções são gravadas.
Planilha importada sem drama
Aceita a planilha do salão e o CSV de formulário, corrige telefone e data digitados à mão e pode ser reimportada sem apagar o que foi ajustado.
Por dentro
A parte que o salão não vê, mas que segura tudo.
Um salão não enxerga o outro
Toda consulta exige o salão definido: sem ele, a consulta para em vez de devolver tudo. O salão vem do endereço e só vale se o login pertencer a ele, e registro de outro salão responde 404, como se nem existisse.
Cada salão no próprio endereço
Um subdomínio por salão, com a logo e as cores dele. O contraste do texto é calculado pela luminância, então nenhuma cor escolhida deixa a tela ilegível.
Sessão longe do JavaScript
O token fica em cookie HttpOnly e é renovado em silêncio. Trocar de subdomínio não pede login de novo.
Planilha fora da requisição
A importação vai para uma fila com Dramatiq e Redis, lê a planilha Excel aos poucos e é refeita se o servidor cair no meio.
Alerta sem cron
A plataforma não tem agendador: os alertas do dia nascem na primeira consulta ao sino, e uma trava no banco garante que só uma requisição os gera.
Salão e loja no mesmo código
A versão para varejo, com catálogo, estoque, venda por item e recompra, roda no mesmo back-end e no mesmo banco, separada por plataforma. Bug corrigido de um lado vale para os dois.
Deploy sem passo esquecido
As migrations rodam sozinhas antes de cada deploy, e logos e fotos ficam num storage sem custo de saída.
Stack
- Next.js
- Django
- Django Ninja
- Dramatiq
- PostgreSQL
- Redis
- Cloudflare R2
O que deu errado e como resolvi
Nem tudo saiu de primeira. Esses foram os tropeços que mais ensinaram.
- Problema
Depois que a sessão era renovada, oito pontos do código ainda liam o token velho, tomavam 401 e derrubavam o login.
SoluçãoUma função só para pegar o token, que sempre prefere o renovado.
- Problema
As migrations nunca tinham rodado no deploy: a produção ficou numa versão antiga do banco e criar salão novo quebrava.
SoluçãoA migration virou passo automático antes de cada deploy.
- Problema
Gente presa na tela de troca de senha, que pedia a senha atual sem mostrar o campo.
SoluçãoO estado da senha passou a vir do banco, e não de um dado velho guardado no login.
- Problema
Senha boa recusada, com mensagem em inglês, só por parecer com o e-mail.
SoluçãoValidadores próprios, em português, que recusam só o que é igual de verdade.
- Problema
O sem retorno era 45 dias para tudo: cobrava a coloração tarde e o corte cedo.
SoluçãoPrazo por procedimento, valendo o menor da última visita.
Em números
- 45 diasde prazo de retorno padrão, ajustável por procedimento
- +400testes automáticos no back-end e no front
- 3 perfisde equipe, cada um vendo só o que precisa
- 2 em 1salão e loja no mesmo código
- 30 diasde janela no sino de alertas
Quer algo assim no seu negócio?
Salão, loja ou qualquer negócio que vive de cliente voltando. Me conta o problema e eu digo o que faz sentido.
Me chama no WhatsApp