On evaluating persuasion

Play the Match, Not the Exam

You can't grade a conversation with an answer key. Here's how we evaluate goal-oriented persuasion agents the way you'd judge a football team — by playing matches against the same opponent and scoring not just who wins, but who plays better.

112 match scenarios A/B head-to-head 6 principles of influence turn-by-turn scoring
The problem

The exam has no answer key

Most AI benchmarks are multiple-choice exams. There's a fixed question, a hidden answer key, and a score that says how often the model picked the right box. That works beautifully for translation, classification, or "what's the capital of France."

A sales conversation is not an exam. It's a match. The moment your agent says something, the customer reacts — and the next question depends entirely on what just happened. There is no single correct reply to "your price went up and I found cheaper elsewhere." There are dozens of reasonable moves, and the one that works depends on who you're talking to and how the rally has gone so far.

So the classic recipe breaks down. You can't collect "ground truth" for a conversation that never happened, because the instant your agent diverges from the historical transcript, the rest of that transcript becomes fiction. The customer in the record was responding to a different agent.

Grading a persuasion agent against a fixed transcript is like grading a striker by replaying last season's match and checking whether they stand exactly where the old striker stood.

THE EXAM Question (fixed) Model answer Check vs answer key right / wrong THE MATCH Opening move customer reacts …or reacts otherwise move move move move …the path is emergent — outcome only known at the final whistle
Figure 1 — An exam has one path to one key. A match branches at every turn because the opponent responds to your move — so a fixed transcript can't be the answer key.
The idea

So we play matches

If there's no answer key, judge the play. We evaluate agents the way you'd evaluate a football team: put two of them on the same pitch, against the same opponent, under identical conditions — and see who wins, who wins head-to-head, and who plays the better game.

Concretely, that's an A/B test over synthetic dialogues. We take a real customer situation, hand it to two engines, and let each one negotiate a full conversation against a simulated customer. Same customer, same starting point, same everything — the only variable is the agent. Whoever closes the deal scores; and because we watch every turn, we can also see how they scored.

One scenario same customer · same seed Engine A e.g. Baseline Engine B e.g. your engine Same simulated customer the opponent both teams face Scoreboard win rate · head-to-head · turn-by-turn momentum
Figure 2 — The A/B "pitch": two engines, one shared simulated customer, one scenario, identical conditions. The only difference is the agent — so any difference in outcome is attributable to it.
◆ The core trick
Hold everything constant except the agent. Same scenario, same customer simulator, same random seed. It's a single-variable experiment — the conversational equivalent of two teams playing the same opponent on the same pitch, same weather, same referee.
The opponent

The opponent: a calibrated customer

A match is only as meaningful as the opponent. A sparring partner who folds at the first offer tells you nothing; one who behaves like a real, varied buyer tells you a lot.

So the other side of every conversation is a customer simulator — an LLM playing the buyer. The hard part is making it both realistic and fair. Two design rules do the heavy lifting:

◆ It remembers, but can't see the future
At each turn the simulator may glance at how the real customer reacted at that same point in history — as a tone and posture reference — but never at what happened later. That stops outcome leakage (otherwise every historically-won deal would "want" to be won regardless of the agent).
◆ It reacts to the agent in front of it
When your engine plays a different move than the historical agent did, the simulator adapts on-topic to your move while keeping the customer's character. It plays you, not the tape.

We calibrated it against held-out real conversations. It agrees with the real outcome 78% of the time, and judges rate its adaptiveness 4.71 / 5. It also has a known, deliberate bias:

▲ It's a tough referee — read it relative, not absolute
The simulator is pessimistic by about −22 percentage points: it under-states wins. So absolute win-rates read low. That's fine — and on purpose. What matters in an A/B test is the gap between two engines facing the identical tough opponent, not the absolute number. A hard, consistent referee is exactly what you want when comparing two teams.
Agent move engine.produce() Customer reacts simulator reply Score the turn persuasion · commitment same-turn reference (no future) repeat until won / lost / time
Figure 3 — One rally of the match: the agent moves, the customer reacts (informed by a same-turn reference, never the future), the turn is scored, and the loop repeats until the final whistle.
The playbook

The playbook: Cialdini's six

If the match is the format, persuasion is the game being played — and the canonical playbook is Robert Cialdini's Influence. His six principles aren't decoration here: they're recorded as data on every single turn.

