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.
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.
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:
- A manager agent decomposes a task into units.
- It broadcasts a
cfpwith the task description to worker agents. - Each worker returns an offer
(price, eta, confidence), where price could be tokens, compute units, or dollars. - The manager picks winners (one or several, depending on the task) and awards.
- 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.
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.
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.
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
- Run
code/main.py. Confirm OG-Narrator beats naive-LLM on deal rate. By how much? - 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?
- 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)?
- 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?
- 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
| Term | What people say | What 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
- NegotiationArena: the benchmark, with the persona manipulation and exploitation findings
- Measuring Bargaining Abilities of Language Models: OG-Narrator and the buyer-harder-than-seller result
- Large-Scale Autonomous Negotiation Competition: ~180k negotiations, where chain-of-thought concealment wins
- LLM-Stakeholders Interactive Negotiation (NeurIPS 2024): multi-party scorable games with secret utilities
- Smith 1980, The Contract Net Protocol: the classical mechanism, IEEE Transactions on Computers
Code
- main.py (python, 181 lines)