Ask Jules Bailey to describe his campaign for Portland mayor, and he proudly says it's lean and mean.
On a recent afternoon, he grabs Vietnamese noodles from a food cart and then heads to his campaign headquarters to call voters. It's a bare room.
"We don't have a huge budget for the campaign. So that means beg, borrow or make yourself," he says, smiling.
A staffer's husband built the long campaign conference table out of particle board and lumber.
"Right after he made them, the smell was so bad, from this cheap particle board," says Bailey, 36. "This whole office smelled like a lumberyard."
The handmade table is on message. Bailey portrays himself as the progressive, small-money alternative to State Treasurer Ted Wheeler. He's capped contributions at $250.
As a member of the Multnomah County Board of Commissioners, Bailey has focused on homelessness and affordable housing. Before that, he spent six years in the Oregon Legislature, where he was well liked by both Republicans and Democrats.
But Bailey, short and boyish with a close-cropped beard, has run a campaign that has seemed, at times, to contradict itself.
In the afternoon he heads to a fundraiser in the Riverdale neighborhood on the outskirts of Portland. It’s at a beautiful white house with multiple chandeliers.
Bailey's stump speech is about Portland's growing pains and housing affordability. Then the host passes around envelopes.
"Do what's comfortable," she tells the room, "but don't do over $250"
That may sound like a lot. But the average donation to Bailey's chief competition, Ted Wheeler, is about four times that much.
Bailey says he's limiting donations because he was disappointed by how much sway money and lobbyists had over the Oregon legislature in his time there.
Like in 2014, he says. That year Bailey was chair of the House Energy and Environment Committee. He worked with a group called Neighbors for Clean Air on a bill requiring tighter regulation of toxic air pollution.
"That bill was in my committee, I twisted arms, and I was successful at getting it out of my committee. It ultimately died later on in the process because of industry lobbing efforts."
Now new science has shined a light on just how bad Portland's air pollution is. Bailey is backed by the Sierra Club and the League of Conservation Voters. He's called for a new city-wide clean air agency.
Less clear is how Bailey would keep his promise to stand up to lobbyists if he's elected.
While Bailey isn't accepting big checks, he has won endorsements from several powerful groups that have clear agendas at city hall. Most notably, he got the nod of the Portland Police Association.
"I've pledged to increase staffing at the Police Bureau," he says. "I've also pledged for more reforms."
The police union has lobbied against reforms even as the U.S. Department of Justice found Portland officers used excessive force against people with mental illness.
The group is responsible for the so-called 48-hour rule, which blocks investigators from talking to officers for two days after a shooting. Bailey says the union has to be a partner in change.
"I bet that if we got down in a room, and sat together with the community and police officers, that we could find common ground on things like the 48-hour rule to address that together."
That position is hard to swallow for some. Wheeler has pointed out that Bailey sometimes waffles on the 48-hour rule. And he's questioned whether Bailey, who doesn't have executive experience, is up for the task of managing the Police Bureau and the city's thousands of other employees.
Bailey says that's the wrong way to look at the job of mayor.
"The mayor is not an executive; the mayor is not a CEO," he says. "We have a weak mayor form of government, where the mayor has to be able to get things done with coalitions, with partners, and in particular, with other city commissioners."
Bailey says his success building coalitions and passing bills in the legislature proves he's up to the task.
Voters will go to the polls to vote in the primary May 17. Bailey doesn't need to win outright to keep his campaign alive. There are 15 people in the race. If no one wins more than 50 percent of the vote, the top two candidates advance to a runoff in November.