Pitch: fiz sozinho um app de assinaturas em 10 dias. O que aprendi
Sou brasileiro e, em outubro, passei uns 10 dias construindo sozinho o Subfaro, um app para controlar assinaturas. Usei o Claude Code como par de programação o tempo todo. Ajudou a ir rápido, mas as decisões (e os erros) abaixo são meus. Quero contar o que deu trabalho e ouvir quem entende do assunto.
O problema
Três coisas me incomodavam na minha própria fatura:
- Assinatura em dólar custa mais do que parece. Em cima do câmbio vêm o IOF de 3,5% e o spread do cartão.
- Reajuste silencioso. O aviso do serviço chega por e-mail (quando chega), e você só percebe meses depois.
- Teste grátis que vira cobrança. O clássico.
O gerenciador de assinaturas do Nubank resolve parte disso, de graça e sem você cadastrar nada. Mas só enxerga o cartão de crédito Nubank e não cancela nada (dá para bloquear ou trocar o cartão). Nos EUA existe o Rocket Money, que é bom, mas depende de conectar o banco e só funciona com bancos americanos.
O que o Subfaro faz
Você escolhe o serviço e o plano (Netflix Padrão, Spotify Família...) e o preço vem preenchido. Depois disso:
- aviso antes de cada cobrança e do fim do teste grátis, por e-mail e notificação;
- custo real do que é cobrado em moeda estrangeira: câmbio + IOF + spread do seu cartão;
- assinatura dividida conta só a sua parte;
- importação da fatura (PDF, CSV ou OFX) e uma extensão para Chrome que, na página da sua conta da Netflix, oferece "Adicionar ao Subfaro?" já preenchido;
- link direto para cancelar cada serviço. O app não cancela nada por você.
É grátis até 10 assinaturas. O Pro custa R$ 9,90/mês ou R$ 79,90/ano.
Stack: Next.js 15 + Prisma + Postgres no Render (app e API), landing em Next.js estático, Android em Kotlin/Compose, extensão Chrome MV3, e-mails pelo Resend. São 5 repositórios e uns 260 commits.
5 decisões técnicas
1. Não conectar o banco
O Open Finance resolveria a detecção automática, mas escolhi não usar. Pedir acesso ao banco para listar assinaturas é pedir demais. O banco só mostra a cobrança depois que ela acontece, e a ideia é avisar antes. E dado que eu não guardo não vaza.
O preço é atrito: você precisa cadastrar. Para diminuir, existem o catálogo, a extensão e a importação de fatura (lida e descartada na hora; o arquivo não fica salvo).
2. Um robô de preços que pergunta antes de mudar
Toda segunda, às 6h de Brasília, um cron no Render visita a página de preços de mais de 100 serviços, no Brasil e nos EUA. Cada serviço tem um adaptador, e os parsers têm testes com páginas salvas. As requisições passam por proxy no país certo, porque o mesmo site mostra preços diferentes para quem acessa do Brasil e dos EUA.
- Variação acima de 60% não entra sozinha. Fica para revisão: num salto desses, um erro de leitura do parser é mais provável que um reajuste.
- O app não troca o valor da sua assinatura. Quando o preço oficial muda, ele pergunta: "A Netflix anunciou R$ 51,90 (você paga R$ 44,90). Sua fatura já mudou?". O preço novo vale primeiro para quem assina agora; quem já assina costuma pagar o antigo por mais um tempo.
Surpresa: pelo iPhone costuma sair mais caro. O YouTube Premium Família custa R$ 53,90 no site e R$ 69,90 pela App Store, então o catálogo guarda os dois.
3. Reajustes com data e fonte, e um índice
O robô só sabe o que viu a partir de outubro de 2026. Para trás, o histórico veio de páginas oficiais, páginas arquivadas e da imprensa, plano por plano, com o link da fonte em cada linha. Hoje são 111 mudanças de preço no Brasil e 132 nos EUA, numa página pública.
Com isso deu para montar um índice com o plano mais comum de 34 serviços. Em 12 meses, streaming e música (17 serviços) ficaram 6,6% mais caros; o IPCA de 12 meses foi 4,6%. Os dados estão num CSV aberto.
A regra mais importante: só conta como reajuste a mudança entre dois preços confirmados, pelo robô ou à mão na página oficial. Um preço de referência digitado uma vez nunca vira "preço antigo".
4. Um conector MCP para o Claude
Como o app já tinha uma API REST, o servidor MCP saiu barato: umas 400 linhas e 6 ferramentas (resumo de gastos, listar, buscar no catálogo, adicionar, atualizar e marcar como cancelada). Você pergunta "quanto eu gasto com assinaturas?" e o Claude responde com o custo real em reais.
O que mais pensei foram as regras de segurança: OAuth com escopo de só leitura ou de leitura e edição, nenhuma ferramenta de excluir, no máximo 30 alterações por hora por conexão e toda alteração registrada no app, com botão de desfazer.
Não é exclusividade (Organizze e Monarch também têm conector para IA), e o do Subfaro funciona no plano grátis.
5. Contar visitas sem cookie
Eu queria saber de onde vêm as visitas sem banner de cookie nem Google Analytics. A página manda um fetch com o caminho, a origem (referrer ou utm_source) e se é celular ou computador. O servidor só soma contadores: uma linha por dia × página × origem × país × dispositivo. Sem IP, sem identificador.
A origem fica só na memória da aba e vai no link para o cadastro (?src=...). Assim eu sei qual canal trouxe contas, sem rastrear ninguém. O custo: não dá para contar visitantes únicos. Aceitei.
Dois erros que custaram tempo
- Apontei o shadow database do Prisma para o meu banco local de verdade. O Prisma reseta o shadow, e lá se foram os dados de teste.
- A conta do Stripe é compartilhada com outro produto meu, e as primeiras cobranças do Pro saíam na fatura com o nome do outro produto. Num app que ajuda a achar cobrança estranha na fatura. Já corrigi: o Pro agora tem o próprio nome no Stripe e aparece como SUBFARO.
O que ainda falta
- App de iPhone: fica para depois. O Android acabou de sair na Google Play; no iPhone dá para usar pelo Safari e adicionar à Tela de Início.
- Preços só do Brasil e dos EUA.
- O robô cobre mais de 100 serviços. Fora deles, você digita o valor.
- Não acha assinatura sozinho sem a fatura ou a extensão, que por enquanto é só para Chrome.
O que eu queria ouvir de vocês
- Vocês confiariam mais num app que conecta no banco ou num que não conecta? Por quê?
- Perguntar "sua fatura já mudou?" antes de atualizar o preço faz sentido, ou é atrito à toa?
- Que serviço faltou no catálogo?
Crítica dura também serve. Se quiser testar: [subfaro.com]
Vou responder os comentários por aqui.