App web · Planejamento de estoque

Caçador de Vencimentos

Lote parado no estoque vence e vira perda. O risco aparece cedo nos números, mas só fica visível quando alguém cruza validade, estoque e consumo. Criei um app que faz esse cruzamento lote a lote, mostra quanto vai sobrar na data de validade e sugere uma ação para cada lote.

Lovable · React · RechartsEspecificação com ClaudeDemo com dados fictícios
Tela do Caçador de Vencimentos com os indicadores de valor em estoque, perda projetada e lotes que pedem ação

Por que isso importa

Na saúde, produto vencido não volta para a prateleira. Vira descarte, provisão de perda e, às vezes, falta do mesmo item em outro local que teria vendido tudo a tempo.

Olhar só a data de validade não basta. Um lote que vence em 60 dias pode estar seguro se o giro for alto, e um lote que vence em 200 dias pode estar perdido se outro lote do mesmo produto estiver na frente da fila.

Como funciona

  1. Fila por validade. Para cada produto e local, os lotes entram em fila pela data de validade. É o FEFO: o primeiro que vence é o primeiro que sai.
  2. O consumo gasta a fila. O consumo diário vai esvaziando um lote de cada vez. O lote seguinte só começa a ser consumido quando o anterior acaba ou vence.
  3. O que sobra vira perda. A quantidade que não for consumida até a validade é a sobra. Sobra vezes custo unitário é a perda projetada em reais.
  4. Uma ação por lote. Regras simples sugerem o que fazer, e o planejador pode trocar a ação e marcar o andamento.

Na tela dá para mudar a data de referência, simular uma variação de consumo de -50% a +50%, filtrar por local e importar um CSV próprio. Tudo roda no navegador.

Regras da ação sugerida

Testadas nesta ordem. A primeira que se aplica é a sugerida.

Situação do loteAção sugerida
Já venceuBloquear e descartar
O consumo cobre o lote inteiroMonitorar
Outro local consome a tempo pelo menos 20% da sobraTransferir para esse local
Vence em até 30 diasProvisionar perda e planejar descarte
Vence em até 90 diasAção comercial: desconto ou campanha
Vence em mais de 90 diasRevisar o plano de compras do produto

Exemplo com os dados da demo

Quatro lotes da base fictícia, com consumo sem variação.

LoteVence emQuantidadeConsumoSobraPerda projetadaAção
L2405 · Analgésico · CD Sudeste25 dias4.000 un60 un/dia2.500 unR$ 21.250,00Transferir 1.050 un para CD Sul
L1120 · Vitamina C · CD Sudeste45 dias2.500 un30 un/dia1.150 unR$ 21.160,00Ação comercial
L6612 · Xarope infantil · CD Nordeste95 dias1.800 un15 un/dia555 unR$ 11.821,50Revisar plano de compras
L1128 · Vitamina C · CD Sudeste160 dias3.000 un30 un/dia0R$ 0,00Monitorar

O L6612 vence em 95 dias, mas o lote L6604 do mesmo xarope está na frente da fila. Por isso ele só começa a ser consumido no dia 12 e sobram 555 unidades. Olhando só a validade, esse lote pareceria seguro.

Como construí

Escrevi a especificação com o Claude: os dados de exemplo, a fórmula do FEFO, as regras de ação e os números que a tela precisava mostrar. O Claude enviou essa especificação ao Lovable pelo conector oficial, e o Lovable gerou o app em React. Depois conferi os totais da tela contra a conta feita à mão.

O que aprendi

Sobre os dados: produtos, lotes, custos e locais são fictícios. As regras foram simplificadas para a demonstração; num caso real, transferência e descarte seguem as regras sanitárias. O CSV importado é processado no navegador e não sai do seu computador.