Richmond Public Budget Dashboard

What inspired this project

We built this project because public budget data is often technically available, but not truly accessible. For most residents, journalists, advocates, and even city stakeholders, budget documents are buried in long PDFs, difficult-to-navigate spreadsheets, or raw open data files that require a lot of cleaning and context before they become useful. That creates a gap between public information and public understanding.

Our goal was to close that gap by creating a dashboard that makes Richmond’s budget easier to explore visually and interactively. We wanted users to be able to quickly answer practical questions such as: Where is the city spending the most money? How has agency funding changed over time? Which functions of government are growing or shrinking? And how do those trends connect to broader mayoral priorities and city operations?

At its core, this project was inspired by the belief that transparency is not just about publishing data. It is about making data understandable.

What we built

We built a public-facing Richmond budget dashboard using historical city budget data and structured it to allow users to explore spending across multiple dimensions, including agency, cost center, account, service category, and fiscal year.

The dashboard was designed to help users move from a high-level view of total budget allocations down to more detailed slices of spending. Rather than forcing someone to read static budget books line by line, the dashboard creates a more intuitive way to explore the city’s finances over time.

Key features of the project include:

  • Budget trends by fiscal year
  • Agency-level comparisons
  • Percent-of-total budget views
  • Year-over-year change analysis
  • Definitions and context for budget terminology
  • Mapping agencies and spending categories to broader mayoral policy pillars

We also incorporated calculations that help users understand change over time, including metrics such as percent difference from the first year in the dataset and percent difference from the prior year.

For example, if a budget amount in year (t) is represented as (B_t), then:

[ \% \text{ change from prior year} = \frac{B_t - B_{t-1}}{B_{t-1}} \times 100 ]

and

[ \% \text{ change from first year} = \frac{B_t - B_0}{B_0} \times 100 ]

These simple calculations add important analytical value by helping users distinguish between a large spending category and a rapidly changing one.

How we built it

We built the project by combining publicly available Richmond budget data with dashboard development in Tableau.

The workflow involved several steps:

1. Data acquisition

We started with structured historical budget data from the Richmond open data portal, which provided budget records through earlier fiscal years in CSV format. That gave us a usable base with fields already linked across agencies, cost centers, accounts, and services.

2. Data modeling and standardization

From there, we cleaned and organized the data so it could be analyzed consistently over time. This included reviewing field naming, aligning agency labels, and making sure the dimensions we wanted to analyze were structured properly for filtering and aggregation.

Because public-sector data is not always standardized cleanly, part of the work involved reconciling small inconsistencies in terminology, spelling, and organizational naming conventions.

3. Calculated fields and analytical logic

We created calculated fields in Tableau to support richer analysis, including:

  • Percent of total budget
  • Percent change from prior year
  • Percent change from first year
  • Dynamic titles and labels based on filters
  • Crosswalks and grouping logic for broader policy categories

This allowed the dashboard to move beyond static reporting and into exploratory analysis.

4. Dashboard design

We then designed the dashboard to balance clarity and flexibility. The emphasis was on making the visuals intuitive for a public audience while still being robust enough for more serious analytical use.

That meant building views that were visually clear, adding definitions for technical budget terms, and using interactive filtering so users could move from broad patterns to specific categories of interest.

What we learned

One of the biggest lessons from this project was that open data does not automatically mean usable data. Even when budget information is publicly posted, it can still be fragmented, inconsistent, or difficult to interpret without substantial cleaning and contextualization.

We also learned how important structure is in public finance storytelling. A budget dataset can contain thousands of rows, but without the right hierarchy and framing, it is hard for users to make sense of what they are seeing. Building this dashboard required us to think not just like analysts, but like translators—turning technical financial records into something understandable and meaningful.

Another major takeaway was the importance of metadata and definitions. Terms like agency, cost center, account, and service category may seem straightforward to budget professionals, but they are not obvious to most users. Providing that context is essential if the dashboard is meant to serve the public rather than only insiders.

Finally, we learned that even relatively simple calculations can significantly improve public understanding. Showing raw budget amounts is useful, but showing change over time helps users recognize trends, growth, and shifts in priorities.

Challenges we faced

The biggest challenge was the data itself.

While older Richmond budget data was available in structured CSV form, more recent budget materials were often published in PDF documents that did not preserve the same level of granularity or relational structure. In the older CSV files, records linked multiple dimensions together—such as account code, cost center, and agency—all within the same row. In the newer PDF budget books, those same dimensions were often broken out into separate tables, making it much harder to reconstruct the same detailed dataset.

That created a real challenge for continuity. We were not just trying to visualize a single file; we were trying to build a coherent budget story across time using sources that were not formatted consistently.

Another challenge was classification. Agencies, departments, and spending categories do not always map neatly into broader themes or policy pillars. Creating those mappings required judgment, consistency, and a clear rationale. This was especially important when trying to connect budget spending to mayoral priorities in a way that felt meaningful rather than arbitrary.

We also had to think carefully about usability. Budget dashboards can easily become cluttered or overly technical. A dashboard that tries to show everything at once often ends up helping no one. So part of the challenge was deciding what to simplify, what to calculate behind the scenes, and what to surface directly to the user.

Why this matters

City budgets are one of the clearest expressions of public priorities. They show where money is going, which functions are expanding, and what local government chooses to fund over time. But when budget information is hard to access or difficult to interpret, it limits meaningful public engagement.

This project matters because it helps make local government more legible. It gives residents and stakeholders a more practical way to explore how Richmond allocates resources and how those allocations change across agencies and years.

In that sense, this dashboard is not just a data project. It is a transparency and civic engagement project.

Next steps

If we continued developing this project, the next priorities would be:

  • Expanding the dataset to include newer fiscal years in a structured format
  • Improving crosswalks between budget books and raw data sources
  • Adding more drill-down capability for account- and service-level analysis
  • Incorporating additional narrative context around major budget changes
  • Refining agency-to-pillar mappings for even stronger policy interpretation

The long-term vision would be a public budget tool that is not only informative, but genuinely empowering for Richmond residents, researchers, and decision-makers.

Built With

  • chatgpt
  • excel
  • rstudio
  • tablea
Share this project:

Updates