Email me

Gaming · · 14 min read · Matt Busel

Filed under Games Game dev Guides

Chris Voss said never split the difference. 1.2M haggles disagree

Chris Voss said never split the difference. 1.2M haggles disagree
On this page · 15 sections
  1. Key numbers
  2. Paying the ask costs you 28%
  3. How I tested it: the deal code, ported line by line
  4. Inside one seller's head
  5. The eight moves
  6. The result: a tie at the top, a cliff at the bottom
  7. Why Voss's ladder stalls here
  8. The bosses: each rule breaks a different move
  9. Selling is the hard side
  10. How to haggle in O'BLOCK, in 60 seconds
  11. Does any of this work at a car dealership?
  12. What this test can't tell you
  13. The numbers so far
  14. Play the sellers yourself, free
  15. Sources

Short answer: In 1.2 million simulated haggles against the 121 buyers and sellers in our game O'BLOCK, splitting the difference and Chris Voss's Ackerman plan finished in a dead heat: both paid about 82.7% of the street price, and splitting closed slightly more deals (93.2% vs 90.5%). The move that actually won was neither. Reading the seller's tell and offering his real number paid 80.4%. Paying the asking price paid 102.8%, which is 28% more for the same pair.

TL;DR: Every seller in O'BLOCK hides a floor that averages 79.6% of the street value and opens at 102.8%, so the ask is padded by about 29%. We ported the game's deal code to Python, checked it against a real recorded deal (it reproduces the $260 counter to the dollar) and played the same 40,000 sellers eight different ways. Voss's 65/85/95/100 ladder ties "split the difference" on normal sellers, loses half its deals when the target is aggressive (48.8% close), and collapses against the boss who raises his floor 5% every time you speak (16% pass). Lowballing and holding closed 0.5% of the time. Every number is in the CSV, and the Halloween event (every buyer in costume) runs until Nov 1.

Key numbers

WhatNumberSource, Oct 24 2026
Haggles simulated1,200,000 (640,000 buys and sells + 560,000 boss deals)Our port of O'BLOCK src/deal.rs
A seller's hidden floor, average79.6% of street (8 in 10 between 66% and 91.5%)200,000-deal sample
A seller's opening ask, average102.8% of streetSame sample
Pay the askpays 102.8%, closes 100%Our run
Split the differencepays 82.8%, closes 93.2%Our run
Ackerman (Voss), target = street valuepays 82.7%, closes 90.5%Our run
Read the tell bar, then offer his numberpays 80.4%, closes 93.4%Our run
Lowball and holdcloses 0.5%Our run
Buyers who will pay the full street price when you sell13.5%200,000-deal sample
O'BLOCK free claims on Steam4,566 (Oct 23 reading)Steamworks, read-only

Download the data (CSV, 136 rows: every move by side, rung and boss rule, with close rate, average price, gain per attempt and offers to close) and the simulator itself (Python, about 230 lines, no dependencies; python haggle-sim.py 40000 reruns all 1.2 million in about 16 seconds).

Animated bar chart, average price paid as a percent of street value by opening move, the same 40,000 O'BLOCK sellers played each way: pay the ask 102.8%, offer the street price 100%, split the difference 82.8%, Ackerman (Voss) 82.7%, open low and take the counter 82.2%, read the bar 80.4%.
Paying the ask costs 28% more than reading the seller. Our port of O'BLOCK's deal code, Oct 24 2026; lowball-and-hold (0.5% close) and the aggressive Ackerman target left off. Rendered with our game engine.

Paying the ask costs you 28%

Start with one real deal. This morning we recorded three opening moves against the same seller in O'BLOCK for our Beat the haggle page. The Plug, in a skull mask for Halloween, has 5 pairs of New Balanced 574. The street says they're worth $61 a pair. He says: "$320. What you got?"

  • Offer all $300 at once: he takes it on the spot. $60 a pair.
  • Open at $195, come up to $250, take the number he names: "Make it $260." $52 a pair.
  • Open at $195 and hold: he walks. "Come back with money."

