Alan Nicholas
← Voltar aos projetos

EstoqueZap

ERP conversacional: a decisão foi não construir o app que o lojista nunca abriria, e colocar estoque, fornecedores e NF-e dentro do WhatsApp, onde ele já está.

Função

Full-stack Developer

Período

2024

Cliente / Contexto

SaaS Proprietário

Links

Landing e painel do SaaS — estoque controlado pelo WhatsApp

Tecnologias

NestJSNext.jsPrismaPostgreSQLBaileys (WebSocket)Groq/LlamaRechartsJWT

Comando → banco

<1.5s

Interface escolhida

WhatsApp

Sessão sobrevive a restart

Postgres

O problema

Lojista pequeno não abandona o caderno porque o caderno é bom — abandona porque a alternativa exige sentar no computador. Todo ERP para esse público morre no mesmo lugar: atualizar o estoque compete com atender o cliente, e perde. A decisão de produto foi aceitar isso como restrição em vez de tentar educar o usuário: nenhum app novo para instalar, nenhuma tela nova para aprender. A entrada é a caixa de mensagem que já fica aberta o dia inteiro no balcão.

A decisão

Escolher o WhatsApp como interface transfere o problema para a infraestrutura, e é ali que ficaram as decisões difíceis. A conexão é WebSocket persistente via Baileys, com reconexão automática, em vez de webhook. Como o backend roda em disco efêmero, a sessão de login morreria a cada restart — persisti o estado de autenticação do Baileys direto no Postgres via Prisma, fora do padrão em arquivo. O interpretador é Groq/Llama, para aceitar "vendi 3 camisetas azuis" em vez de exigir sintaxe, com limitador que suspende o número por 2 minutos depois de comandos inválidos seguidos. O NestJS por trás cresceu para fornecedores, pedidos de compra e importação de NF-e; o painel em Next.js, com dashboard executivo e instalação como PWA, existe para quem quer olhar o mês inteiro — não para operar o dia.

O resultado

Comando em texto livre vira escrita no banco em menos de 1,5s, a sessão do bot sobrevive a reinício do servidor, e o estoque aparece sincronizado no painel. É o projeto mais próximo de uma plataforma de atendimento que eu construí: fluxo conversacional, interpretação por IA, controle de abuso e transbordo para uma interface humana quando a conversa não dá conta.