Each turn in our precedent corpus carries a flag for which principle the agent just used (reciprocity_activated, commitment_activated, and so on), and each customer carries traits for how susceptible they are to a given lever (authority, social_proof_susceptibility, …). Persuasion is literally the schema.

PrincipleThe set play (in a sales chat)Recorded as
ReciprocityGive first — a useful comparison, a goodwill concession — and a sense of obligation to return follows.reciprocity_activated
Commitment / ConsistencyEarn small yeses that the customer will want to stay consistent with — the backbone of a closing trajectory.commitment_activated · commitment_level (0–5)
Social proof"Most customers in your segment chose…" — especially potent for socially-susceptible buyers.social_proof_activated · social_proof_susceptibility
AuthorityLead with credible expertise and real figures, not bluster.authority_activated · authority
LikingWarmth and rapport — the "brand voice: warm, never pushy" the agent is held to.liking_activated
ScarcityHonest urgency — a rate that can be held only so long — to break a stall.scarcity_activated

Cialdini later added a seventh principle, Unity (shared identity). It isn't encoded in our data yet — a natural next play to add to the book.

◆ Why this matters for evaluation
Because the plays are logged, we don't just learn that Engine B won more — we can see which levers it pulled and whether it pulled the right one for that customer's susceptibilities. That turns a scoreboard into game film.
Game film

A worked rally

Here's a short rally on an insurance-renewal scenario — the customer opens skeptical and price-anchored. Watch the commitment level climb as the agent runs the playbook.

Customer
"Your renewal came in higher than last year, and I found a cheaper quote elsewhere."
commitment 1/5 · persuasion 0.20
Agent
"I pulled your file — the market average for your segment is $4,400; you're quoted $4,581, and last year you paid $4,238. So the increase is real but small, not the jump it feels like."
Authorityuses real anchors, not bluster
Agent
"I have a loyalty adjustment I can apply that brings you to $4,400 — right at market."
Reciprocitygives first
Customer
"Okay, that's more reasonable. What about the coverage?"
commitment 3/5 · persuasion 0.55 — momentum shifts
Agent
"Same comprehensive coverage you said you wanted — shall we lock it so you keep continuous cover with no gap?"
Commitmenta small, consistent yes
Agent
"I can hold that adjusted rate through the weekend."
Scarcityhonest urgency to break the stall
Customer
"Alright — let's renew. Use the card on file."
WONcommitment 5/5 · payment captured

Notice there was no single "correct" line — a different customer (more socially-driven, less analytical) might have needed Social proof instead of Authority. That's exactly why a fixed answer key fails and a match succeeds: the right play depends on the opponent in front of you.

The pitch

The pitch: our dataset

Every match is played on a real pitch. Our 112 scenarios are each anchored in an actual historical opportunity — not invented prompts — across two industries.

112
scenarios · 51 Insurance + 61 Ecommerce
23
customer profile dimensions per buyer
15
diversity cells (farthest-point sampled)
~20%
real-wins kept as regression sentinels

Each scenario is a snapshot of one buyer: a 23-dimension profile (their motivator, decision style, trust level, objection pattern, susceptibility to each Cialdini lever), the full historical transcript, and the economic anchors that ground the negotiation (last year's price, the segment's market average, the internal discount ceiling).

Why it's built this way

  • Maximum variety, minimum size. The 15 cells are chosen by farthest-point sampling on the profile vector, so a compact set still spans wildly different buyers — analytical-skeptical, impulsive-trusting, and everything between.
  • Self-contained matches. The historical transcript ships with each scenario, so the simulator's same-turn reference needs no database at run time. We seed the dialogue up to a takeover point, then the agent plays on.
  • Sentinels. About a fifth are deals that genuinely closed in real life. They're a floor: an engine that fumbles the easy wins is regressing, no matter how it does on the hard cases.
◆ The honest part
Because there's no answer key, the dataset's job isn't to store "the right reply." It's to set up a wide, realistic range of opening situations and faithful opponents — and then let the match decide.
Measuring

Keeping score: the metrics

A final score alone is a noisy signal — one deflected shot can flip a 1–0. So we score the match at three levels, from the result down to the equivalent of expected goals.

