Skip to main content

What the Numbers Say About Our Primary

September 08, 2026

Our campaign released this statement following the Sept 1 Democratic primary:

While the results of the primary election were far from the progressive change our campaign had hoped for, over 24,000 voters in MA-4 voted for a platform of Medicare-for-All, dismantling our corrupt campaign finance system, and ending forever wars.

We were outspent 20:1 in the last two weeks of the campaign by an outside crypto super PAC that coordinated with the incumbent’s campaign. The incumbent’s campaign was forced to run polls and spend on digital advertising for the first time since 2020.

More importantly, we forced the incumbent to the left: co-sponsoring the Citizens over Corporations Amendment to overturn Citizens United 16 months into the congressional session, voting against military funding for Israel for the first time, and rhetorically matching the position of abolishing ICE. He would not have conceded to these popular positions if not for our campaign.

I’m proud that we ran a credible campaign with a dedicated “small army of volunteers” — no paid staff, no campaign consultants. We demonstrated that this self-organizing model of volunteers can be viable, and can be improved in future iterations.

We will continue to fight because we are true believers.

Who voted for us? Where? Did the work we did move anything? Those are the questions any campaign should ask after losing. To answer them, over the past week we joined the precinct and town results to our voter file, our canvassing log, our text-banking log, and Census data. The numbers below are unofficial and come from town clerks’ postings and, for three towns, Associated Press tallies.

The result

We received 24,334 votes out of 94,120 ballots cast across all 35 towns in the district. That is 25.9 percent of all ballots. Counting only ballots cast for one of the two candidates, and setting aside blanks, it is 26.8 percent. This post uses share of all ballots for the district-wide result and for the historical comparison. For town and precinct comparisons it uses the two-candidate share, because several towns, including Brookline and Fall River, do not report blank ballots, and the two-candidate share is the only basis on which every town can be compared.

Turnout was 1.30 times the uncontested 2024 primary in the same towns, 94,120 ballots against 72,676. Thirty-two towns come from clerk postings and three, Millis, Millville and Seekonk, from AP tallies. Where both a clerk figure and an AP figure exist, they differ by a few hundred votes in total and by about three hundredths of a percentage point in share. Certification will move the result by that much and no more.

Bar chart of the challenger's share of ballots cast in every MA-04 Democratic primary challenge to a sitting incumbent, 1970 to 2026: Riopel 16.2% in 1970, Walker 32.5% in 1978, Rosa 9.7% in 1986, Harn 13.2% in 1994, Brown 19.5% in 2010, Rucinski 6.4% in 2018, and Poulos 25.9% in 2026.
Figure 1. Every Democratic primary challenge to a sitting MA-04 congressman since 1970, as a share of all ballots cast. Source: Massachusetts electionstats, town-level totals.

Figure 1 puts 25.9 percent in context. We pulled every MA-04 Democratic primary since 1970 from the Secretary of the Commonwealth’s election statistics. In 19 of the last 28 cycles the sitting congressman had no primary opponent at all. Of the seven times someone did challenge the incumbent, only one did better than we did: Norman Walker, who took 32.5 percent of ballots against Robert Drinan in 1978. Every challenge since then fell well short of ours. The best of them was Rachel Brown’s 19.5 percent against Barney Frank in 2010. Our result is therefore the strongest showing by a primary challenger to a sitting MA-04 congressman since Walker in 1978, and the highest in the 48 years since. It is also worth remembering that the incumbent was unopposed in both 2022 and 2024, so the last time voters in this district had a choice in a Democratic primary for this seat was the open race in 2020.

Where the votes came from

Horizontal bar chart ranking all 35 MA-04 towns by Poulos two-candidate share in 2026, from Sherborn at 40.4% down to Needham at 17.8%, with ballots cast shown beside each bar and the district average of 26.8% marked.
Figure 2. Two-candidate share by town. Lighter bars are towns with a town total only; the lightest are the three AP-tallied towns.

