John Sullivan did not win Ripon’s mayoral race on April 7. Official Fond du Lac County results show Theodore Q. Grant defeating Sullivan, 878 votes to 778, a margin of 100 votes. A total of 1,706 ballots were cast in the Ripon mayoral contest, with three unresolved write-ins also recorded.
But that is not the whole story, and it would be a mistake for Ripon to treat it like it is.
That means Sullivan came closer than some may have expected, and he deserves credit for that. He was competitive. He made voters think. He clearly connected with a sizable share of the city. In a local race, that matters. Still, as the old saying goes, close only counts in yard jarts and lemonade. In elections, the only number that matters in the end is who got more votes, and this time that was Grant.
But Ripon residents should not just look at who won and lost. They should also look at what the numbers say about participation. Out of 1,706 ballots cast, only 1,656 votes were recorded for the two named mayoral candidates, plus three unresolved write-ins. That leaves 47 ballots that were cast but did not produce a counted vote in the mayor’s race. In plain English, dozens of people took part in the election but did not cast a valid counted vote for mayor.
Think about that.
Forty-seven people took the time to vote, but did not cast a valid counted vote in the race for mayor?
That alone should get people’s attention.
Then compare that to the Ripon Supreme Court totals. In the Ripon precincts, the Supreme Court race drew 1,686 recorded votes. That means 27 more people voted in the Supreme Court race than in the mayor’s race??
So yes, Ripon voters showed up for the big statewide contest. But a noticeable number of them skipped the local race that would have the most direct impact on their own city government.
That makes no civic sense.
If you care enough to vote for Supreme Court, how do you not also vote for mayor?
The answer is simple: too many voters are tuned in to the loudest race on the ballot and tuned out of the race closest to home.
Wisconsinites will debate state politics, national politics, and every cultural controversy under the sun, but when it comes to the office that directly affects city leadership, budgets, priorities, and day-to-day governance, too many either skip it or fail to finish the ballot properly.
That is not just disappointing. It is irresponsible.
And the turnout picture gets worse.
Ripon is a community far larger than 1,706 ballots. However you slice the eligible voter pool, the broader truth is obvious: far too many citizens of Ripon who could have voted did not vote at all.
In a race decided by 100 votes, that matters. It matters a lot.
People love to complain about local government. They complain about leadership, direction, priorities, spending, growth, stagnation, image, and accountability. Then election day comes, and a whole lot of those same people vanish.
That is how cities drift.
Not because nobody cares, but because not enough people care enough to actually vote.
There is a second lesson here too: turnout. Ripon is a city of about 7,716 residents, according to the U.S. Census Bureau’s 2024 estimate. Only 1,706 ballots were cast in the mayoral contest. That city-population figure is not the same as the number of eligible voters, so it should not be used as a formal turnout rate.
Still, it is a useful reminder of how small the participating electorate can be compared with the full size of the community. Ripon’s future was shaped by a relatively small slice of the people who live there.
To be precise, I have not verified Ripon’s exact registered-voter count from an official “State of Votes Cast” report, so I am not going to pretend I can give an exact number of eligible Ripon voters who stayed home. But the broader point stands: a race decided by 100 votes in a city this size should be a wake-up call. There were plainly more than enough potential voters on the sidelines to make a difference, and even among those who did vote, too many did not complete the mayoral line.
Absentee voting also played an important role in the overall election environment.
The City of Ripon promoted absentee-by-mail voting and offered in-person absentee voting at City Hall from March 24 through April 3 ahead of Election Day. That means a meaningful share of civic participation was set in motion before same-day voting ever began.
Election Day is often only the final chapter; much of the turnout story is written in advance through absentee and early voting opportunities.
And this alone is another reality the public should understand: modern elections are no longer just about who shows up on election day.
Absentee voting now plays a major role, and this race was no exception. A high volume of ballots are cast before election day even begins.
That means campaigns are increasingly won or lost before same-day in-person voters ever walk through the doors.
That should be a wake-up call for candidates and voters alike.
For candidates, it means you cannot wait until the final weekend and expect to close the gap.
For voters, it means the old image of election day as the one decisive civic moment is no longer the full picture. A huge part of the electorate is making its choice early, often quietly, and often long before the final public buzz peaks.
So yes, John Sullivan lost. But he was not blown off the map.
He finished within 100 votes, earned 778 supporters, and made this a real race.
That is not nothing.
That is a foundation. If he chooses to stay engaged, build on what he started, and keep speaking to the people who backed him this time, there is every reason to believe his name could matter again down the road.
Ripon’s voters made their decision. Theodore Grant won, and that result could be respected.
But Ripon should also remember what this election revealed: local races still matter, undervotes still matter, turnout still matters, and too many people either stayed home or failed to finish the ballot in one of the most important local decisions on it.
Ripon should take two lessons from this race.
First, John Sullivan proved he belonged in it.
Second, too many people in Ripon either stayed home or failed to complete one of the most important races on their ballot.
And if Ripon is serious about its future, it should not just remember who won. It should ask why so many voices that could have mattered were never heard at all.
That is the real story. Understanding that story just makes common sense. Wouldn’t you agree?
———————————————————-
EDIT NOTE: We have received the following statement from John Sullivan:
The City of Ripon election experience has been eye opening to me and my supporters.
I think I did alright for my first attempt at running for public office. I want to thank
everybody in the City of Ripon and surrounding communities for their support. I can
assure you that this experience will make me better prepared for next time!Although we came up short, this race proved that many citizens care deeply about the
future of Ripon and want stronger conversations around the issues that matter most. I
plan to remain visible, outspoken, and actively engaged in those issues in the days
ahead.


