Back to homepage

Why I “think” LA's mayor race ends Bass vs. Raman

Karen Bass is going to November no matter what. The real race is for the second ticket, and after building a little two-lever model and stress-testing it against the registration, the polls, and the ballots still sitting uncounted, I've talked myself into Nithya Raman edging out Spencer Pratt. Here's the whole reasoning, caveats and all.

By Akash Shaji · June 4, 2026, 7:30pm PDT · ~64.3% counted · The forward numbers are my estimates, not predictions

Where things stand

CandidatePartyVotesShare
Karen Bass (incumbent)D195,44935.1%
Spencer PrattR163,54929.4%
Nithya RamanD (progressive)130,47323.4%
Others (long tail)various~67,000~12.1%

LA's mayoral primary is nonpartisan: clear a majority and you win outright, otherwise the top two advance to a November 3 runoff. Bass at 35% is miles from a majority but locked into first. So the headline number is a red herring. The entire contest is the second slot, and it's Pratt (R) vs. Raman (D), with Pratt up by 33,076 votes. The only question that matters: does the November ballot read Bass vs. Pratt or Bass vs. Raman?

Everything rides on how the ~311,000 ballots still uncounted break. So I built a model to pull that apart.

The model: two levers, and all three candidates move

I didn't want a single "who's winning" dial. I wanted to separate the two different things that are actually going on in the late count. So the model has two independent levers acting on the remaining ballots:

The nice thing is every candidate moves: Pratt rises with A, Bass falls as either lever climbs, and Raman falls with A but rises with B. Drag the two sliders and watch the second ticket flip.

Projected finish

He's at 29.4% of the count. Late mail is heavily Democratic, so this should fall.
She's at 40% of Democrats now. Younger late mail pushes this up.
November runoff