As Figure 2 shows, our vote was spread across the district rather than concentrated in a few strongholds. Half of our votes came from precincts holding 41 percent of all ballots, which is close to what an even spread would give. The best town was Sherborn at 40.4 percent, followed by Millville at 38.4 percent on only 203 ballots, then Hopedale at 32.7, Mansfield at 32.1, Dover at 31.9, Mendon at 31.8 and Brookline at 31.4. The weakest towns were Needham at 17.8 percent, Wellesley at 19.8, Lakeville at 19.9, Swansea at 20.9 and Somerset at 21.7. Newton, the largest town with 17,191 ballots, came in at 25.5 percent, but that average hides almost the entire district range: its precincts run from the weakest in the district, a 20-ballot precinct at 10.5 percent, to some of the strongest at nearly 39 percent.

Who voted for us

We do not know how any individual voted. What we can see is how a precinct’s result relates to the characteristics of the people registered there, which statisticians call an ecological analysis. It describes places, not people. With that said, the pattern in Figure 3 is strong and consistent.

Grid of twelve scatter plots, one per precinct characteristic, each showing Poulos two-candidate share across 145 precincts with a fitted trend line. Share falls with median voter age, share of voters aged 65 and over, median household income, education, supervoter share and propensity score, and rises with unenrolled share, renter share and Hispanic share. Precincts are colored by town, with Needham clustered low and Newton spanning the full range.
Figure 3. Two-candidate share against twelve precinct characteristics, 145 precincts. Dot size is ballots cast. The blue line is a ballots-weighted fit.

Age is the strongest correlate of our vote. Across the 118 precincts where the voter file records dates of birth, our share fell as the median age of registered voters rose, with a correlation of -0.42, and fell as the share of voters aged 65 and over rose, with a correlation of -0.46. A correlation runs from -1 to +1, and these are among the largest in the whole analysis. In a model that accounts for income, education, party mix and other factors at the same time, age is the only characteristic that stays significant: each additional year of median voter age in a precinct was worth about 1.1 percentage points less for us, and the range of plausible values, the confidence interval, runs from about half a point to 1.6 points.

The other relationships point the same direction. Our share was lower where household incomes were higher, with a correlation of -0.39, where more adults held graduate degrees, at -0.34, where more voters were supervoters who vote in every primary, at -0.34, and where our own turnout model scored the electorate as most likely to vote, at -0.30. Our share was higher where more voters were unenrolled rather than registered Democrats, at +0.27, where more households rent, at +0.28, and where more residents are Hispanic, at +0.25. Older, wealthier, highest-propensity precincts, which is a fair description of Needham, Wellesley and much of Newton, stayed with the incumbent. Younger, more unenrolled, more renter-heavy precincts came to us.

Election day beat early voting

Left: grouped bars for Mansfield, Mendon, Needham, Sharon and Taunton comparing Poulos share among early and mail voters with share among election-day voters; election day is higher in four of five towns. Right: scatter of 21 precincts in Mansfield, Needham and Mendon with election-day share on the vertical axis and early share on the horizontal, nearly all above the equal line.
Figure 4. Early and mail voters versus election-day voters in the five towns that report the split.

Figure 4 covers the five towns, Mansfield, Mendon, Needham, Sharon and Taunton, that report early and mail ballots separately from election-day ballots, 18,459 ballots in all. Among early and mail voters in those towns we won 19.9 percent of the two-candidate vote. Among people who voted on election day we won 28.0 percent, so election day beat early voting by 8.1 points. The gap was positive in four of the five towns: 14.2 points in Mansfield, 7.3 in Sharon, 5.3 in Taunton and 5.1 in Needham, with Mendon the one exception at -1.9. The people who voted early were the incumbent’s electorate. The people who decided late, or who were reached late, were ours.