Same seller, same shoes, a $40 swing from one decision. That's one deal. I wanted to know what happens across all 121 people in the game, thousands of times each, and whether the famous negotiation playbooks hold up when the other side is code you can read.

O'BLOCK deal screen on day 1 at The Block: The Plug, in a skull mask, selling 5 pairs of New Balanced 574 in slate and lime. The street says $195 to $415 for all 5, street $61 each. A note says Hypebeast Hank already offered $263. Offers $195, $250, $260. Big green text: DEAL, $260, under the street, good buy.
The real deal our simulator reproduces: $250 lands inside the counter zone and he says "Make it $260." Recorded in O'BLOCK, Oct 24 2026.

How I tested it: the deal code, ported line by line

O'BLOCK is written in Rust and the whole haggle lives in one file, src/deal.rs. Every person has a patience (how many offers before they walk), a greed (how far their number sits from the real value) and a sharpness (how well they know the market). Each deal also rolls a mood. I ported that file to Python: the floor, the ask, the 12% counter zone, the patience check, the tell bar and all six boss rules. I left out the world-level modifiers that scale the floor and the ask together (weather, neighbourhood taste, your angles), because they move both numbers by the same factor.

Then the check that matters: does the port reproduce the game? In the recorded deal, a rival had already bid $263 for the lot. The game sets the floor to at least $263 x 1.01 = $265.63. My $250 offer sits 5.9% under that, inside the counter zone, so the code names a price 35% of the way from his floor toward my offer: $265.63 - 0.35 x $15.63 = $260.16, said out loud as $260. That's the number on screen. The street band checks out too: $305 for 5 pairs, plus or minus 36%, is exactly the "$195 to $415" the game shows a new player.

Each strategy only gets what a player sees: the ask, the street band, and the replies (the tell bar or a counter). The same 40,000 deals (same seller, same mood, same dice) get played eight ways, so every difference is the move, not luck.

Inside one seller's head

Here's what the code does before you say a word. It takes the real value, blurs it by up to 45% for clueless sellers (sharp ones know it cold), and sets a floor under that by 8% to 38% depending on greed. Then he opens 15% to 50% above his own floor. Two rules decide everything after that:

  • Any offer at or above the floor closes instantly, at your number. He never refuses money and never says "you could have gone lower". Overpaying is silent.
  • Land within 12% under the floor and there's a 55% chance he counters, and the counter is below his own floor. Taking it is the cheapest legal price in the game.

One more thing most players never notice: the middle of the street band is the real value, exactly. The band is a ruler, not a guess.

Diagram of one O'BLOCK seller's numbers on a scale from 60 to 140, value 100. The street band shown to a new player runs $64 to $136. Hidden floor averages 79.6, with 8 in 10 sellers between 66 and 91.5. His ask averages 102.8. A counter zone runs from 12% under the floor up to the floor: a 55% chance he names a price 35% of the way from his floor down to your offer, below his own floor. Any offer at or above the floor closes at once; each miss costs one patience, most sellers walk after 2 to 5 offers.
Inside one seller's head: the floor, the padded ask and the counter zone. O'BLOCK src/deal.rs and our 200,000-deal sample, Oct 24 2026.

The eight moves

MoveWhat it does (buying)
Pay the askSay his number back. The "I hate haggling" move.
Offer the street priceOne offer at the middle of the band. "Fair is fair."
Split the differenceOpen at the low end of the band, then meet him halfway between your last offer and his ask, every round. Take any counter.
Ackerman (Voss)Target = the street value. Offer 65%, 85%, 95%, then 100% of it, the last one a precise number ($99.63, not $100). Take a counter only if it's under target.
Ackerman, low targetSame ladder, target halfway between the band's low end and the value (82%). The "aim high" version.
Lowball and holdOffer half the value and repeat it until he folds.
Open low, take his number64%, 82%, 95%, 105% of value; take the first counter. Move 2 from the recorded deal.
Read the barOpen at the band's low end, read how warm the tell bar is (with a 4% eyeballing error), solve for his floor, offer 1% above it. Take any counter.