Outcome map — Lever A (horizontal) vs. Lever B (vertical)
Bass + Raman runoff (Raman takes #2) Bass + Pratt runoff (Pratt holds #2)
The white dot marks the current sliders. Bass finishes first everywhere on this map; the only question is who takes second.

Here's the full 3×3, from "nothing changes" to "everything breaks Raman's way":

#Late-mail D-skew (A)Age/prog. skew (B)BassPrattRaman#2Margin
1NoneNone (40%)35.1%29.4%23.4%PrattPratt +51.7k
2NoneModerate (50%)33.0%29.4%25.5%PrattPratt +33.5k
3NoneStrong (60%)30.9%29.4%27.6%PrattPratt +15.3k
4Moderate (22%)None (40%)36.7%26.7%24.5%PrattPratt +19.5k
5Moderate (22%)Moderate (50%)34.3%26.7%26.8%RamanRaman +1.0k
6Moderate (22%)Strong (60%)32.0%26.7%29.2%RamanRaman +21.5k
7Strong (15%)None (40%)38.2%24.2%25.5%RamanRaman +11.0k
8Strong (15%)Moderate (50%)35.6%24.2%28.1%RamanRaman +33.6k
9Strong (15%)Strong (60%)33.0%24.2%30.7%RamanRaman +56.3k

Two things jump out. Bass finishes first in all nine. She's never in danger; this is purely a fight for second. And the second slot flips along a diagonal: Bass+Pratt in 4 of 9, Bass+Raman in 5 of 9.

The structural punchline: only Lever A can knock Pratt out. Lever B just shuffles votes between the two Democrats. Raman could win 70% of the Democratic vote and still lose to Pratt if the late mail isn't bluer, because nothing in Lever B touches Pratt's pile. Lever A is the load-bearing wall; Lever B only decides which Democrat gets to cash it in.

Want that as a probability instead of a grid? Run the likely-moderate settings (Pratt 22% of the remaining, Raman 50% of Democrats) through 50,000 simulations, letting each lever wobble, and the coin flip is literal:

Baseline forecast: about 51% Bass+Raman versus 49% Bass+Pratt, with the final-margin distribution centered on zero.
50,000 simulations at the model's "likely moderate" center, on the 64.3% count: about 51% Bass + Raman, 49% Bass + Pratt, with the final-margin distribution sitting right on top of zero. A genuine toss-up.

Why I trust those lever settings: the evidence

This is where I went from "fun model" to "okay, I actually believe this." Neither lever is a guess. There's data pinning each one down.

Lever A (the blue shift) is the strong one, and the ballot data nails it

The composition of what's left is heavily, structurally Democratic:

Put those together and the remaining pile is the late-returned mail: the bluest, most-Democratic slice of the electorate, with the Republican vote already banked in the count so far. Registration backs this up. LA County is ~52% Democratic / ~19% Republican, and the City of LA is bluer still (Republican registration closer to ~13%), per CA SoS, Feb 2025. Pratt is pulling 29.4% off a 13 to 19% Republican base, which means he's already maxed out on the early-voting independents and protest voters who break for an outsider. There just isn't much of that left in a late, Democratic mail pile. Pratt's share of the remaining should fall, moderately at least, maybe a lot.

Lever B (the age/progressive skew) is softer, but the polls and crosstabs point the same way

So the levers aren't arbitrary: the ballot composition says A = at least moderate, and the polls plus crosstabs say B = around moderate (~50% of Democrats), maybe a touch more.

The threshold: exactly how much Raman needs

I solved the model for the break-even line, the combinations of the two levers where Raman exactly ties Pratt for second:

And here's the number that made me sit up. At the most defensible central case, moderate on both levers (Pratt 22%, Raman 50% of Democrats, Scenario 5), Raman now edges ahead by about 982 votes. She's half a percentage point over the line. Still essentially a tie, but with this larger remaining pool it has tipped to Raman. (On the earlier ~287k remaining estimate this same cell had Pratt holding by ~1,662; a bigger uncounted pile gives the late-mail skew more room to help the trailing candidate.)

So why do I “think” it's Raman?

Because of where the central case sits, and one thing the grid doesn't show on its own: the two levers are correlated. They're driven by the same people: young, progressive Democrats who vote by mail and return it late. That cohort makes the remaining ballots both bluer (Lever A, hurting Pratt) and more pro-Raman within the Democrats (Lever B). You don't get a strong A with a dead-flat B; they move together.

And the dead-center estimate now has Raman just ahead. She doesn't need a blowout, or even much beyond moderate. Nudge each lever slightly over moderate, which given everything above is genuinely my base case, and the edge widens:

Pratt ~20% of the remaining, Raman ~52% of the Democratic vote → Bass 34.2%, Raman 27.7%, Pratt 26.0%. Raman takes the second ticket by ~14,500 votes.

That's not the model straining at an edge case. It's the central estimate nudged by a point on each lever in the direction every piece of evidence is already pointing. So if I have to call it: Bass vs. Raman in November. Roughly a 58 to 60% call, a lean and not a lock.

The caveats (because this is close enough that I could be wrong)

I want to be honest about how thin the margin is:

How to know if I'm right, in real time

This is the part I like: it's falsifiable as the count rolls in. For each new batch the registrar posts, work out each candidate's share of just that increment (new votes ÷ new total). The test is simple: Raman needs to be beating Pratt by more than ~10.6 points in the new ballots to be on pace to catch him. If the next few drops show her up 12 to 15 on Pratt in the marginal vote, the blue shift is real and she's getting there. If Pratt stays within ~10 of her in the new batches, he holds and I was wrong.

The topline shares barely move day to day; the marginal batch is where the late-mail skew shows up first. That's the number I'll be watching.


Update · June 5, ~71% counted

The first batch came in, and it broke for Raman

When I published this, the model set a clean, falsifiable bar: to erase Pratt's 33,076-vote lead, Raman had to win the remaining ballots by more than ~10.6 points over him. Anything less and Pratt holds.

Then the first big batch landed. The count jumped from ~64% to ~71% in, about 60,000 new votes, and Raman won that batch by +20.6 points over Pratt, nearly double the pace she needed. The second-place gap closed from 33,076 to 20,672, and on the topline Raman climbed 23.4% → 24.9% while Pratt actually fell 29.4% → 28.2%, the exact fade the model expected from a bluer late count.

So I re-centered the two levers on what that batch actually did (Pratt taking just 17.8% of the late vote, Raman 53.1% of the late Democrats) and re-ran the 50,000 simulations. The coin flip became a clear favorite: about 95% Bass + Raman (range 85–100% across how wide I let the levers vary), median final margin Raman +28k.

The one caveat that matters most: this 95% is calibrated to a single batch. It holds only if the remaining ballots keep breaking essentially the way that batch did. One lumpy, geographically skewed drop could pull it back toward the coin flip, and Raman still hasn't actually passed Pratt, she's ~20,000 behind and closing.
Update · June 6, ~78% counted

The gap is nearly gone

The next batch landed, and it broke even harder. Raman won the new ballots by +22.4 points over Pratt, her biggest margin yet. That makes three batches in a row pulling the same way: +13.4, then +20.6, now +22.4 points.

Pratt's second-place lead has collapsed from 20,672 to just 7,494, and on the topline they're now barely a point apart: Pratt 27.3%, Raman 26.2%. At this pace she clears the rest of the gap in roughly the next drop, crossing him somewhere around 82% counted.

Re-running the simulation on these numbers, the forecast tightens from ~95% to about 99% Bass + Raman (range 95–100%, even when I let the levers swing hard against her). The whole distribution now sits on Raman's side of zero:

Updated forecast at ~78% counted: about 99% Bass+Raman, range 95 to 100%, with the entire final-margin distribution to the left of zero.
50,000 simulations re-centered on the latest 71%→78% batch, on the ~78% count: about 99% Bass + Raman (range 95–100%), median final margin Raman +33k.

The one caveat I keep flagging is now all that stands between this and certainty: a sudden Republican-heavy late drop. Nothing in three batches hints at one, but the count isn't finished, and Raman hasn't technically passed Pratt yet (gap 7,494, closing fast).


Update · June 7, ~83% counted

Raman overtakes Pratt for second

With roughly 83% of the expected vote counted, Nithya Raman has passed Spencer Pratt for the second runoff slot, leading 27.1% to 26.7%, a margin of about 3,100 votes. Absent a late reversal with no precedent in this count, she will face Karen Bass in November.

The batch that flipped the order was consistent with the prior releases: Raman carried the new ballots by +22.4 points over Pratt, her third straight drop in that range (+20.6, +22.4, +22.4). The crossover occurred at 83.2% counted, close to the model's projection of ~82%.

With about 146,000 ballots still outstanding and Raman's margin widening with each release, the recalibrated forecast now stands at roughly 99.95% Bass + Raman, with a median final margin near +33,000.

As to when the outcome is settled: Raman already leads, so the only open question is the point past which Pratt can no longer recover. To do so he would need to begin winning the late mail, having lost it by about 22 points in each of the last three batches. That threshold arrives quickly: she is effectively out of reach within the next one or two releases (~88–90% counted), and mathematically secure by ~93%. Certification is scheduled for June 26.

This is the question the model was built to address, Pratt or Raman, and the count has now resolved it.


Update · June 8, final count (~99% in)

Bass and Raman advance

The count is effectively complete, and the result is settled. Nithya Raman finishes second at 29.0% to Spencer Pratt's 25.5%, a final margin of about 29,550 votes, and joins Karen Bass on the November runoff ballot.

The central call, first made back at the 64% baseline when Raman still trailed Pratt by 33,000 votes, held up across every test the model set for itself:

That is the case for this kind of analysis in a single race: measure how the ballots are actually breaking, project it honestly, state the caveat plainly, and let the count settle it. The question this page set out to ask now has its answer. On to November.

Want to see all the math? Open the full model.
The two-lever grid, the break-even frontier, and every formula behind this page, as a live spreadsheet on Google Sheets.