Mr Chef's, Site e Atendimento
Detalhes do Projeto
- Período:
- 09.2026 → hoje
- Link
- mrchefs.com.br
- Client Project
- React 19
- Vite
- GSAP
- n8n
- Google Gemini
- PostgreSQL
- MapLibre
- Vercel

Impacto em números
WhatsApp, chat do site, reservas, cardápio e painel
Respondem na hora e não gastam IA
Abuso, áudio, código, comprovante, mapa e painel
Quando alguém da equipe assume a conversa
Sobre o projeto
O Mr Chef's funciona desde 2012 no segundo andar de um casarão na Praça Correa Rabelo, de frente para a Catedral de Diamantina. A reserva era feita por WhatsApp e telefone.
Refiz o site do zero em torno do lugar. A abertura acende o nome junto com a luz do lampião, o hero mostra a Catedral de dia até as 18h e acende a luz depois disso, o aviso de "aberto agora" é calculado no horário de Brasília e, nas noites de Vesperata, o site entra num modo próprio com contagem regressiva. Em "Onde fica", um mapa 3D traça o caminho a pé de onde o visitante está até a porta. Cada funcionalidade mora numa pasta própria e liga ou desliga numa configuração. Com todas desligadas, o site volta à versão sem elas, e eu conferi isso no build e no navegador.
O centro do projeto é o atendimento. Um conjunto de 20 workflows no n8n, com Gemini e Postgres, responde no WhatsApp e no chat do site e faz reserva de verdade: confere se a casa abre naquele dia, a última hora aceita, a antecedência mínima e a lotação da noite. A reserva é mesa por mesa. No site, a pessoa escolhe no mapa do salão e da calçada, e uma mesa não aceita duas reservas que se sobreponham.
Reserva feita pelo site só vale depois que o WhatsApp digitado responde com o código que apareceu na tela. O código prova que é quem pediu, e o número prova que o WhatsApp é dela. Quem não fez o pedido responde NÃO FUI EU e ele cai na hora.
A confirmação leva um comprovante em PDF, gerado dentro do próprio n8n, com a logo e as fontes da casa e um QR que a recepção abre para ver a reserva sempre atualizada. A equipe pede o mapa das mesas e recebe o salão desenhado, com cada mesa na cor do estado e o nome de quem vem. O cliente também pode pedir, mas o mapa dele só mostra o que está livre: sem nome, sem telefone, sem código.
Para a equipe, o WhatsApp da casa é o painel de administração. "Muda o preço do mexidão pra 42", "cadastra o Malbec em Vinhos a 145", uma foto com a legenda #12 ou um áudio dizendo "confirma a reserva da Ana". O áudio é transcrito, a transcrição aparece antes da resposta para a pessoa conferir, e comando com barra responde na hora sem gastar IA.
A decisão que mais importa é quem pode mexer nisso. Um modelo de linguagem obedece texto, e texto qualquer pessoa manda. Por isso ser da equipe é conferido no banco, pelo número da conversa, e não pelo que o modelo concluiu. O modelo não tem como se convencer a dar acesso a ninguém.
O desafio
Juntar IA e reserva de verdade sem deixar o modelo decidir o que não deve. O Gemini conversa, entende e transcreve, mas tudo o que muda estado passa por regra no banco: lotação, sobreposição de mesa, horário de funcionamento e quem é da equipe. O modelo sugere, o banco decide.
O outro desafio foi custo e sossego. IA cobra por resposta, então existe limite diário de gasto e um comando que mostra quanto já foi. Mensagem picada vira uma resposta só. E quando alguém da equipe responde pelo celular da casa, o bot fica 12 horas quieto naquela conversa, para não atropelar o atendimento humano.
Resultados
O atendimento responde na hora, de dia ou de madrugada, e a reserva chega confirmada com comprovante. A equipe mexe no cardápio e nas reservas pelo próprio WhatsApp, sem abrir sistema nenhum, e recebe às 17h o resumo da noite.
Stack técnica
React 19 e Vite 6
Site com GSAP, ScrollTrigger e Lenis, e cada funcionalidade isolada numa pasta que liga e desliga.
n8n
20 workflows: WhatsApp, chat do site, reservas, cardápio, fotos, comprovante, lembretes e o painel da equipe.
Google Gemini
Conversa e transcrição de áudio, com limite diário de gasto e comandos que não passam pela IA.
PostgreSQL
Reservas, mesas, cardápio e fotos num schema próprio, com a regra de sobreposição no banco.
Evolution API
Conexão com o WhatsApp da casa, para o cliente e para a equipe.
MapLibre e OpenStreetMap
Mapa 3D com relevo e rota a pé, com o Google Maps como plano B.
Vercel
O site conversa com o n8n pelo próprio domínio, então o endereço do servidor não aparece no JavaScript.
Galeria(2)