The Ackerman plan is the one from Chris Voss's Never Split the Difference: set a target, open at 65%, raise to 85, 95 and 100 in shrinking steps, end on a precise, non-round number. For selling, it mirrors to 135/115/105/100, the way negotiation author Michael Wheeler describes it.

The result: a tie at the top, a cliff at the bottom

Scatter chart of eight buying moves, deals closed on the x axis and price paid as a percent of street on the y axis. Pay the ask: 100% close, pays 102.8. Offer the street price: 97.1%, 100. Split the difference: 93.2%, 82.8. Read the bar: 93.4%, 80.4. Ackerman (Voss): 90.5%, 82.7. Open low, take his number: 89.8%, 82.2. Ackerman with a low target: 48.8%, 73.7. Lowball and hold: 0.5%, 50.
Cheap or closed: reading the bar is the only move that is both. 40,000 paired deals per move, Oct 24 2026.

Against normal sellers, buying:

  • Read the bar: 80.4% of street, 93.4% of deals closed, and only 1.3 points above the seller's real floor. That's 18.27 points of value saved per attempt.
  • Split the difference: 82.8%, 93.2% closed, 16.07 saved per attempt.
  • Open low, take his number: 82.2%, 89.8% closed, 15.99 saved.
  • Ackerman at the street value: 82.7%, 90.5% closed, 15.68 saved.
  • Ackerman with an aggressive target: 73.7% when it closes, but only 48.8% close. 12.84 saved per attempt, because half the sellers walk.
  • Lowball and hold: 0.5% closed. Basically never.
  • Offer the street price: 100%. Pay the ask: 102.8%, 23 points over the floor, every time.

So the book's title gets it backwards, at least in this game: splitting the difference beat the Ackerman ladder by 0.39 points per attempt over 40,000 paired deals. That's small, and I'll call it what it is, a tie with a slight edge. On the block (the softest sellers) Ackerman actually wins, 17.38 to 17.04. Up with the billionaires, where sellers are sharper and less patient, both drop to about 11.5, and splitting is ahead again.

The real lesson isn't which ladder. It's that a ladder decided in advance can't hear the seller, and the seller is telling you his number on every offer.

Reading the bar beat both by more than two points per deal, and it survives a sloppy read: with a 10% eyeballing error it still saves 17.03 per attempt, more than either ladder with a perfect script. With a perfect read it's 19.20.

Why Voss's ladder stalls here

Ackerman is built for a human across the table. Its tricks are psychological: the shrinking raises make the other side feel you're hitting your limit, and the precise final number sounds calculated. O'BLOCK's sellers have no feelings about $99.63. They have a floor and a patience counter, and that exposes the plan's two weak points:

  1. The target is a guess. Set it at the value and you pay about what splitting pays. Set it lower to "aim high" and half the sellers' floors sit above your 100% step, so the ladder runs out and they walk. The 48.8% close rate is that cliff.
  2. Four offers is a lot of patience. 32 of the 121 people in the game start with a patience of just 1 or 2 offers. A four-step plan that wastes its first two offers on 65% and 85% is gambling with the only resource that resets the deal.

Real research backs the part Ackerman gets right. In a classic set of experiments, Adam Galinsky and Thomas Mussweiler (2001) found that whoever made the first offer, buyer or seller, got the better outcome, and that the edge vanished when the other side focused on the first mover's reservation price. Translated: anchors work on people who anchor. Most O'BLOCK sellers don't, so anchoring buys nothing.

Except one. The boss called the Drifter re-anchors on your offers (his number drifts toward a home your offers pull on), and against him the aggressive Ackerman target jumps to a 61% pass rate vs 47% for the standard one. Anchoring works exactly when, and only when, the other side is anchorable. Lowkey the most realistic seller in the game.

Wheeler makes a similar point about the real world: Voss himself says the method fits zero-sum, single-issue deals, and a 65% opener is a non-starter where prices are transparent, like a car lot. O'BLOCK's street band is about as transparent as prices get.

The bosses: each rule breaks a different move

