TAI BUI
Back to curriculum
BuildPython

Negotiation and Bargaining

Agents negotiate resources, prices, task allocations, and terms, and the 2026 benchmarks agree on the lessons. NegotiationArena (arXiv:2402.05863) shows LLMs can improve payoffs ~20% by adopting a "desperation" persona. "Measuring Bargaining Abilities" (arXiv:2402.15813) finds that the buyer role is harder than the seller role and that scale does not help, while its **OG-Narrator** (a deterministic offer generator plus an LLM narrator) pushed deal rate from 26.67% to 88.88%. The Large-Scale Autonomous Negotiation Competition (arXiv:2503.06416) ran ~180k negotiations, and the agents that **concealed their chain of thought** from counterparts won. Bhattacharya et al. 2025, scoring on Harvard Negotiation Project metrics, ranked Llama-3 most effective, Claude-3 most aggressive, and GPT-4 fairest. Here you implement Contract Net Protocol (the FIPA ancestor, Lesson 02), build an LLM-style buyer against a deterministic seller, run an OG-Narrator decomposition, and measure how deal rate moves with each structural choice.

TIME: ~75 minutesPREREQUISITES: Phase 16 · 02 (FIPA-ACL Heritage), Phase 16 · 09 (Parallel Swarm Networks)

Learning Objectives

  • Explain why LLMs that decide and narrate an offer in one step close fewer deals than a split design.
  • Apply the OG-Narrator decomposition by pairing a deterministic offer generator with an LLM narrator.
  • Run a Contract Net cfp, propose, and award cycle and defend the award rule you pick.
  • Design a bargaining protocol that keeps the private scratchpad out of the public channel.

Problem

Two agents need to agree on a price. Left to pure language prompts, 2024-2026 LLMs close deals at a surprisingly low rate (~27% on tightly parameterized bargains in arXiv:2402.15813). Scale does not fix it. GPT-4 is not structurally better at bargaining than GPT-3.5, only better at the language of bargaining.

The root issue is that an LLM does two jobs at once: it decides the offer and it narrates the offer. OG-Narrator splits them. A deterministic offer generator computes the numeric moves, and the LLM only narrates. Deal rate jumps to ~89%.

This matches a classical multi-agent finding: decouple the mechanism from the communication layer. Contract Net Protocol (Smith, 1980; FIPA, 1996) is the reference task-market mechanism. Put an LLM in the narration slot and you get a modern LLM-powered task market.

Warm-up0/3
1. In FIPA-ACL, what does a performative tell the receiving agent?Warm-up
Two messages between the same generic agents: one with performative request and content fetch report.csv, one with performative inform and content report.csv is ready, with a card asking what the performative field tells the receiving agent.
2. In a parallel swarm, a coordinator sends one message to many workers at once. What does this buy over talking to them one at a time?Warm-up
A coordinator sending one message to three workers at the same moment, each worker labelled with a different finish time (2s, 7s, 4s illustrative), and a card asking what the coordinator's total wait time tracks.
Finish times are illustrative.
3. In FIPA-ACL, what does a refuse message from an agent mean?Warm-up
A request message from a manager to a bidder for task t-9, answered by a refuse message from the bidder about the same task, with a card asking what a refuse message means.
Check: Problem0/3
1. Splitting offer generation from narration lifted the deal rate from about 27% to about 89%. What explains the jump?Explain
A two-bar chart of deal rate: 27% when one LLM decides and narrates the offer, 89% when the job is split between a generator and a narrator, with a card asking what in the split causes the jump.
2. GPT-4 is not structurally better at bargaining than GPT-3.5. What explains this?Explain
Two cards, GPT-3.5 and GPT-4, each with blank rows for language fluency and strategic errors such as anchoring, with a card asking which row differs between the models and which stays about the same.
3. A bargaining agent asks the LLM for each price, and many offers land outside the ZOPA even with a strong model. Which change targets the cause?Analyze
A price line with a shaded ZOPA between $70 and $95 and six scattered points for offers an LLM picked for the same state, several landing outside the shaded span, with a card asking which change moves them back inside.
Points are illustrative, representing scattered LLM-picked prices.

Concept

Contract Net, in one paragraph

In Smith's 1980 Contract Net Protocol, a manager broadcasts a call for proposals (cfp) and bidders respond with propose messages containing their offers. The manager picks a winner, sends accept-proposal to it and reject-proposal to the losers, and the winner does the work. A bidder that does not want the job can send refuse instead. FIPA codified this as the fipa-contract-net interaction protocol.

