Killing ResumoFII
ResumoFII shipped in July 2025. It scraped 466 Brazilian real estate funds from B3, downloaded monthly PDF reports, and used Gemini 3.1 Pro to extract structured data into a Svelte frontend. It worked. It was live. Four months later I killed it.
The Build
ResumoFII started as a way to learn Rust. I also wanted to see if Clean Architecture principles actually matter in a real codebase. Stack was Rust + Axum + SQLite, Svelte + Tailwind. Evenings and weekends, one hour at a time.
The pipeline was solid. Scheduler checked B3 for new reports. PDFs queued as jobs. Gemini extracted data from 30+ page Portuguese documents. Frontend turned dense PDFs into skimmable cards.
I used it myself. But "I use it" is not a business.
The Regulatory Reality
I didn't realize investment advice is a regulated activity in Brazil. The CVM has strict rules about who can provide investment recommendations to retail investors. ResumoFII wasn't giving explicit buy or sell advice, but summarizing reports and presenting them in a structured way walks a thin line.
Operating legally would mean CVM registration as an investment advisor. Compliance officers. Audit trails. For a solo side project, that's a non-starter.
I thought the hard part would be the code. The code was fine. The hard part was realizing I couldn't legally run the thing.
The NF-e Overhead
Then there's the Brazilian tax bureaucracy. Charge Brazilian consumers for a digital product and you need NF-e integration. Every transaction generates a government-tracked invoice. Complex integration, certified digital certificate, an XML schema that changes periodically.
For a side project the overhead is absurd. Certified accounting partner. NF-e software. Digital certificate management. Monthly tax filings even with zero revenue.
I just wanted to make PDFs less annoying to read. That's not a fintech. But the government doesn't care what you call it.
This killed ResumoFII before it had a chance to find product market fit. There's a real compliance cost to operating in a regulated industry with Brazilian tax infrastructure. Not to mention Merchant of Records avoiding investment-focused products like the plague.
The Honest Lesson
I should have checked whether I was allowed to run this before I spent six months building it. Obvious in hindsight. Not obvious when you're excited about Rust lifetimes.
The second mistake was the target market. Brazilian retail investors are a nightmare customer segment for a solo builder. Not because they don't have problems. Because solving their problems requires institutional-scale compliance.
ResumoFII taught me three things I now apply to every project:
- Avoid heavily regulated domains.
- Global by default. If the product can work for anyone with an internet connection, don't anchor it to a high-bureaucracy jurisdiction.
- Infrastructure is reusable, audiences are not. The Rust, the SQLx, the Svelte. All portable. The FII domain knowledge and CVM exposure. Not portable at all.
What's Next
The code's good. I'll port it to something global, simple, and unregulated. Something that generates shareable output. Something with a clear path to first dollar.