Plin
Bot funcional com self-hosting em homelab próprio
O Problema
Apps de finanças falham na adoção porque exigem logins, formulários e navegação entre telas — atrito demais para o momento em que o gasto acontece. O Plin elimina essa fricção: o usuário simplesmente manda uma mensagem no Telegram que já usa, e o bot registra, categoriza e confirma em segundos. A gestão financeira vira uma conversa de 5 segundos, sem abrir nenhum app novo.
Processamento de Linguagem Natural
O bot usa spaCy (pt_core_news_sm) para lematização e regex para extração de valores monetários. A intenção — despesa ou receita — é classificada por lookup em listas de palavras-chave. Ao enviar "gastei 40 reais com pizza" ou "recebi 200 de freela", o sistema extrai o valor, define a categoria e registra sem nenhum comando rígido. O banco é multi-tenant por user_id do Telegram, com chave primária composta (user_id, id_transacao_user) garantindo IDs de extrato independentes por usuário sem expor PKs globais.
Infraestrutura
O Plin roda num notebook antigo reutilizado como servidor doméstico com CasaOS. O bot é containerizado com Docker, o que garante que qualquer atualização possa ser feita sem derrubar o serviço. O banco de dados é SQLite gerenciado via SQLAlchemy, priorizando portabilidade. Os dados financeiros ficam inteiramente sob controle próprio, sem depender de nenhum serviço externo.
Manter um serviço rodando continuamente em hardware próprio ensina coisas que nenhuma VPS ensina: gerenciamento de energia, rede local, reinicialização automática de containers e monitoramento básico.
Próximos Passos
Geração de gráficos de saúde financeira com Matplotlib diretamente no chat, criação de alertas para limite de gastos por categoria e funcionalidade para exportação do extrato mensal.
O que eu faria diferente
O SQLite funciona perfeitamente para uso pessoal, mas seria o primeiro gargalo ao escalar para múltiplos usuários ativos simultâneos — migraria para PostgreSQL. O Docker Compose atual torna essa mudança de uma linha no docker-compose.yml, o que foi uma decisão deliberada de design. Para o NLP, o modelo pt_core_news_sm do spaCy é leve mas perde cobertura em categorias financeiras de nicho (ex.: "gasolina", "freela", "Ifood") — um fine-tuning do modelo md com exemplos rotulados melhoraria significativamente o recall sem custo de infraestrutura adicional.
Demonstração do Plin Bot em funcionamento.
Ver Código no GitHub Teste o Plin aqui!