Why OG-Narrator wins

"Measuring Bargaining Abilities of Language Models" (arXiv:2402.15813) observed that:

  • LLMs often break the bargaining rules by offering nonsensical prices or ignoring the other side's ZOPA.
  • They anchor poorly. They accept bad first offers and counter at symbolic amounts rather than strategic ones.
  • Larger models write more plausible language but make about the same strategic errors.

The OG-Narrator decomposition:

           ┌──────────────────┐        ┌──────────────────┐
  state  → │ offer generator  │ price → │  LLM narrator    │ → message
           │  (deterministic) │        │  (writes the     │
           │                  │        │   human-style    │
           └──────────────────┘        │   accompaniment) │
                                       └──────────────────┘

The offer generator is a classical negotiation strategy: a Rubinstein bargaining model, a Zeuthen strategy, or plain tit-for-tat over price. The LLM narrates. Each message carries the deterministic price plus the natural-language framing.

Deal rate jumps because prices stay in the bargaining zone, anchors are strategic instead of emotional, and the LLM spends its effort on writing, which it is good at.

NegotiationArena findings

arXiv:2402.05863 is the canonical benchmark. Headline findings:

  • LLMs can improve payoffs ~20% by adopting a persona ("I am desperate to sell this by Friday"). Persona manipulation is a real tactic.
  • Fair, cooperative agents get exploited by adversarial ones, and the defense is explicit counter-posturing.
  • Symmetric pairings converge to inequitable outcomes on about 40% of the benchmark scenarios.

That does not make LLMs bad negotiators. They negotiate a lot like humans, including the exploitable habits.

Chain-of-thought concealment

The Large-Scale Autonomous Negotiation Competition (arXiv:2503.06416) ran ~180k negotiations across many LLM strategies, and the winners hid their reasoning from counterparts. Say an agent writes "I will only go to $75; my reservation price is $70" into a publicly visible scratchpad. The opponent reads it. Winners computed strategy privately, so the output channel held the offer and the minimum narration needed.

Classical game theory says the same thing (Aumann 1976 on rationality and information): revealing your private valuation costs payoff. LLMs do not pick this up on their own and will type their reservations into reasoning traces that the counterpart can see.

The engineering takeaway is to keep the private-scratchpad context and the public-message context separate. Treat that as a requirement.

Bhattacharya et al. 2025: model rankings

On Harvard Negotiation Project metrics (principled negotiation, BATNA respect, interest reciprocity):

  • Llama-3 was the most effective at striking bargains (deal rate and payoff).
  • Claude-3 was the most aggressive negotiator, with high anchors and late concessions.
  • GPT-4 was the fairest, with the smallest payoff variance across pairings.

This is a 2025 snapshot, and which model wins in April 2026 matters less than the pattern: base models have persistent negotiation styles. Heterogeneous ensembles (Lesson 15) can use that as a source of diversity.

Task allocation via Contract Net + LLM

The modern reuse of Contract Net for LLM multi-agent systems:

  1. A manager agent decomposes a task into units.
  2. It broadcasts a cfp with the task description to worker agents.
  3. Each worker returns an offer (price, eta, confidence), where price could be tokens, compute units, or dollars.
  4. The manager picks winners (one or several, depending on the task) and awards.
  5. Rejected workers are free to bid on other tasks.

Coordination is broadcast-and-respond instead of synchronous chat, so this scales well past 100 workers. Microsoft Agent Framework's orchestration patterns and some LangGraph implementations use it in production.

LLM-Stakeholders Interactive Negotiation

