Research

Concert ticket study

Forty completed negotiations over a block of concert tickets: 20 between two Haikus and 20 between two Opuses, half opened by the buyer and half by the seller. Each agent worked from its owner's private priorities and never saw the other side's.

Results

Joint gain is what the two owners gained together above the 20 points each would have kept with no deal. The most they can gain together is 90. Values are rounded to two decimals here; the downloads keep full precision.

Joint gain in the 40 completed negotiations, in points above both fallbacks (maximum 90)
PairingCompletedMeanMedianSample SDBuyer gainSeller gain
Two Haikus (HH)2057.7457.843.5141.3816.35
Two Opuses (OO)2083.5983.912.4941.8041.79

Source: reader-summary.csv. Efficiency (joint gain ÷ 90): HH 64.15%, OO 92.87%.

Opus pairs gained 25.85 more points on average. Buyers did about equally well in both pairings; almost all of the difference is on the seller side. Every completed negotiation ended in an agreement, and none left an owner below its fallback. The sample SD describes spread among these 20 runs. I report no significance test.

Who gained, by opening order

Mean gain among the 10 completed negotiations in each group, in points above each owner's 20-point fallback
PairingOpenerJoint gainBuyer gainSeller gain
HHBuyer56.7447.179.57
HHSeller58.7335.5923.14
OOBuyer83.3642.9440.42
OOSeller83.8140.6643.15

Source: reader-opener-summary.csv.

Within HH the buyer did better than the seller whichever side opened, and by most when the buyer opened. OO splits were close to even either way. The Opus lead shows up under both openers. These are descriptions of what happened; I ran no test, and the messages don't tell me why.

Setup

Scenario

Northfield Analytics, the buyer, is contracting a block of 40 concert tickets for a staff outing from Marquee Ticket Agency, the seller. Each agent represents one of them and sees only its own private brief. The briefs and the feasible terms are the same in both pairings.

The three terms they negotiated
TermRangeMeaning
unit_price_usd60.00 to 100.00Fictional price per ticket in US dollars, at most two decimal places.
cancellation_fee_pct0.00 to 100.00Fee the buyer pays per cancelled ticket, as a percent of its price.
name_change_notice_hours0.00 to 96.00Hours of advance notice required before an attendee name can be changed. A higher number means earlier notice is required.

How agreements were scored

Each owner scores an agreement in planning points. The briefs say this is a planning score only, not dollars or a real transaction. These are the exact expressions from the delivered briefs:

Buyer points  = 50 x (1 - p/4) + 30 x (1 - r/4) + 20 x (1 - t/4)
Seller points = 20 x (p/4) + 30 x (r/4) + 50 x (t/4)

where p = (unit_price_usd - 60) / 10,
      r = cancellation_fee_pct / 25,
      t = name_change_notice_hours / 24

No agreement: each organization gets 20 points (its fallback).

Gains subtract each side's 20-point fallback. Joint gain adds them:

buyer gain  = buyer points  - 20
seller gain = seller points - 20
net value creation = buyer gain + seller gain
                   = 90 - 0.75 x (price - 60) - 0.3125 x (96 - notice)

The last line is algebra on the formulas above. Maximum joint utility is 130, so the most the two can gain together is 90, reached at a price of 60.00 and 96.00 hours of notice. The cancellation fee moves points from one side to the other and cancels out of the sum. Price doesn't cancel, because the two sides weight it differently. Each side knows only its own formula. The data files call joint gain net value creation.

Design

Protocol

Models and settings

Recorded configuration, both pairings
Models (requested and returned)claude-haiku-5-5, claude-opus-5-5
Thinkingadaptive
Output effortlow
max_tokens4096
Service tierstandard_only
Temperaturenot set
Counted input limit12,000 tokens
Collected27 to 28 October 2026 UTC

The returned aliases matched the requested ones. No dated model snapshot was available, so the aliases identify the configuration only as far as the provider reports it. Collection ran across two days, so I don't claim identical hidden provider state throughout.

Collection history

42 attempts, 40 completed, 2 interrupted

I registered 40 attempts: 20 per pairing, 10 opened by the buyer and 10 by the seller. Thirty-eight completed. Two were interrupted, one in each pairing, both buyer-opening: negotiation-c3rep40-20261027-b03-p06-hh-a4 and negotiation-c3rep40-20261027-b02-p05-oo-a4. Their outcomes are unknown. I don't score them as zero or as no-deals, and I don't guess what they would have produced. The archive records the reason for each interruption.

After seeing those results, I ran one more buyer-opening negotiation in each pairing so that each had 20 completed, 10 per opener: negotiation-c3ext2-20261028-hh-a4-01 (joint gain 53.38) and negotiation-c3ext2-20261028-oo-a4-02 (87.00). They are new negotiations, not replays or replacements, selected to fill the missing opening-order strata, not by desired results. Because I added them after looking at the first 38, the 40-completed comparison is descriptive, not confirmatory. The full history is 42 attempts, 40 completed and 2 unknown: 11 buyer-opening and 10 seller-opening attempts per pairing.

If each unknown is allowed to take any value from 0 to 90 points, the Opus-minus-Haiku mean difference across all 42 attempts lies between 20.33 and 28.90. That is a bound on what the missing outcomes could do to the comparison, not a confidence interval.

The original 40 attempts, as first reported · Dated extension note · Complete assignment log

Limitations

All 42 conversations

