Inspiration
Democracy works best when voters are informed, but municipal budgets are notoriously opaque. When trying to understand local spending in massive cities like Los Angeles, the average citizen is confronted with hundreds of pages of dense PDFs and bureaucratic jargon like "Capital Outlays" or "Internal Services." We realized that if voters can't easily see where their tax dollars are going, they can't effectively advocate for their communities. We built Budget Buckets to solve this transparency gap, transforming complex government finance documents into accessible, digestible, and interactive bite-sized buckets.
What it does
Budget Buckets is an interactive civic-tech platform that instantly visualizes and explains municipal budgets.
- Instant Visualization: Users simply enter a city name. If the city is in our SQLite database, it loads instantly. If not, our pipeline fetches the latest official budget PDF, reads it, and categorizes the spending into 9 standardized, plain-English buckets (e.g., "Public Safety & Justice" or "Community & Recreation"). Users can also upload their own PDFs in case the budget is not publically available or accessible by our scraper.
- Interactive Exploration: The budget is displayed as an intuitive, hoverable pie chart. Hovering over a bucket provides a plain-English summary of the exact line items it contains.
- AI Agent Chat: Users can ask an AI agent specific questions about the budget, with the agent citing its sources directly from the document to prevent hallucinations.
- Ethical & Accessible by Design: To ensure equitable access, the platform translates jargon, provides screen-reader-friendly data tables alongside visual charts, and features a user feedback loop to flag potential AI bias in how funds were categorized. The user can also change the displayed language to Spanish or Chinese with localized currencies to better democratize access to information.
How we built it
We prioritized a lightweight, fast, and fully API-driven architecture:
- Frontend: Built with React for highly responsive and interactive data visualization.
- Backend: Node.js paired with a SQLite database to cache previously processed cities.
- The AI Pipeline: We utilized an agent powered by Claude for data analysis, bucketing, and chat. Web scraping is handled by agent-browser, which allows the agent to interact with web pages and extract information.
Challenges we ran into
Our biggest hurdle was the data ingestion pipeline. Municipal websites are incredibly fragmented, making it difficult to find the actual budget PDFs programmatically. Our scraper rarely is not able to find the budget PDF, but it can take up to several minutes. To bypass this, we allow the user to upload their own budget PDF to ensure our solution still works for every user.
Accomplishments that we're proud of
We are incredibly proud of how deeply we integrated accessibility and transparency into the core of the app:
- Breaking language barriers: We allow the user to change the displayed language to Spanish or Chinese with localized currencies to better democratize access to information.
- Breaking jargon barriers: We allow the user to hover over any bucket to see a plain-English summary of the exact line items it contains.
- Letting users make their own decisions: The AI agent acts as a helpful librarian, empowering voters with facts rather than dictating opinions.
What we learned
We learned just how powerful agents can be, both for software development and as a part of the software.
What's next for Budget Buckets
Our immediate next steps are to host this on a live server and expand the number of cities in our database. We also want to improve our web scraping pipeline in order to better automate this process.
Log in or sign up for Devpost to join the conversation.