The problem
Brazil's Chamber of Deputies publishes how each deputy uses the CEAP, the allowance that pays for their mandate. The data is public, but it comes as annual files that take work to open, filter and check.
Next: What I didWhat I did
I built a collector, a validated database and a static site. Three parts carry it:
Directory of deputies and senators from the official APIs. CEAP expenses from the annual files the Chamber has published since 2008.
Each expense keeps its official file, CSV ordinal and the SHA-256 of the ZIP and CSV it came from.
Monthly trends, categories and suppliers for each deputy, with a CSV export of whatever filters are active.
Honesty about gaps is part of the design. Negative adjustments are preserved, a month with no rows is never shown as zero spending, and Senate expenses are not integrated yet, which the interface says plainly.
A daily worker refreshes the data at 21:00 UTC on a private copy, validates it and only then publishes; a failure brings back the previous version. The frontend is compiled to static assets, so the production server runs no Node.
Next: Where it standsWhere it stands
The first milestone is live: the directory and the deputy expenses, with the evidence behind them.
Votes, attendance, mandate history and editorial review are planned milestones, not features of the site today.
Next: What I'd do nextWhat I'd do next
Integrate Senate expenses. The directory already covers senators; their spending is the visible gap.
Add history and mandates. Proven periods in office would let the numbers be read against the time actually served.
Add votes and attendance. They would answer the next question people ask, from the same kind of official source.