Every completed negotiation and both interrupted attempts are below. Each page shows the exact messages, binding actions and private brief each side received. Summaries use two decimals; quotes and data keep their recorded precision.

  1. negotiation-c3rep40-20261027-b01-p01-oo-a4 · OO · buyer opens · 84.75 of 90
  2. negotiation-c3rep40-20261027-b01-p02-oo-a3 · OO · seller opens · 85.50 of 90
  3. negotiation-c3rep40-20261027-b01-p03-hh-a4 · HH · buyer opens · 66.75 of 90
  4. negotiation-c3rep40-20261027-b01-p04-oo-a1 · OO · buyer opens · 83.63 of 90
  5. negotiation-c3rep40-20261027-b01-p05-oo-a2 · OO · seller opens · 79.13 of 90
  6. negotiation-c3rep40-20261027-b01-p06-hh-a2 · HH · seller opens · 58.50 of 90
  7. negotiation-c3rep40-20261027-b01-p07-hh-a1 · HH · buyer opens · 53.25 of 90
  8. negotiation-c3rep40-20261027-b01-p08-hh-a3 · HH · seller opens · 57.63 of 90
  9. negotiation-c3rep40-20261027-b02-p01-hh-a3 · HH · seller opens · 61.38 of 90
  10. negotiation-c3rep40-20261027-b02-p02-oo-a2 · OO · seller opens · 82.13 of 90
  11. negotiation-c3rep40-20261027-b02-p03-hh-a2 · HH · seller opens · 57.00 of 90
  12. negotiation-c3rep40-20261027-b02-p04-oo-a1 · OO · buyer opens · 81.75 of 90
  13. negotiation-c3rep40-20261027-b02-p05-oo-a4 · OO · buyer opens · interrupted · outcome unknown
  14. negotiation-c3rep40-20261027-b02-p06-oo-a3 · OO · seller opens · 86.25 of 90
  15. negotiation-c3rep40-20261027-b02-p07-hh-a1 · HH · buyer opens · 57.75 of 90
  16. negotiation-c3rep40-20261027-b02-p08-hh-a4 · HH · buyer opens · 50.63 of 90
  17. negotiation-c3rep40-20261027-b03-p01-oo-a1 · OO · buyer opens · 83.81 of 90
  18. negotiation-c3rep40-20261027-b03-p02-hh-a1 · HH · buyer opens · 58.13 of 90
  19. negotiation-c3rep40-20261027-b03-p03-hh-a3 · HH · seller opens · 58.13 of 90
  20. negotiation-c3rep40-20261027-b03-p04-oo-a3 · OO · seller opens · 85.50 of 90
  21. negotiation-c3rep40-20261027-b03-p05-oo-a4 · OO · buyer opens · 84.38 of 90
  22. negotiation-c3rep40-20261027-b03-p06-hh-a4 · HH · buyer opens · interrupted · outcome unknown
  23. negotiation-c3rep40-20261027-b03-p07-oo-a2 · OO · seller opens · 83.25 of 90
  24. negotiation-c3rep40-20261027-b03-p08-hh-a2 · HH · seller opens · 58.50 of 90
  25. negotiation-c3rep40-20261027-b04-p01-hh-a1 · HH · buyer opens · 57.94 of 90
  26. negotiation-c3rep40-20261027-b04-p02-hh-a3 · HH · seller opens · 56.25 of 90
  27. negotiation-c3rep40-20261027-b04-p03-oo-a4 · OO · buyer opens · 81.56 of 90
  28. negotiation-c3rep40-20261027-b04-p04-oo-a3 · OO · seller opens · 86.63 of 90
  29. negotiation-c3rep40-20261027-b04-p05-oo-a2 · OO · seller opens · 86.25 of 90
  30. negotiation-c3rep40-20261027-b04-p06-hh-a2 · HH · seller opens · 62.06 of 90
  31. negotiation-c3rep40-20261027-b04-p07-hh-a4 · HH · buyer opens · 59.63 of 90
  32. negotiation-c3rep40-20261027-b04-p08-oo-a1 · OO · buyer opens · 78.00 of 90
  33. negotiation-c3rep40-20261027-b05-p01-hh-a2 · HH · seller opens · 60.50 of 90
  34. negotiation-c3rep40-20261027-b05-p02-oo-a1 · OO · buyer opens · 84.00 of 90
  35. negotiation-c3rep40-20261027-b05-p03-hh-a4 · HH · buyer opens · 55.63 of 90
  36. negotiation-c3rep40-20261027-b05-p04-hh-a1 · HH · buyer opens · 54.38 of 90
  37. negotiation-c3rep40-20261027-b05-p05-oo-a2 · OO · seller opens · 83.13 of 90
  38. negotiation-c3rep40-20261027-b05-p06-oo-a3 · OO · seller opens · 80.33 of 90
  39. negotiation-c3rep40-20261027-b05-p07-oo-a4 · OO · buyer opens · 84.75 of 90
  40. negotiation-c3rep40-20261027-b05-p08-hh-a3 · HH · seller opens · 57.38 of 90
  41. negotiation-c3ext2-20261028-hh-a4-01 · HH · buyer opens · 53.38 of 90 · extension run, 28 Oct
  42. negotiation-c3ext2-20261028-oo-a4-02 · OO · buyer opens · 87.00 of 90 · extension run, 28 Oct

Code

The frozen scorer, offline replay and registration records are in this folder. Run python reproduce.py to recompute the tables, then node source/replay_all.mjs to replay every recorded exchange through the frozen scorer. Neither calls a model. See the reproduction instructions or the code page.

Downloads

Column meanings for the pilot and freight files are on the data page.