Todos os projetos
Automação · Fintech

Bro Energy

Plataforma de gestão de energia para clientes de geração distribuída — extrai faturas da concessionária automaticamente, recalcula com desconto e emite cobrança (boleto/PIX) por WhatsApp e e-mail.

Bro Energy administra unidades consumidoras de clientes de geração distribuída (GD), acessa em nome deles o portal da concessionária (CEMIG), coleta as faturas mensais, recalcula o valor com desconto sobre a tarifa original e gera uma fatura própria — PDF, boleto e PIX via Omie — entregue ao cliente por WhatsApp e/ou e-mail. Automatiza um processo hoje manual em empresas de GD, escalado para múltiplas unidades consumidoras e credenciais.

É um monorepo Turborepo com apps/web (Next.js 15, painel admin), apps/bot (worker Playwright com stealth que extrai faturas) e apps/invoice (worker em modo cluster que gera fatura, boleto e PIX), comunicando via filas BullMQ/Redis. Os workers não acessam o Prisma diretamente — chamam mutations de um pacote tRPC compartilhado, centralizando toda a persistência e regra de negócio num único lugar.

Um cron diário dispara a extração para todas as credenciais ativas: o bot faz login, resolve captcha, baixa e parseia o XML da fatura e sobe o arquivo pro Cloudflare R2. O worker de fatura calcula a tarifa (Cheia, Compensável ou Autoconsumo) sempre multiplicando pelo kWh de "Energia SCEE s/ ICMS", gera o PDF, cria a cobrança no Omie e entrega ao cliente; um monitor diário sincroniza o status de pagamento.

Desafios técnicos

  • –Evasão de detecção de automação no login da concessionária com Playwright + stealth, sem quebrar com atualizações de dependência
  • –Worker de fatura rodando em modo cluster (um processo por CPU) sem estado compartilhado em memória entre processos
  • –Manter a regra fixa de cálculo (kWh de Energia SCEE s/ ICMS como multiplicador) consistente entre os três tipos de tarifa

O que aprendi

  • →Arquitetura de workers como clientes tRPC — centralizar persistência e regra de negócio fora dos processos de automação
  • →Uso de filas BullMQ com sufixo de ambiente para isolar filas de dev e produção no mesmo Redis

Arquitetura

Tecnologias

Next.js 15PlaywrightBullMQtRPCPrismaOmie
GPTextoOlimpya