Heat map of boss pass rates, share of 10,000 tries that pay within 8% of the hidden floor at patience 4. Normal seller: read the bar 97%, split 73%, Ackerman 65%, open low 69%, low-target Ackerman 57%, pay the ask 0%. Liar: 20, 59, 50, 49, 47, 0. Mirror: 34, 58, 51, 48, 46, 0. Fog: 61, 58, 51, 48, 46, 0. Silent: 35, 59, 51, 48, 47, 0. Haggler: 5, 22, 16, 14, 4, 0. Drifter: 80, 52, 47, 49, 61, 0.
Each boss rule breaks a different move; the Haggler breaks all of them. Our port of O'BLOCK's boss rules, Oct 24 2026.

The bosses in O'BLOCK gate the next rung of the game, and you pass only if you pay close to their hidden floor. Real bosses allow 4% to 10%; we used 8% and a patience of 4 for all of them, the most common setting. Each rule is a trap for one style:

  • The Liar (Kan Yay) tells you backwards: close reads cold. Reading the bar falls from 97% to 20%, the worst of any sane move. Split the difference, which never looks at the bar, passes 59%.
  • The Mirror and the Silent one blind the bar in other ways (one offer late, or nothing at all). Reading drops to about a third. The scripted ladders barely notice: 48% to 59%.
  • Fog only says cold, warm or close. Reading still wins, barely: 61% vs 58%.
  • The Haggler (Deacon, Madame Oro) raises his floor 5% every time you speak. Everything dies. Best is split the difference at 22%; Ackerman's four steps pass 16%; reading the bar, which spends offers to learn, passes 5%.
  • The Drifter (Elon Tusk) moves his number after every offer. Reading the trend wins, 80%.

No single move beats every boss. Paying the ask passes 0% everywhere, since it's always more than 8% over the floor. If you take one thing from the grid: against a seller who lies, stop listening and run a script; against one who doesn't, stop scripting and listen.

Selling is the hard side

Horizontal bar chart of selling moves, share of 40,000 sales that close and the price as a percent of street: take their first offer 100% at 77.2; read the bar 78.1% at 91.0; split the difference 50.9% at 92.0; open high and take the counter 20.5% at 100.3; ask the street price 13.3% at 100; Ackerman from 135% 10.6% at 106.7; Ackerman with a high target 0.8% at 123.5; ask 150% and hold never closes.
Buyers cap out about 10% under the street; only 13.5% will pay it. Our port of O'BLOCK's deal code, Oct 24 2026.

Flip the table and the numbers get harsh. A buyer's ceiling in O'BLOCK averages 89.6% of the street value, and only 13.5% of buyers will pay the full street price or more. "Nobody pays over the street on purpose" is a literal line in the code.

  • Take their first offer: closes 100%, at 77.2% of street.
  • Read the bar: closes 78.1%, at 91.0%, within a point of their real ceiling.
  • Split the difference: closes 50.9%, at 92.0%.
  • Ackerman from 135%: closes 10.6%. It gets 106.7% when it lands, from the rare buyer who overvalues the pair, and nothing the other 89% of the time.

The selling version of the lesson: if you're holding inventory and rent is due, a 91% sale today beats a 107% sale one time in ten.

How to haggle in O'BLOCK, in 60 seconds

Animated screen recording from O'BLOCK: the player opens at $195 against The Plug, comes up to $250, he answers Make it $260, and the deal closes at $260 for 5 pairs.
Open low, read him, take his number: the whole method in 11 seconds. Real recording, Oct 24 2026, sound off.
  1. Find the middle of the street band. That's the real value. His floor is usually 66% to 92% of it.
  2. Open at the low end of the band (about 64% of value for a new player). It's below almost every floor, so it costs one patience and buys you a reading.
  3. Read the bar. A full bar means you're within a few percent; an empty one means 50% or more off. Jump straight to where the bar says his floor is, plus a hair.
  4. If he names a number, take it. It's below his own floor by construction.
  5. Bosses change step 3. If the tells feel wrong (a Liar, a Mirror, a Silent one), switch to splitting the difference with his ask. Against the Haggler, make your first offer your best one.

