The race to represent South and Central Baltimore’s 11th District on the City Council had all the makings of a blowout.

A little-known part-time football coach who had never run for office and only arrived in Baltimore four years ago was up against a City Hall veteran with a massive war chest and a sprawling list of endorsements — the only city candidate backed by Gov. Wes Moore. But when the votes were counted in May’s Democratic primary, including a weeklong examination of thousands of mail-in and provisional ballots, 31-year-old Zac Blanchard pulled off a stunning upset of incumbent Eric Costello.

The margins were thin. Out of nearly 7,000 votes, Blanchard won by just 48.

So what went right for Blanchard — and wrong for Costello? As Blanchard heads to an all-but-certain November victory — he’s unopposed on the ballot — the answers are clearer. Costello made some key missteps, namely a risky endorsement of Sheila Dixon for mayor. And Blanchard responded with a mix of old and new campaign tactics: relentless door-to-door outreach across the district and the first successful use of the city’s new public financing system, which allowed him to turn small-dollar donations into sizable campaign funds.

The Baltimore Banner thanks its sponsors. Become one.

One of the most powerful members of Baltimore’s 15-member City Council, Costello chairs the budget committee and polled voters citywide last year about a possible run for mayor. He was appointed to the council in 2014, handily won an election in 2016 and ran unopposed in 2020.

When Costello first joined the City Council, Blanchard was a senior studying aerospace engineering at the U.S. Naval Academy. He moved to Baltimore in May 2020 to join his wife, Alexa, who is studying at the University of Maryland School of Medicine. By day, he works for the Midtown Community Benefits District. By night, he’s the president of the Federal Hill Neighborhood Association and coaches football at Digital Harbor High School.

Blanchard said entering his name into the race was one of the toughest decisions he’s ever made. The timing wasn’t great: His wife is in the middle of an eight-year dual doctorate program and their baby, Jude, hadn’t turned 1 yet.

One of his main reasons for running was a belief that some of Costello’s actions were “not appropriate for an elected official” and often in his own political interests, rather than those of his constituents. In October 2022, Blanchard called out Costello for voting against a bill that would decrease towing fees while picking up campaign donations from towing companies.

Blanchard was a known face in Federal Hill through his coaching and work with the neighborhood association, and a few neighbors had encouraged him to challenge Costello. After five months of talking about whether he should run, Blanchard and wife gave it the green light. Nobody ran against Costello last time around, and it was a “put up or shut up point.”

The Baltimore Banner thanks its sponsors. Become one.

Blanchard was backed by a few local progressive organizations, like Bikemore and the Jews United for Justice Campaign Fund. Costello had one of the largest public employee labor unions and high-ranking state lawmakers and law enforcement officials.

Blanchard hadn’t taken a political donation before he registered his campaign committee in October. Costello started the race with $500,000 in the bank.

To contend with his financial disadvantage, Blanchard tapped the city’s public financing system, which requires candidates to forgo donations of more than $150 and all corporate, union and political action committee contributions. The city uses a formula to match the small-dollar donations, allowing candidates like Blanchard to stay competitive with well-funded opponents.

Using the program, Blanchard turned about $30,000 in small donations into $160,000. He spent nearly all of it. The program didn’t just make it easier for him to build up his campaign account, he said, it let him run for office without worrying about pleasing big donors, a major issue he has with politics.

Public financing also gave him a contrast to his opponent. Blanchard spent nearly $70,000 on mailers, including one that replicated a lottery ticket emblazoned with “COSTELLO CASH” in gold letters, promising residents that they could “win BIG!” by donating to the incumbent. Many of his campaign materials hammered Costello for his campaign funders, which included portions of the Smith family, whose members run prominent Baltimore-area businesses like Sinclair, Inc., Atlas Restaurant Group and the Baltimore Sun.

The Baltimore Banner thanks its sponsors. Become one.

“My opponent had a weakness that people cared about, that I could easily distinguish myself from,” Blanchard said. “And we knew we just had to do that.”

A mailer sent by Blanchard's campaign is designed to look like a scratch-off lottery ticket, saying: "Make a donation to Councilman Eric Costello and you could win BIG!"
Mailers sent by 11th District Democratic primary winner Zac Blanchard’s mailers slammed his opponent, Councilman Eric Costello, for his campaign funders. (Adam Willis)

Costello blew through more than $145,000 in April alone. He used some of his campaign capital to boost other candidates in key races this cycle, including 1st District council candidate Liam Davis, 3rd District council challenger Margo Bruner-Settles and Dixon, all of whom came up short.

Costello did not respond to multiple requests for an interview for this story.

His endorsement of Dixon, who challenged Mayor Brandon Scott in the mayoral primary, was a political gamble that may have cost him: Scott toppled Dixon by 13.9 percentage points.

