BATTERY_ADVISOR
O_PROBLEMA
Para cada veículo existe uma bateria certa, que também varia de acordo com o ano de cada modelo, e "certa" é mais exigente do que parece. Não bastam a Amperagem e Voltagem. O tamanho precisa ser compatível, os terminais precisam ficar do lado onde os cabos alcançam, a corrente de partida precisa dar conta do motor, e a tecnologia precisa combinar com o carro (é aqui que casos como o start-stop entram, exigindo EFB ou AGM). Errar qualquer uma dessas variáveis já é a bateria errada.
Cruzar tudo isso de cabeça custava tempo. Cada verificação levava cerca de 50 segundos, e eram mais de 100 atendimentos por dia, entre telefone e WhatsApp. Quarenta segundos a mais por consulta parece pouco. Multiplicado por todos esses atendimentos, todos os dias, vira mais de 300 horas ao longo de um ano. Semanas inteiras gastas conferindo o que já estava catalogado.
TECH_STACK
EM_USO_EM
ARQUITETURA_DO_SISTEMA
O front-end em Next.js conversa com o agente através de API routes. Quando a pergunta chega, o agente aciona uma ferramenta que vai até um banco PostgreSQL no Supabase e busca a resposta certa. O modelo interpreta, o banco decide. É essa divisão que torna a recomendação determinística: a mesma pergunta devolve sempre a mesma bateria, porque ela não vem da memória do modelo, vem de um fato registrado.
Esse fato mora num schema normalizado de três tabelas (veículos, baterias, e a compatibilidade que liga uma à outra). A compatibilidade é declarada uma única vez, como verdade, sem duplicação. Regras de domínio ficam embutidas na própria ferramenta de consulta (por exemplo, carros start-stop nunca recebem bateria da linha convencional). O catálogo da Moura entrou como semente desse banco.
No fim, são duas coisas ao mesmo tempo: um projeto de portfólio e uma ferramenta de produção. Não é uma demonstração. Está em uso, todos os dias, no balcão de mais de 5 lojas.
DECISAO_TECNICA
- DESAFIO
- As regras de segurança do domínio (como a de que certos carros exigem EFB ou AGM, nunca a linha convencional) não podiam depender da memória do modelo. Deixar isso a cargo do LLM lembrar no prompt é frágil: troca o modelo, ou ele alucina, e a recomendação quebra num ponto onde errar tem custo real.
- ESCOLHA
- A restrição vive dentro da ferramenta de consulta ao banco, não no prompt. A tool filtra as opções incompatíveis antes de devolver os candidatos pro agente. O modelo nunca chega a ver uma bateria que violaria a regra.
- PORQUE
- Assim a recomendação fica determinística onde importa. O LLM orquestra e explica, mas não decide a regra de segurança. Funciona igual mesmo trocando o modelo por trás, porque a garantia não está nele, está no banco.
// codigo-fonte, schema e regras de dominio no repo
VER_NO_GITHUB arrow_forward