Precincts whose ballot count grew the most over 2024 gave us a higher share, with a correlation of +0.31 at precinct level and +0.39 at town level, while precincts with the highest overall turnout gave us less: turnout growth predicted our share, and new primary voters were our voters. The Bristol County cities where turnout fell or barely moved, Fall River at 0.92 times its 2024 count, Swansea at 0.95, Somerset at 1.02 and Taunton at 1.16, were all below-average towns for us, while Hopedale at 1.74 and Mendon at 1.63 were among our best.

What canvassing did

Volunteers knocked 33,124 doors at 30,208 households. Someone answered at 4,948 of those households, and 1,102 households were logged as supportive or leaning supportive. Eighty-three percent of knocks found nobody home. Three quarters of all knocks happened from August 3 on.

Four panels of coefficient estimates with 95 percent confidence intervals showing the effect of door knocks per registered voter on 2026 outcomes across five model specifications. The raw estimate is negative; adding pre-period levels and covariates moves it to near zero with wide intervals; adding town fixed effects gives a positive estimate of about 1.8 points per 0.1 knocks per registered voter.
Figure 5. Estimated effect of door knocks per registered voter, in percentage points per 0.1 knocks, across models that add progressively more controls. Bars are 95 percent confidence intervals.

Figure 5 compares each precinct’s swing against its 2024 baseline to how heavily it was canvassed, controlling for prior results, demographics and our own targeting. With the full set of controls, an additional 0.1 knocks per registered voter was associated with 0.4 percentage points of extra swing, but the confidence interval runs from -1.6 to +2.3 points, which means we cannot tell that from zero. Comparing precincts only against other precincts in the same town, the estimate is 1.8 points with an interval of 0.9 to 2.6. The entire difference between those two answers is two heavily canvassed precincts in Wellesley, a town that gave us 19.8 percent. Translated into votes, canvassing was worth somewhere between a few hundred and about 1,400 of our 24,334. A simple reach-based ceiling points to the low end: only 4,948 households answered the door, and even if one conversation in ten moved a vote, which is far above what field experiments usually find, that is about 500 votes.

Two scatter plots comparing the share of doorstep conversations logged as supportive with the actual Poulos share, for 71 precincts and 26 towns. Points trend upward but sit below the 45-degree line, showing that door IDs ranked areas well but overstated support.
Figure 6. Doorstep support rate against actual vote share. The dashed line is where IDs would equal votes.

Figure 6 shows that among precincts with at least ten conversations, the share of conversations logged as supportive correlated 0.54 with our actual share. The IDs ranked precincts well but overstated the level: a precinct where 40 percent of conversations were supportive typically delivered about 30 percent. Reach also varied enormously by town, from 8 percent of knocks answered in Brookline and 9 percent in Attleboro to 20 percent in Newton and 26 percent in Milford.

What texting did

Line chart of cumulative contact volume by week from May to September 1: texts sent rising to 346,742, unique voters texted to 184,646, texts delivered to 226,327, door knocks to 33,124 and text replies to 15,023. Almost all activity occurs from mid-July on, with the election-day wave of August 30 to September 1 shaded.
Figure 7. Cumulative doors, texts and replies by week. The shaded band is the election-day wave.

The text program, charted in Figure 7, was enormous for a campaign with no staff. Volunteers texted 184,646 voters, 31.5 percent of everyone registered in the district, with 346,742 messages. 11,057 voters replied. Of those, 6,996 asked us to stop, and the rest sorted into 771 supportive, 1,088 opposed, and smaller groups who had already voted, gave a wrong number, or were undecided. Banking produced 895 supporter IDs. Phone calls were negligible, 607 voters called and 77 reached.

Three panels. Left: share of voters with a mobile number and share texted, by propensity score bin, rising from about 10 percent at the lowest scores to over 80 percent at the highest, with the two bars nearly identical in every bin. Middle: reply rate and supporter ID rate by propensity bin. Right: share texted by age bracket, highest for voters 65 and over.
Figure 8. Texting followed the turnout model. Nearly every voter with a mobile number on file was texted, and mobile numbers were bought for the voters the model scored highest.