Costello was the only council member to publicly align himself with Dixon, who resigned from the mayor’s office in 2010 as part of a plea deal on federal corruption charges. Blanchard alleged in May that Dixon offered Costello the city administrator position in exchange for his endorsement if she was elected. Costello denied making any backroom deals.

The Baltimore Banner thanks its sponsors. Become one.

The endorsement raised questions for many voters. Christopher Murrow, a 33-year-old Riverside accountant, said “the bar is pretty low” for him when choosing his representative on City Council.

“You have to avoid the negativity, not so much impress me,” he said.

Murrow was always planning on voting for Scott. He saw Dixon’s criminal history as a disqualifier. So Costello’s endorsement made the incumbent fall short of Murrow’s already low bar.

“If he didn’t endorse her, I probably would’ve voted for him. It reeks of bad signals,” Murrow said. “It was a little difficult because Costello — Dixon endorsement aside — is a really good representative.”

Costello was known by many around the district for being quick to step in when constituents asked for help. In an interview earlier this spring, he said he’s assisted “tens of thousands” of constituents with service requests and aided city residents outside his district when they needed attention from higher levels of government.

The Baltimore Banner thanks its sponsors. Become one.

Some voters, however, felt Costello had been focusing more on pleasing donors and developers than South and Central Baltimore residents.

For example, when Under Armour booted a beloved Locust Point garden to put the land up for sale, despite a petition from about 1,300 residents to save it, Costello was not of help, said Dave Arndt, the garden’s manager. Arndt reached out to Costello, asking who in city government could help save the garden — or find it a new home.

“He’s just like, ‘You’re on your own. I don’t really work well with the city administration or its agencies, so you just need to do it yourself,’” Arndt said.

Arndt, who moved to Locust Point four years ago, feels something changed about Costello in recent years. When he first moved to the neighborhood, Costello was quick to respond to his emails.

Over the last few years, Arndt said, Costello has been “phoning it in.”

The Baltimore Banner thanks its sponsors. Become one.

Julia Keller, a 56-year-old fundraising professional, differed from many of her friends in her vote for Costello. She always found Costello to be a helpful representative, like when he gave her clear instructions how to deal with a city-issued footway violation. But some of her neighbors were “rubbed very wrong” by Costello, who was known for having a “short fuse.”

Andrew Goodman, 43, was voting in the district for the first time, and he saw Costello as a “responsible councilman,” but he was looking for someone new. He added that Costello’s endorsement of Dixon “betrayed the public trust.”

His wife, however, told him she had reservations about Costello’s character.

“She thought Costello was the sort of person that if you put a Blanchard sign in front of your house, it might cost you down the line in terms of constituent services,” he said.

But even with a flawed incumbent, Blanchard still needed introduce himself to voters and make his case.

Armed with about 40 volunteers who used an Excel spreadsheet to sign up for door-knocking shifts, Blanchard and his team set out on a full-fledged blitz of the district. He estimates knocking on 20,000 doors, often returning to homes multiple times.

Blanchard knocked on the door of Shane Gabriszeski’s rowhouse on a cold day last December and spent an hour in the living room talking about his vision for the city — one that is more walkable, has far fewer vacant homes and prioritizes vocational training for Baltimore’s youth.

The interaction stuck with Gabriszeski and his husband when they checked their ballots for Blanchard. Gabriszeski also voted for Dixon, citing low crime rates when she was in office.

Blanchard said when entering the race he didn’t realize that so many residents were dissatisfied with Costello.

“It wasn’t like I really thought that there was a huge groundswell of opposition to the guy, and I was trying to take advantage,” Blanchard said. “I really thought he shouldn’t be in, so I ran against him.”

Still, Blanchard’s opponent sometimes made the job of his volunteers easier.

“There were so many people who were like ‘You’re running against Costello, you’ve got my vote! And didn’t even ask for Zac’s name,’” said Maddie Ulanow, one of Blanchard’s door-knockers.

Blanchard also tapped social media — particularly, Reddit — to get his message out. Early in his campaign, he opened up an “ask me anything” on the platform, where he talked about everything from why New Orleans is his favorite city other than Baltimore to how he would have saved the Locust Point Community Garden.

Blanchard thinks the bike lane and public transit-obsessed Redditors were already inclined to vote for him, and that the number of users on the platform who happen to live in his district was probably tiny. If anything, he said, Reddit helped him recruit volunteers.

Costello has been quiet since he conceded the race in May. He oversaw a markedly calm passing of the city’s budget and has posted once on social media since his concession — about a fire at a Federal Hill church.

Blanchard is already starting to get questions from constituents, which he says he can’t help with until he has the authority and staff of a council member. He’ll quit his day job when he is inaugurated to the council and will spend one last season on the sidelines at Digital Harbor, where he’s moving to a new role as quarterbacks coach.

Clarification: This article has been updated to clarify that Jews United for Justice Campaign Fund supported Blanchard.

Baltimore Banner reporter Hallie Miller contributed to this story.