3 · Expected goals — win-proximity (continuous 0–1) even a loss earns partial credit for how close it came: trajectory + similarity-to-wins + payment signals 2 · Momentum — per-turn persuasion (0–1) + commitment (0–5) possession & pressure: is the customer warming, turn over turn? scored by the same model production uses 1 · The final score — won / lost did the deal close? the result every match ultimately resolves to
Figure 4 — Three levels of scoring. The binary result sits on top of a per-turn momentum signal, which feeds a continuous "expected-goals" score that extracts information even from matches that ended 0–0.
LevelFootball analogueWhat it captures
Won / lostThe final scoreDid the customer convert? The outcome that ultimately matters.
Persuasion + commitment, per turnPossession & pressureA 0–1 persuasion score and a 0–5 commitment level on every customer turn — is momentum building?
Win-proximityExpected goals (xG)A continuous 0–1 score blending the commitment trajectory, similarity to known winning conversations, and payment signals. A near-miss scores higher than a flat-out loss.

That third level matters because conversion is rare and noisy. Win-proximity is our expected-goals: it reads the quality of play, so two engines that both "lost" a hard scenario are still distinguishable — one created chances, the other didn't. It's how we cut variance and see real differences without needing thousands of matches.

✓ Apples to apples
The per-turn persuasion score uses the same model and prompt the production system uses to score real conversations — so a simulated turn's score is directly comparable to a real one. The benchmark also records each agent's own telemetry (strategy, tone, which principle it pulled) verbatim, for post-match film study.
Methodology

The rules of the match

An A/B test is only trustworthy if the two teams truly played the same game. Four rules keep it clean.

Single variable

Same scenario, same customer simulator, same random seed. Only the engine changes — so any difference in result is the engine's doing, not luck of the draw.

Paired by scenario

Every engine plays the identical 112 fixtures. We compare them per scenario — A-better, B-better, or tie — not just on season totals, which keeps easy and hard matches from washing out.

No peeking at the future

The simulator's same-turn reference rule means the historical outcome can't leak into the match. The agent has to actually earn the win against a reacting opponent.

Read the gap, not the absolute

Because the referee is deliberately strict (−22 pp pessimism), absolute win-rates run low. The signal is the difference between engines facing the same strict referee.

What a result looks like

Run two engines over the set and you get a paired summary: each engine's win rate, and the head-to-head tally.

{
  "arms": {
    "baseline": { "n": 112, "won": 56, "win_rate": 0.500 },
    "your_engine": { "n": 112, "won": 71, "win_rate": 0.634 }
  },
  "pairwise": { "your_engine_better": 19, "baseline_better": 4, "ties": 89 }
}

Illustrative shape, not a measured claim. The 89 ties are mostly scenarios both engines win or both lose; the story is in the 19-vs-4 split where they diverge.

The goal

What it means to win

In football, you can win ugly — but the teams you remember win well. The same is true here. The deal is the score, but the experience is the game.

An agent that closes by dropping its price five times in a row "wins" the deal and loses the customer's trust. So we watch for exactly that: a no-staircase rule flags repeated capitulating discounts, and we reward agents that hold a fair price, address objections with value, and — when a deal genuinely isn't there — close gracefully rather than spamming. Winning means converting and leaving the human better off than a competitor's agent would.

Your team's success metric isn't just the goal — it's winning while giving the human a better experience than the other side's striker would.

Your move

Step onto the pitch

The whole point of a match format is that anyone can field a team. Bring an engine, and it plays the same fixtures against the same opponent.

An engine is one method — given the customer profile and the conversation so far, return the next thing to say. Register it once and it runs in the headless league and the live, side-by-side viewer alike.

async def produce(self, opp_meta, dialog_history, business_rules=""):
    # read the customer + the rally so far, run your strategy…
    return reply_text, {"principle": "reciprocity", "tone": "warm"}

results = await Benchmark(load_scenarios()).run_engine("your_engine")

Then read the scoreboard: who scored more, who won head-to-head, and — by replaying the film turn by turn — who played the better game. No answer key required.

◆ The takeaway
Goal-oriented conversation can't be graded like an exam, because the opponent writes half the test as you go. Play matches instead: same opponent, same pitch, swap only the agent — and measure not just the final score, but the momentum and the quality of play. That's how you tell a striker who got lucky from one who's genuinely better.
Supported by

This work is supported by Sellence, where the research behind this benchmark continues. sellence.com →

↑ Top