To measure an effect you need a comparison group of similar voters who were not contacted. We texted 97.7 percent of every voter for whom we had a mobile number, so texting had no comparison group. Worse, as Figure 8 shows, the mobile numbers themselves were purchased for the voters our turnout model scored highest, and that model was built on past primary voters. The texted voters had a mean propensity score of 0.23 against 0.11 for the district, and supervoters were 15 percent of them against 6 percent of everyone. In other words, the phone list pointed at the incumbent’s electorate. A naive regression attributes over 10,000 votes to texting, which is not credible for a program whose reply rate was 6 percent, and it is exactly the artifact one expects when the treatment is a deterministic function of the targeting model. The one measure with any independent variation, the share of high-propensity voters in a precinct who were texted, shows 0.3 points per standard deviation within towns, with an interval from -1.0 to +1.6. That is the most defensible statement available, and it is a shrug.

What we would do differently

These are lessons for the self-organizing volunteer model, and each one comes straight from the numbers above.

The first is to randomize a holdout. With 33,000 knocks and 185,000 texted voters, holding back a random 10 percent of walk-list households and a random 5 percent of the phone universe would have cost almost nothing and would have made both channels measurable from the post-election voter history. As it stands, neither is.

The second is to target the electorate that actually moved. Our voters were younger, more often unenrolled, more often renters, in precincts whose turnout grew over 2024, and they voted on election day rather than by mail. Our turnout model, and therefore our phone list and text program, was built around habitual primary voters, who were the incumbent’s. Next time the model should be built for new primary voters, and the phones should be bought for them. The early-vote gap also argues for a real election-day turnout program, since the people we needed showed up in person and late.

The third is to canvass where the swing was rather than where the volunteers lived. The most heavily canvassed third of precincts was dominated by Newton, Needham, Attleboro and Wellesley, precincts with the highest education, income and propensity in the district, which is the profile that voted most for the incumbent. Millville, Mansfield, Hopedale, Mendon, Plainville, Blackstone, Bellingham and Norfolk, all at 30 percent or better, received between zero and 931 knocks each. The door IDs, which ranked precincts well, should be used to allocate volunteers, not to forecast the result.

The fourth is to fix the not-home rate and start earlier. Reach per knock ranged from 8 percent to 26 percent by town, so scheduling for weekday evenings and weekend afternoons, and a second pass on not-homes, could have doubled conversations at the same cost. Three quarters of knocks and most first texts came after August 3.

The key takeaways, each one drawn from the numbers above:

  • We won 24,334 votes, 25.9 percent of all ballots across all 35 towns, the strongest primary challenge to a sitting MA-04 congressman in 48 years.
  • Age was the strongest correlate of our vote, and each additional year of median voter age in a precinct cost us about 1.1 points.
  • Election day beat early voting by 8.1 points in the five towns that split the count, so the voters we needed showed up in person and late.
  • Turnout growth predicted our share, with correlations of +0.31 at precinct level and +0.39 at town level, so new primary voters were our voters.
  • Canvassing was worth a few hundred to about 1,400 votes, and 83 percent of knocks found nobody home.
  • Texting reached 184,646 voters but had no comparison group, so its effect on votes cannot be estimated.
  • Randomize a holdout next time: 10 percent of walk-list households and 5 percent of the phone universe would have made both channels measurable.

None of this diminishes what a volunteer campaign with no staff and no consultants accomplished. It is what such a campaign learns when it keeps its data and is willing to look at it.

A note on methods

The full analysis exists as code, tables and figures: 145 precincts in 26 towns with precinct-level results, 35 towns in all, joined to the voter file, the canvassing and text-banking logs, and American Community Survey tract data. Regressions are weighted by ballots with standard errors clustered by town. All 2026 figures are unofficial and will change slightly on certification; three towns rely on AP tallies. The historical table, with links to every source election on electionstats, is here. If you want the underlying tables or code, write to us.