Try the 3-move version on the Beat the haggle page or the 1-minute browser toy. For how the lying NPCs were designed in the first place, read A haggling game with one mechanic, so I taught the NPCs to lie, and for what happened when bots tried to break the economy, the 37,800-bot balance test.

Does any of this work at a car dealership?

My take, and it's a take, not a result: the part that transfers is the shape, not the percentages. Real sellers also have a floor they won't tell you, they also pad the ask, and the cheapest information in any negotiation is what the other side's reactions tell you. The game just makes the tell bar visible. A person's tell is a pause, a "let me check with my manager", a counter that comes too fast.

What doesn't transfer: real people anchor (Galinsky's result), get annoyed, and remember you. O'BLOCK models memory too, in a separate file, but I left it out here. And nobody in real life gives you a street band whose middle is the exact true value. Treat this as a clean lab where the other side's rules are known, not as negotiation advice.

Still, I'd bet the headline survives contact with humans: a fixed script, whether it's "always split" or "65/85/95/100", is worse than a script that changes after the first reply.

What this test can't tell you

  • It's a port, not the binary. I matched the recorded $260 deal to the dollar, but the Python random numbers aren't the game's, so averages match the code's logic, not any specific save.
  • World modifiers are out. Weather, taste, angles and memory scale the floor and ask together; rival bids (like the $263 one) raise the floor and squeeze the ask, which makes paying the ask a bit less bad than shown.
  • The reader is idealised. It solves the bar's math exactly, with a 4% reading error. A real player is slower; the 10% error run (17.03) is closer to a human.
  • Single pairs only. Lots get bulk discounts that move both numbers; outlets (stores, auctions) were left out.

The numbers so far

NumberValue, Oct 24 2026Recheck
Best move, buying, normal sellersRead the bar, 80.4% of streetnext balance patch
Split the difference vs Ackerman, gain per attempt16.07 vs 15.68next balance patch
Hardest boss for every moveThe Haggler (best: 22% pass)next balance patch
Buyers who pay street or more13.5%next balance patch
O'BLOCK free claims4,566 (Oct 23)weekly

My bet: if we rerun this after the next balance patch, reading the bar still wins on normal sellers and the Haggler is still the hardest boss in the game. Your turn: when you haggle for real, do you run a script or do you wait for the other side to show you something? And has the Ackerman ladder ever actually worked for you?

Play the sellers yourself, free

Every one of those 121 people is in O'BLOCK, free on Steam. You start with $300 and a shoebox and haggle your way up to selling to billionaires, and the Halloween event runs Oct 24 to Nov 1: pumpkins on every stoop and every buyer and seller in costume. Why this over a paid shop sim: it costs nothing, and the people across the table lie, have rules and hold real numbers you can learn to read. If you've had fun for free, the $4.99 Supporter Pack is how the next event gets made. If something in the game is broken, email support@tensorust.com and we fix it; a real person replies within one business day.

Follow for one checked, data-backed experiment from our games and tools, every day.

Sources

First published here on tensorust.com on Oct 24, 2026. Related: Beat the haggle, O'BLOCK, How the NPCs lie.

Up next

More on GamesSweeney wants rockets. 37,800 bots crashed my vibe-coded gameMy AI-coded game is out now, free on Steam. 37,800 bot runs of its economy: cheating fails on the street, but the finance layer prints $14 trillion. The data.Read it next →

Did this answer your question?

Get the next one by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

More: the author, related reading, share this, a free game

Try it yourself · Like games?

Play O'BLOCK, free on Steam

Start with $300 and a shoebox, end up selling sneakers to billionaires. Haggle with people who lie.

In The Manual: on this topic

Explainers answer one question, short answer first. Guides walk you through it step by step.

Open The Manual →

Read next

All articles →

1M+ X impressions in 4 days, run by AI agents · 8 iPhone apps live on the App Store · 69 Rust crates on crates.io · 520 GitHub stars · O'BLOCK out now, free on Steam

Built by Matthew Busel · code on github.com/Mattbusel · numbers as of Oct 22, 2026, click any to check

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