Pabulib
Participatory Budgeting Library
Pabulib (stands for PArticipatory BUdgeting LIBrary) is an open collection of participatory budgeting (PB) voting data from cities around the world. We define a common schema, collect raw vote / project dumps, and publish them at pabulib.org.
Why me?
I maintain the project - collect the data, process and make it usable.
Reports
Dataset Snapshot
Cities
16
Projects
29 718
Votes
6 332 143
Files
1303
Last update: May 2025
Besiades Poland, we have also data from Netherlands, Switzerland and France. In addition, we have some data from US and Canada (but we marked them as Stanford Dataset). That gives us data from 6 countries!
Why the Data Matters
It was created with academic purposes in mind. Specifically, there is a field called Computational Social Choice (COMSOC), a relatively recent area of research focused on analyzing methods of collective decision-making.
Basically, we aim to increase happiness in the society. As part of it, we focus on Participatory Budgeting. As I am from Poland, let's take a polish example. Currently, the vast majority of Polish cities, in participatory budgeting, select projects that received the most votes, as long as the budget allows.
Case 1: possible one scenario
The city has a total budget of 500,000 PLN to allocate for participatory budgeting. Projects are selected based on the number of votes they receive, and they are funded in order of highest to lowest votes, provided the remaining budget is sufficient to cover the project's cost. If a project's cost exceeds the remaining budget, it is rejected due to lack of funds:
Project | Cost (PLN) | Votes | Status | Reason |
---|---|---|---|---|
City Festival Organization | 100 000 | 180 | Approved | |
Playground in the City Park | 200 000 | 150 | Approved | |
Fountain Construction in City Center | 250 000 | 140 | Rejected | No more funds |
Bike Path Renovation | 150 000 | 120 | Approved | |
Tree Planting in Neighborhoods | 80 000 | 90 | Rejected | No more funds |
But... is it really fair? Let's take another example.
Case 2: edge case scenario, but to highlight the problem
In this scenario, we have a city with two districts, one (let's name it creatively District A) representing 51% of the population and the other (B) 49%. There are 6 projects, split equally between both districts:
- Two large projects (one in each district) costing 300,000 PLN.
- Two medium projects (one in each district) costing 150,000 PLN.
- Two small projects (one in each district) costing 50,000 PLN.
Voting Scenario:
In this edge case, all voters in each district vote only for the projects in their own district.
Since the larger district (51% of the population) has the majority of votes, only the projects in this district will receive enough votes to be funded.
The smaller district, despite having its own projects, will not get any projects funded because it lacks the majority needed:
Project | Cost (PLN) | Votes | Status | Reason | District |
---|---|---|---|---|---|
Large Project in District A | 300 000 | 500 | Approved | District A | |
Large Project in District B | 300 000 | 480 | Rejected | No more funds | District B |
Medium Project in District A | 150 000 | 350 | Approved | District A | |
Medium Project in District B | 150 000 | 340 | Rejected | No more funds | District B |
Small Project in District A | 50 000 | 100 | Approved | District A | |
Small Project in District B | 50 000 | 90 | Rejected | No more funds | District B |
This outcome demonstrates a key flaw in participatory budgeting when district sizes and voter distribution are uneven: the larger district can dominate the process, and only their projects are realized.
OK, but... what can we do about it?
So, we gather this data so that wise people can come up with better solutions. To verify if their ideas are correct and whether they will work in real life, they need data to back them up. That's where pabulib comes in :).And⦠to not just pay lip service: they have developed a new method for counting votes. The voting process remains the same, but the way the votes are counted is different. This method is called Equal Shares, and it's well explained here:
And it was already implemented in Participatory Budgeting! In
Wieliczka's Green Budget 2023!
But this is just an example how our data can be used. Hopefully, it will prove even more valuable.
Get Involved
Want to contribute ideas or code? Reach out or open an issue on GitHub.