This commentary is by KC Becker, who served on the Boulder City Council from 2009 to 2013. She was one of Boulder’s elected state representatives from 2013 to 2021, serving on the House Finance and Capital Development committees. She served two years as House majority leader and two years as speaker of the House.
This November, Boulder voters are being asked to approve up to $400 million in debt, repaid through property taxes, to fund capital improvements across the city. I understand the impulse behind it. Some of these projects are very worthwhile. But I cannot support the measure because the process used to develop it falls far short of the process the city followed for capital improvement projects in the past. And the price tag is too high for a plan this thin on specifics.
I was on the Boulder City Council in 2011, when the city put a capital improvement bond before voters. Then, the process didn’t start with a number and a list handed down from City Hall. It started with people. The city manager assembled a committee of 15 residents who held public meetings over several months. At those meetings, city staff and residents alike could propose and present capital projects, out in the open, in front of their neighbors. That committee then considered all those proposals and built a prioritized list, one that the public had watched take shape from the very beginning. Anyone who wanted to make the case for a project got to make it. The public got to see all the presentations, and city staff had to explain their proposals. Committee members could question any project.
That is what real public involvement looks like. The process didn’t start with a poll in which the city asked how best to persuade residents. Instead, it was a visible and detailed process where the priorities were discussed out loud before a final list was sent to city council for inclusion in a ballot measure.
Just as important, the 2011 measure asked for a modest, sustainable tax increase. A smaller ask meant a smaller list, a tighter scope and far less room for costs to balloon once the money was actually being spent. Discipline on the front end bought discipline on the back end.
This year’s measure asks for a great deal more but offers far less in return. The dollar amount is significantly higher than what Boulder asked for in 2011, but the level of detail about what that money will actually build is far lower. While the 2011 process gave voters a specific, publicly vetted list of projects, this year’s language is vague, giving the city wide latitude to change which projects get built, how much gets spent on any of them, and how they’re prioritized.
That combination of more money, less specificity and built-in flexibility to move the goalposts is not a recipe for public confidence. It’s the opposite. Voters are effectively being asked to write a check first and find out what it paid for later.
Real cost estimates need to be produced for each project on the list, not a single lump sum covering everything at once. And those estimates can’t just be handed to voters as finished numbers. The public needs to know how each estimate was built: what assumptions went into it, what scope it assumes, what contingencies it includes, and what would cause it to change.
If the city wants Boulder voters to trust that this money will be spent well, it should show its work the way it did in 2011: Bring back the public process, not just a public relations campaign. Hold the open meetings. Let residents and staff propose and defend specific projects in front of each other. Publish a real, prioritized project list, with real per-project cost estimates and the reasoning behind them, before asking for a dollar, not after. And for projects of this scale, take voters to see them. Offer tours of the sites and facilities in question, so people aren’t asked to fund something they’ve only seen in a slide deck.
Boulder has already proven it can run a capital improvement process that voters can watch, question and trust. This measure doesn’t live up to that, and until it does, I’m voting no.

