Monitor de ofertas no Telegram



Projeto pessoal que nasceu de cansar de rolar dezenas de canais de oferta no Telegram à mão: um bot monitora os canais, extrai preço e categoria de cada post e organiza tudo num painel com histórico de preço por produto. Essa é a segunda versão do sistema — a primeira, em produção real por um bom tempo, foi reescrita (Express+EJS+SQLite → NestJS+React+PostgreSQL) mantendo a antiga como fallback de emergência até o corte.
Decisões técnicas
Validar antes de confiar na LLM
A classificação de categoria e a confirmação de preço começaram usando uma LLM. Depois de acumular dado real de produção, medi: uma função pura (regex + palavras-chave) batia com a LLM em 96,2% dos preços, e a categoria já esbarrava num teto de ~65% de autoconsistência mesmo comparando a LLM com ela mesma. Removi a chamada de LLM desse caminho — mais rápido, mais barato, sem perda de qualidade mensurável.
Preço não é só achar 'R$'
O extrator de preço trata casos que confundem qualquer regex ingênua: 'R$8,33 cada' dentro de um kit não é o preço (é o valor unitário, sempre menor que o total), 'Limitado a R$10' é teto de cupom, não preço, e um post com 'R$76.728' provavelmente quis dizer R$76,72 — acima de um teto de bom senso, o sistema prefere não extrair preço nenhum a arriscar um valor absurdo.
Mídia comprimida no tamanho certo
Imagens baixadas do Telegram são redimensionadas e convertidas pra WebP (sharp) antes de gravar em disco, com qualidade calibrada pro tamanho que realmente aparece no painel — card pequeno não precisa de imagem grande.
O que o painel mostra
Promoções organizadas e com histórico
Lista de promoções capturadas, com filtro por categoria e histórico de preço por produto ao longo do tempo — dá pra ver se aquele 'menor preço' é real ou só marketing.
Monitoramento da própria infraestrutura
Alerta automático quando o disco está enchendo ou o backup do Postgres está atrasado — cuidado que só se aprende depois de rodar um sistema tempo suficiente pra se preocupar com isso.
O trabalho difícil aqui nunca foi 'ler mensagem do Telegram' — foi desconfiar dela: separar preço de fração de cupom, e saber quando a resposta certa é não extrair nada.