Vol. I · Monday, September 7, 2026Louisville, Kentucky
The 120 — Numbers desk
The120
Numbers desk · Tanner Norkus Consulting

Every race in Kentucky is a math problem. I read it straight.

← All dispatches

The read · Jefferson County

Jefferson County's House math: a 340-vote flip gap, a 249-vote hold.

Eighteen state House districts sit inside this county. Democrats hold eleven. Here's the honest math on the other seven — not who wins, but what each one costs in doors.

By Lisa NorkusFriday, August 14, 2026LOUISVILLE
Jefferson County's House math: a 340-vote flip gap, a 249-vote hold.

LOUISVILLE — Jefferson County holds eighteen of Kentucky's hundred state House districts. Democrats hold eleven of them. This piece is about the other seven — and about one number in particular: 340.

That's the certified 2024 margin in House District 31, the East End seat that is now the closest Republican-held House seat in the county. Two years earlier the same seat went by 785. The gap didn't widen in a brutal year for Democrats nationally; it halved — from 785 votes to 340 — which tells you the district is moving, not settled. I'm not going to tell you who wins it in 2026, because I don't sell predictions. I'm going to tell you what each of these seats costs, in the only currency field people respect: doors.

A flip target isn't a district you're owed. It's a district where the gap is smaller than the pool of your own voters who stay home.

The method, so you can check my work: for each Republican-held Jefferson seat I take the last contested margin in raw votes — 2024, a presidential year, with the 2022 midterm beside it since 2026 is a midterm — and set it against that district's current sleeper Democrats: registered Democrats who vote in Novembers but skip primaries, the people a doors program exists to find. Registration comes from the current Jefferson file, results from certified county returns. One boundary note that matters more than it sounds: three of these seats cross the county line — the 33rd into Oldham and Shelby, the 48th into Oldham, the 37th into Bullitt. Every margin below is the full certified district. Every registration, sleeper, and presidential figure covers the Jefferson portion only, because that is the only precinct file I can stand behind. Where that gap changes the read, I say so. That's the turnout lane. But Jefferson's own returns insist on a second lane, and leaving it out would hand you half a target picture: the ticket-splitters. One of these seven seats sat in territory Kamala Harris carried outright in 2024 while electing a Republican to the House on the very same ballots — and the Jefferson portions of two more did the same thing. Those voters aren't asleep; they showed up and split. No turnout program reaches them, because they're already voting. A persuasion program does. Turnout finds the votes you already have; persuasion finds the ones the top of the ticket just proved exist. Read every seat below through both lanes.

The board, ranked by the gap:

HD31 — gap 340 (2024: 12,067–11,727; 2022 gap: 785). Sleeper-Dem pool: 5,501. The pool is sixteen times the gap. At the blended 18-doors-an-hour from Wednesday's piece, that universe fits inside a single disciplined spring — and if spring got spent winning a primary or standing a campaign up, it still fits inside the fall. Call the sleeper pool roughly 3,700 doors: about 200 volunteer-hours, which from an August start is six steady people doing one three-hour shift a week between now and November, with room left for the GOTV pass. Nobody reading this in August is out of time here. Late beats never in this district by exactly 340 votes. And the second lane is live here too: Harris carried this district by 780 votes across all 36 of its precincts on the same day the seat went Republican by 340 — an 1,120-vote swing inside the same ballot boxes. Call it roughly 560 voters who chose a Democrat for president and a Republican for Frankfort. They have names and addresses.

Map highlighting Kentucky House District 31 within Jefferson County precinct boundaries.
House District 31 — entirely inside Jefferson County.

Open District 31 on the data desk →

HD48 — gap 2,114 (2024: 15,195–13,081; 2022 gap: 1,892). Sleeper pool: 4,604. The honest part: this is the one board seat where registration actually runs Republican — 13,589 R to 12,547 D. And here is why registration is the wrong map for this seat. Inside Jefferson County — which cast 23,299 of the district's 28,276 votes, about 82% — Harris beat Trump by 1,446 in 2024, on the very same ballots that sent a Republican back to Frankfort. Roughly 1,800 voters in that stretch picked a Democrat for president and a Republican for the state House in the same booth.

Now the knife, turned on my own best number: the other 4,977 votes come from Oldham County, and there is no precinct-level presidential file I trust for that piece. Oldham runs hard Republican — better than three-to-two on registration alone. Add a plausible Oldham slice back in and the district-wide presidential margin narrows toward even and may well cross it. So I am not going to tell you the 48th is Harris territory, because I cannot show you that it is. What survives the caveat is the thing that actually matters to a field program: several thousand voters inside this district demonstrably split their ballots. They are not asleep, and no turnout program reaches them. That is a persuasion assignment. And the doors here have not gone unknocked — this district has seen plenty of volume over the last two cycles. Volume was never the gap. The list was. Wednesday's piece, applied: the 48th doesn't need more knocks. It needs the right ones.