NeurIPS 2024 (https://proceedings.neurips.cc/paper_files/paper/2024/file/984dd3db213db2d1454a163b65b84d08-Paper-Datasets_and_Benchmarks_Track.pdf) introduces multi-party scorable games with secret scores and minimum-acceptance thresholds. Each stakeholder has private utilities, and the LLM has to infer them from messages. This generalizes two-party bargaining to N-party coalition formation, which is the situation in a production task market with heterogeneous workers.

The narration-vs-mechanism rule

The engineering rule that holds across the 2024-2026 negotiation benchmarks:

Let the LLM narrate. Do not let the LLM compute the offer.

If the offer is a number (price, ETA, quantity), generate it deterministically from the negotiation state and have the LLM write the framing. If the offer is a proposal structure (task decomposition, role assignment), let the LLM draft it, then validate it against a schema and check constraints before sending.

Check: Concept0/19
1. In Contract Net, which performative does a bidder send back to the manager to make its offer?Define
A manager's cfp arrow going out to a bidder box and a dashed reply arrow marked with a question mark coming back, with a note that the reply carries price and terms.
2. In Contract Net, which message does the manager send to each bidder that did not win?Define
A manager sending accept-proposal to the winning bidder and a dashed arrow marked with a question mark to the losing bidder, with a note asking what the manager sends to the bidder it did not pick.
3. In a price negotiation, what is the ZOPA?Define
A price line from $50 to $120 with the seller's minimum marked at $70, the buyer's maximum marked at $95, and the span between them shaded and marked with a question mark.
Prices are illustrative.
4. What is a BATNA?Define
A car sale with an asking price of $12,000 and a buyer offer of $9,000 at the table, next to a guaranteed fallback of selling to a dealer for $9,500 if talks fail, with a card asking what that fallback is called.
Prices are illustrative.
5. What does the OG-Narrator decomposition assign to each part?Define
A pipeline from a bargaining state through component A and component B to an outgoing message, both components marked with a question mark, next to a card saying one component computes the number with arithmetic and the other writes the human-style wording, asking which is which.
6. What is a Zeuthen strategy, as used in an offer generator?Define
A line chart of a buyer offer falling and a seller offer rising over 5 rounds with shrinking steps, a note that the move size is based on risk of losing the deal, and a card asking what this concession rule is called.
Offers are illustrative, not from the code.
7. What does Rubinstein bargaining model?Define
Four boxes reading side 1 offers p1, side 2 offers p2, side 1 offers p3, then an ellipsis, with a note that each side discounts a later deal by a discount factor delta, and a card asking how many rounds this can continue and what the model is called.
8. What does chain-of-thought concealment mean in a negotiation?Define
A private scratchpad box holding reasoning about a limit and an opening price, next to a public message box holding only the offer, with a question mark on the dashed arrow between them and a card asking how much of the scratchpad crosses over.
9. What is persona manipulation in an LLM negotiation?Define
Two narrations of the same $75 offer: a plain version and a version framed as desperate to sell by Friday, with a note that the number is identical and a card asking what the reframing does.
10. Why does Contract Net scale well past 100 workers?Explain
Two patterns for a manager reaching 5 workers: pattern A labelled turn 1 through turn 5 under each arrow to show the manager reaching workers one at a time in sequence, pattern B labelled all sent in the same round to show the manager reaching all 5 workers in one broadcast, with a card asking which pattern needs 5 separate ongoing conversations at once.
11. Why does the narration-vs-mechanism rule have a deterministic generator produce a numeric offer but let the LLM draft a task decomposition?Explain
Two inputs, a number such as price and a structure such as a task decomposition, each with an arrow to a box marked with a question mark, and a note that one path needs no human judgment while the other is drafted and needs a check before sending.
12. A buyer's narration says 'I am desperate to buy this week' while its offer generator is unchanged. What does NegotiationArena say about this kind of persona?Explain
A buyer's narration reading I am desperate to buy this week with the offer generator unchanged, and a card for the measured payoff change left as a question mark.
13. One 2025 study found GPT-4 fairest, Claude-3 most aggressive and Llama-3 most effective at striking bargains. What pattern does the lesson draw from this?Explain
Three cards from one 2025 study: GPT-4 fairest with the smallest payoff variance, Claude-3 most aggressive with high anchors and late concessions, Llama-3 most effective with the best deal rate and payoff, with a note that the ranking is a snapshot and a card asking what the lasting pattern is.
14. What does the LLM-Stakeholders benchmark (NeurIPS 2024) add beyond two-party bargaining?Explain
A 2-party buyer-seller pair next to four generic parties labelled p1 through p4 for an N-party version with N greater than 2, with a card asking what the N-party version adds that 2-party bargaining does not need.
15. A manager sends a cfp to three bidders, all three propose, and one task is awarded to a single winner. Which messages does the manager send next?Apply
A manager receiving propose arrows from three bidders, with a card asking what messages go out to the three bidders after the manager awards the task to one winner.
16. Your buyer agent streams its reasoning into a channel the seller agent reads. One trace says "my maximum is $90, I will open at $60". What goes wrong, and what is the fix?Analyze
A buyer's reasoning channel that the seller can read, containing the line my maximum is $90, I will open at $60, with a card asking what the seller can do with it and what should change about the channel.
17. Your cooperative, fair agent keeps being exploited by an adversarial counterpart in testing. Which defense does the lesson name?Analyze
A line falling from about 50 to 28 over 8 rounds showing a fair agent's payoff share shrinking against an adversarial counterpart, with a card asking which defense the lesson names for this pattern.
Payoff shares are illustrative.
18. You must allocate 200 independent sub-tasks to heterogeneous worker agents with different costs and speeds. Which design fits?Design
A pool of 200 independent sub-tasks next to a card describing workers that vary in cost and speed, with a card asking which coordination pattern assigns all 200 without a synchronous chat per worker.
19. An LLM drafts a role assignment for five workers, which is a proposal structure rather than a number. What should happen before it is sent?Design
An LLM's drafted role assignment for 5 workers flowing through a highlighted box marked with a question mark before it is sent to the workers, with a card asking what step belongs there.

Build It

code/main.py implements:

  • ContractNetManager, ContractNetTask, Bid: the manager and bidders, with broadcast cfp, proposal collection, and award.
  • og_narrator_bargain(state, rng): the OG-Narrator buyer, a deterministic Zeuthen-style concession toward the seller's standing offer.
  • seller_response(state, rng): a deterministic seller counter-offer policy, shared as the structural ground truth for both buyer styles.
  • naive_llm_bargain(state, rng): a stand-in for an all-LLM bargainer that picks prices with high variance, often outside the ZOPA.
  • Measurement: deal rate over 1000 trials, with fresh reservation prices sampled per trial.

Run:

python3 code/main.py

With the fixed seed, the naive-LLM buyer closes about 60% of deals and the OG-Narrator buyer about 89%, a gap near 29 points. That gap is the structural advantage of separating offer generation from narration. The script then runs a Contract Net task-market example with three bidders and one task.

Check: Build It0/4
1. A Contract Net manager scores bids as confidence divided by price. worker-a bids 0.82 at price 3, worker-b 0.77 at price 2 and worker-c 0.90 at price 4. Which wins?Apply
A table of three bids, worker-a at confidence 0.82 and price 3, worker-b at 0.77 and price 2, worker-c at 0.90 and price 4, with a card saying award() picks the highest confidence divided by price and asking which bidder wins.
2. Take the same three bids, but worker-c's price drops from 4 to 2 with confidence still 0.90, and all bids remain within budget and deadline. Which worker wins on confidence divided by price?Apply
The same three bids in a plain table, with a note that worker-c's price is now 2 (was 4) and its confidence is unchanged at 0.90, and a card asking which bidder wins the award now.
3. Over 1000 trials the naive-LLM buyer closes about 60% of deals and the OG-Narrator buyer about 89%. Roughly how many more deals does the OG-Narrator buyer close?Apply
A two-bar chart of deal rate over 1000 trials, 60% for the naive LLM buyer and 89% for the OG-Narrator buyer, with a card asking for the gap as a count of deals rather than percentage points.
4. In the demo, award() first filters out bids over budget or past the deadline, then picks the highest confidence divided by price. A new bid has confidence 0.95, price 1, and an ETA past the deadline. What happens?Apply
A new bid with confidence 0.95, price 1 and an ETA past the deadline entering a pipeline of all bids, a budget and deadline filter, then scoring by confidence over price, with a card asking whether the new bid reaches scoring.

Use It

outputs/skill-bargainer-designer.md designs a bargaining protocol: who generates offers (deterministic or LLM), who narrates, how private scratchpads stay separate from public messages, and how deal rate is monitored.

Ship It

Production bargaining checklist:

  • Separate scratchpad. Private state stays out of the counterpart's context. Treat this as a hard requirement.
  • Deterministic offer generation. Compute prices, quantities, and ETAs instead of prompting for them.
  • Validate incoming offers against a schema, and reject out-of-ZOPA offers at the protocol boundary.
  • Bound rounds. Cap at 3-5 rounds and escalate to a mediator on deadlock.
  • Measure deal rate and payoff variance continuously. A falling deal rate is a symptom, often of prompt drift or an attack from the counterpart side.
  • Log rejected proposals with the deterministic rationale. In Contract Net, losing bidders need to understand why they lost.
Check: Ship It0/6
1. Why does the production checklist validate incoming offers against a schema and reject out-of-ZOPA offers at the protocol boundary?Explain
A flow of incoming offer to a schema and ZOPA check to a highlighted box marked with a question mark, with a note that a failing offer never reaches a negotiation round, and a card asking why check at the boundary.
2. Why does the Ship It checklist treat the separate scratchpad as a hard requirement?Explain
A private scratchpad box holding reasoning and a reservation price, a dashed arrow marked leak toward a box for the counterpart's context, and a card asking what the counterpart can do if that arrow ever fires.
3. Why does the checklist say to log rejected proposals with the deterministic rationale?Explain
A manager's log of three rows, two reject-proposal rows with rationales over budget and lower score and one accept-proposal row with rationale highest score, with a card asking who reads the rejection rationale and why it matters.
Bidder names and rationale text are illustrative.
4. A production bargaining agent's deal rate has fallen for weeks. Which causes does the checklist say to suspect?Analyze
A line falling from about 86% to 58% over 6 weeks showing a production agent's deal rate, with a card asking which causes the checklist says to suspect first.
Rate values are illustrative.
5. Two agents trade counteroffers for 25 rounds without agreeing, and the cost keeps climbing. Which checklist item was missing?Analyze
Two agents exchanging counteroffer arrows back and forth, a note that this is round 1 through round 25 with no agreement yet, a card saying the running cost keeps climbing each round, and a card asking which checklist item would have stopped this.
6. You are building an agent that buys cloud capacity from a vendor agent. Which design follows the lesson?Design
A buyer agent negotiating with a vendor agent over cloud capacity, with a card listing open questions: who computes the price, who writes the wording, where private reasoning lives, and how many rounds are allowed before escalation.
Author's Note

I'd run code/main.py before reading anything else and look at the two deal rates. There is no LLM in the file. The naive buyer is a random price generator with wide variance and the OG-Narrator buyer is a fixed-fraction concession rule, so what you measure is the structure, not any model's language. The seller is the same deterministic policy against both buyers, which is why the gap here (about 60% to 89%) is smaller than the 26.67% to 88.88% reported in the paper.

The thing I'd poke at is the award rule in the Contract Net demo. award() filters out bids over budget or past the deadline, then picks the highest confidence divided by price. That is why worker-b wins despite being the slowest bidder: it is cheap enough that the ratio beats worker-c's higher confidence. It is one scoring choice among many, and exercise 4 asks you to defend yours.

I'd also be clear about what the code leaves out. Narration, persona manipulation, and the private scratchpad are described above but not implemented, so exercises 2 and 3 are where you add them. When you do, I'd build the scratchpad as a separate channel from the start and make the leak a one-line swap, so the cost of leaking shows up in the deal rate.

Exercises

  1. Run code/main.py. Confirm OG-Narrator beats naive-LLM on deal rate. By how much?
  2. Implement persona-based payoff improvement (arXiv:2402.05863). The buyer adopts a "desperate to buy this week" persona in the narration only, with the offer generator unchanged. Does the deal rate or payoff change?
  3. Implement chain-of-thought concealment: keep a private scratchpad string that is not passed to the counterpart. What happens if you leak it by accident (simulate by swapping the channels)?
  4. Extend Contract Net to an N-bidder auction with a reserve price. When all bids exceed the reserve, how does the manager decide between lowest price and highest quality? Which award rule do you pick and why?
  5. Read Bhattacharya et al. 2025 on Harvard Negotiation Project metrics. Implement two bargainers with different styles (aggressive vs fair). Measure payoff variance under symmetric and asymmetric pairings.

Key Terms

TermWhat people sayWhat it actually means
Contract Net"Task market"Smith 1980, FIPA 1996. cfp + propose + accept/reject. The canonical task-market.
ZOPA"Zone of possible agreement"Overlap between buyer's max and seller's min. Offers outside it cannot close.
BATNA"Best alternative to a negotiated agreement"Your fallback if this deal fails. Sets your reservation price.
OG-Narrator"Offer generator + narrator"Decomposition: deterministic offer, LLM narration.
Zeuthen strategy"Risk-minimizing concession"Classical offer-generator that concedes based on risk limits.
Rubinstein bargaining"Alternating-offer equilibrium"Game-theoretic model for infinite-horizon bargaining with discounting.
CoT concealment"Hide your reasoning"Winners in arXiv:2503.06416 kept private scratchpads; public channel shows offer only.
Persona manipulation"Emotional posturing"arXiv:2402.05863: ~20% payoff gain from desperation/urgency personas.

Further Reading

Code

Ships With