Map highlighting Kentucky House District 48, which extends into Oldham County.
House District 48 — the shaded part is Jefferson; the seat also reaches into Oldham County.

Open District 48 on the data desk →

HD37 — gap 2,360 (2024: 10,330–7,970). Sleeper pool: 4,391. Southwest county, smaller electorate — which cuts both ways: fewer votes to find, fewer doors to find them behind.

Map highlighting Kentucky House District 37, which extends into Bullitt County.
House District 37 — it also reaches south into Bullitt County.

Open District 37 on the data desk →

HD33 — gap 3,467 (2024: 14,349–10,882). Sleeper pool: 3,725. The only seat on this board where the pool barely clears the gap. That is a real constraint and I won't pretend otherwise — this one needs persuasion, not just turnout. The returns agree: the Jefferson side of the 33rd tilted to Harris in 2024 even as the seat stayed Republican by 3,467. The persuasion room is real; it's just deeper than one cycle.

Map highlighting Kentucky House District 33, which extends into Oldham and Shelby counties.
House District 33 — it reaches into Oldham and Shelby counties; a third of its vote is outside Jefferson.

Open District 33 on the data desk →

HD28 — gap 3,402 (2024: 11,536–8,134). Sleeper pool: 5,201. Registration here is 49.8% Democratic — the paper says one thing, the returns say another, and the distance between them is the work.

Map highlighting Kentucky House District 28 within Jefferson County precinct boundaries.
House District 28 — entirely inside Jefferson County.

Open District 28 on the data desk →

HD29 — gap 3,680 (2024: 14,051–10,371; 2022: uncontested). Sleeper pool: 6,077, the deepest on the board. Registration is nearly even — 15,445 D to 14,817 R — and the result was 15 points apart anyway. Remember the rule: registration is not performance. The gap between a district's paper margin and its actual returns is candidate, drop-off, and persuasion room, all tangled together.

Map highlighting Kentucky House District 29 within Jefferson County precinct boundaries.
House District 29 — entirely inside Jefferson County.

Open District 29 on the data desk →

HD36 — gap 4,237 (2024: 15,601–11,364; 2022: uncontested). Registration 38.4% D. The steepest terrain on the board, listed because honesty means listing it, and because a line left uncontested twice teaches the county's turnout machine to skip whole precincts.

Map highlighting Kentucky House District 36 within Jefferson County precinct boundaries.
House District 36 — entirely inside Jefferson County.

Open District 36 on the data desk →

340 · 5,501 · 16x

The HD31 gap in votes · sleeper Democrats in the district · the pool measured against the gap

Margins from certified 2024/2022 county returns; sleeper counts from the current Jefferson voter file (registered Democrats voting generals but not primaries), via kypolitics.

And one of the eleven seats Democrats already hold belongs in this conversation too: HD38, held in 2024 by 249 votes (8,743–8,494) after a 375-vote hold in 2022. Its sleeper pool is 4,747 — and note what the defense is made of: Trump edged this district's precincts by 245 on the same day Roarx held the seat by 249. She is already winning the split-ticket lane; holding this seat means keeping every one of those voters. Every hour of offense on this board has to be weighed against the hour of defense this seat quietly demands. A county that flips one and loses one has run in place.

Map highlighting Kentucky House District 38 within Jefferson County precinct boundaries.
House District 38 — the 249-vote hold, entirely inside Jefferson County.

Open District 38 on the data desk →

One more honest note on the year: 2026 is a midterm, and midterm electorates are smaller — the 2022 gaps above are the better guide to raw-vote distances than the 2024 ones. Smaller electorates cut margins and budgets: the same 340-vote gap needs fewer conversations in a midterm, and every conversation counts for more.

What I'm watching: which of these seven boards has somebody cutting turf on it by Labor Day. The math above is public — the returns, the registration, all of it. The campaigns that use it will be findable at the doors by September. The ones that don't will find the right precinct list in a drawer the week after.

Disclosure: I work in Kentucky Democratic politics and consult campaigns in this state. I read this county the same way whether or not it's good news for my side — that's the job.

Share this dispatchLinkedInX / TwitterBlueskyThreadsFacebookEmail

— End of dispatch —