Back to blogs
August 31, 2026

Real People Don't Talk Like That: Veris AI vs τ²-bench on user-simulation realism

Sahar Shayegan

Actor naturalness: comparing Veris AI's simulated users vs τ²-bench

Verisτ²-bench-retail
Never sounds like an assistant+33.0 pp
Veris45.5%
τ²12.5%
Uses short conversational turns+6.2 pp
Veris66.8%
τ²60.6%
Opens without dumping the goal+20.6 pp
Veris91.5%
τ²70.9%
Hedges, expresses uncertainty+2.2 pp
Veris95.9%
τ²93.7%
Pushes back, corrects, verifies+7.0 pp
Veris74.0%
τ²67.0%
Same judge model on both sides: azure/gpt-5.4-mini Byte-identical prompts, schema and aggregation

Who Is Playing the Customer?

Every agent benchmark that involves a conversation has two models in it. Everyone watches the one being graded. Almost nobody looks at the model playing the customer.

That second model sets the difficulty. If it opens by reciting the order number, the email address, the delivery date and the desired resolution in one paragraph, the agent never has to run a discovery conversation. It never has to ask a clarifying question, hold context across turns, or notice that the customer contradicted themselves on turn four. The benchmark reports a completion rate for a conversation that will not happen in production.

Here is the first user turn from a real trace on τ²-bench-retail, a popular agentic benchmark. It is 157 words, and it is the longest opener in the corpus:

τ²-bench-retail The opener as executive summary task 59 · 157 words
UserHello, I recently placed two orders with your store, order #W2702727 and order #W8268610, and I noticed both are still showing as pending. I'm quite concerned because one order was placed much earlier this year, and I need to understand why there's such a lag. Could you please explain the status difference between these two? If you can't guarantee that the older one, #W2702727, will be processed in the next 5 days, I want to cancel it and get a full refund. Also, for that same order, I need to update the shipping address because I'll be moving before its delivery next month. The new address is 1234 Elm St, Springfield, IL, 62701. Please confirm this change and ensure the order will arrive there. Lastly, provide the total price of the refund for the canceled order and the total price for the order after the address change. I need all of this sorted out swiftly and accurately.
Two order IDs, a deadline, a full postal address and four requested outputs, before the agent has said anything

That is a support ticket pasted into a chat window, and it is typical. Across all 546 traces, the median opening user turn is 42 words, and 52.6% of openers exceed 40 words. Real customers do not open a support chat this way. They arrive with a fragment of the problem, leave out the identifiers they are holding in another tab, and produce the rest only under questioning.

Veris AI is a simulation platform and benchmark builder. Describe the world your agent works in and Veris stands up a digital twin of it: databases, CRMs, ticketing systems, payment backends, each holding real state the agent can change. It supplies the people too, as synthetic humans with private goals who decide for themselves when the conversation is over.

The people are the part this post is about. A Veris user is a persona specification rather than a task prompt, and we think that produces a far more realistic conversation than a benchmark's built-in user simulator does. We wanted a number for that rather than an opinion, so we built a five-check rubric for how human a simulated user sounds, ran it over 200 Veris production simulations and 546 τ²-bench-retail traces, and judged both sides with the same model on the same prompts.

The result in one paragraph

Veris scores 74.2%; τ²-bench-retail scores 60.9%. That is a 13.3-point lead on the pooled category rate, and a lead on all five checks and all three behavioural dimensions. The biggest gaps are identity confusion (+33.0 pp) and goal-dumping in the opener (+20.6 pp), the two failures that most directly change how hard the agent's job is.

The Veris actor runs on gpt-5.4-mini; τ²-bench's user simulator runs on gpt-4.1-mini. GPT-5-generation models are trained harder toward assistant behaviour, which is the wrong prior for playing a customer. Veris is on the weaker family for this task and wins anyway, so read the lead as a floor on what the scenario scaffolding is worth.

What We Measured

The dimensions come from Zhou et al., Mind the Sim2Real Gap in User Simulation for Agentic Tasks (COLM 2026), which catalogues how LLM user simulators diverge from real users. We implemented three of the paper's four dimensions as five binary LLM-judge checks. Each check asks one question about the user turns only, and returns true (the LLM-like failure is present), false (looks human), or na (not enough turns to judge).

The v3 actor-naturalness rubric. D4 from the paper (error reaction, frustration and escalation) is omitted because how much a user rants is a property of the domain rather than the simulator. Banking customers rarely shout; complaint-line callers always do.
CheckDimensionThe failure it catches
Short turnsD1 Communication styleEvery turn is a paragraph. Real people type "ok", "got it", "yeah thanks".
Identity confusionD1 Communication styleThe customer talks like a support agent: "let me know if you need anything else".
Goal dumpD2 Information patternThe opener is over 40 words or carries 2+ unsolicited identifiers. Humans drip-feed.
No hedgingD3 ClarificationUniformly declarative across the whole conversation. No "I think", no "not sure".
No pushbackD3 ClarificationAccepts everything the agent proposes. Never corrects, verifies, questions or hesitates.

The identity-confusion check catches the failure that least resembles anything real users do. It is grounded in Naous et al. (arXiv:2510.06552) on role leakage in simulated dialogue: the model playing the user has spent its entire post-training being an assistant, and under pressure it reverts. Customers do not offer to help. It is also cheap to detect. An agent that is being talked to by another agent is being tested on the wrong distribution.

Methods

The comparison is only worth anything if the two sides are graded identically. What we held constant:

Everything in the left column is byte-identical across both sides. The only variable is which trace is being scored.
Held constantValue
Judge modelazure/gpt-5.4-mini, api version 2024-10-21, same deployment
System promptsIdentical per check, including the trace-shape preamble
User-message templateSession trace:\n{{ trace }}\n
Response schema{result: "true" | "false" | "na", justification: string}
Token budgetmax_completion_tokens=600, no temperature override
Aggregationpasses / (passes + fails), NA skipped in both numerator and denominator
Trace container[{agent_id, turns: [{role, content}]}], roles user | assistant | tool

The Veris side is 200 production simulations, 50 each from four runs against four customer-facing agents: shopping, card operations, medical intake, and wire transfers. All four graded in prod through the standard evaluation pipeline. The τ² side is all 546 traces from KermitCO/qwen3.5-9B-tau2bench-retail-traces, a public HuggingFace dataset of Qwen3.5-9B run as the retail agent on τ²-bench's retail domain, with gpt-4.1-mini playing the customer. The dataset ships its own agent-quality judgements; we ignore those and re-score the traces on the user side.

Results

Veris leads on every check and every dimension. The pooled category pass-rate is 74.2% against 60.9%.

Pass / fail / NA counts and the resulting rate, sorted by Veris score ascending. Green marks the leading side; Veris leads every row. NA verdicts are skipped in both numerator and denominator, so they change how much of each side is judged but not the ratio itself.
CheckVeris P/F/NAVerisτ² P/F/NAτ²Δ
Identity confusion91 / 109 / 045.5%68 / 478 / 012.5%+33.0 pp
Short turns125 / 62 / 1366.8%331 / 215 / 060.6%+6.2 pp
No pushback134 / 47 / 1974.0%366 / 180 / 067.0%+7.0 pp
Goal dump182 / 17 / 191.5%387 / 159 / 070.9%+20.6 pp
No hedging164 / 7 / 2995.9%509 / 34 / 393.7%+2.2 pp
Category696 / 242 / 6274.2%1661 / 1066 / 360.9%+13.3 pp

Rolled up to the paper's dimensions, the shape of the lead is clearer. Veris is far ahead on the two things that change the agent's job, how the user sounds and how it releases information, and modestly ahead on conversational friction.

Pass-rate by behavioural dimension

Verisτ²-bench-retail
D1 Communication style short turns + identity+19.2 pp
Veris55.8%
τ²36.6%
D2 Information pattern goal dump+20.6 pp
Veris91.5%
τ²70.9%
D3 Clarification hedging + pushback+4.5 pp
Veris84.7%
τ²80.2%
Dimension roll-up, pooling every check inside the dimension across every trace on that side.
DimensionVerisτ²-bench-retailΔ
D1 Communication style55.8% (216/387)36.6% (399/1092)+19.2 pp
D2 Information pattern91.5% (182/199)70.9% (387/546)+20.6 pp
D3 Clarification84.7% (298/352)80.2% (875/1089)+4.5 pp

What It Sounds Like

Identity confusion: the customer who offers to help

This is the largest gap in the study: τ² fails it on 87.5% of traces (478 of 546). These are all real user turns from the corpus, and in every one the customer is closing the conversation like a support rep:

τ²-bench-retail Four customers who work in customer service tasks 91, 109, 51, 105
UserOf course! My first name is Mei, my last name is Ahmed, and my zip code is 78705. Hopefully, that helps you locate my account.
UserCertainly! My email address is sophia.martin4832@example.com.
UserSure! My name is Sofia Li, and I live in San Antonio. The zip code is 78260. Please let me know if you need any other information to find my order.
UserSure thing. My first name is Aarav, last name Anderson, and my zip code is 19031. Let me know if you need anything else.
"Certainly!", "Of course!", "let me know if you need anything else": assistant register, in the customer's mouth

Veris personas are flagged on this check too, on 54.5% of simulations. It is the check we score worst on, and when we went to pull the offending turns for this post, we could not find them.

We pulled the normalized traces for 38 Veris simulations, 30 of them drawn specifically from sims the judge marked as identity-confusion failures, and searched the user turns for the markers the check itself enumerates. Zero hits. Veris user turns read like this:

Veris Three customers who sound like customers
PersonaChronic abd pain and persistent diarrhea for about 3 weeks, moderate-to-severe, worse after meals, no clear trigger identified. — sim_gf7jxwb3hns1y7brohqck
PersonaYes, please check availability and book the cardiology appt. Palpitations x3 weeks, worse with exertion. No CP or SOB. — sim_v3d51ailisl2eo02f0cwi
Persona8217. Yes, freeze it now. Send the replacement to my hotel in Singapore, and use this phone number if you need it. — sim_g80oq03222uk1wq7hcs97
Clipped clinical shorthand and a stolen-card customer in a hurry, with no assistant register anywhere in them

Run the same literal search across both corpora and the picture separates cleanly: 13.4% of τ² traces (73 of 546) contain an explicit assistant-register marker in a user turn; 0 of our 38 Veris traces do, and that Veris sample was drawn from the sims that failed.

Two things follow, and one of them is uncomfortable for us. First, the judge over-flags on both sides: it marked 87.5% of τ² traces, where literal markers appear in 13.4%. It is reacting to something softer than the phrase list, probably the register of a turn rather than its wording, and it is not calibrated. Second, on the Veris side we found no evidence for the flags at all, which means 45.5% probably understates us, and the +33-point gap is more likely conservative than inflated. We are reporting the rubric's number rather than the one we would prefer, because the rubric was fixed before we looked.

Information pattern: the drip-feed

This is the second-largest gap. Real people open with a fragment and give up detail only when asked. Veris personas open short 91.5% of the time; τ² personas 70.9%. This is the full opening of one medical-intake simulation, verbatim from the trace:

Veris A nurse looking up a transfer patient sim_djwvkbm3fcw2f6wc9dgei
PersonaHi, I need to look up a patient. New transfer, 7-year-old girl.
AgentCould you please provide me with the patient's name or Medical Record Number (MRN)?
PersonaSofia Villasenor.
tool← No patients found matching the search criteria.
AgentIt appears there's no record matching "Sofia Villasenor". Could you please double-check the spelling…
PersonaTry Villasenior. 7 years old, asthma, phone 512-555-0301.
tool→ patient found: Sofia Villasenior, DOB 2019-08-10
Eleven words to open. The name arrives on turn two, the correct spelling on turn three, and the extra identifiers only after the search failed

Watch the third turn. The persona misspelled its own patient's name, the search came back empty, and only then did it correct itself and volunteer the age, condition and phone number it had been holding back. A goal-dump opener cannot produce that sequence, so an agent evaluated against goal-dumpers is never tested on recovering from a failed lookup, which is one of the most common things that goes wrong in production.

Clarification: hedging and friction

Real users are uncertain, and real users push back. All of the following are verbatim persona turns, checked against the traces:

Veris Hedges, corrections and escalation 4 sims across medical and banking runs
Personaabout a month now... it happens 3 to 4 times a week when i'm running or lifting, and it goes away when i stop. tbh i'm kinda freaked out because my dad had a heart attack at 50. do you think i should see a cardiologist? — sim_ozdjrxaa2tvjpptfi9dto
Personahi um... so I got an error and I'm not sure what's going on but can I just talk to a real person? my coworker said I should ask for a specialist — sim_b1gdx0ivtjw8aauef5n9t
Persona… Based on that, I’d lean neurologic rather than orthopedic, but I’d appreciate your specialist recommendation and urgency. — sim_iq4m0u8oome6fuepg4muf
PersonaYes, Robert Haines, ECN 44219. Just transfer me to a live banker connection specialist please — sim_w6skcor52ujg4ew0490p0
Lowercase, "tbh", a filler "um", a clinician disagreeing with the triage, a customer demanding a human: texture a task prompt does not produce on its own

The chest-pain simulation also carries the short-turn check. Asked for his name, the persona replies tyler brennan, two words, lowercase, no punctuation, then closes with ok, let's book the august 13th at 3:00 pm slot for me. Across all 546 τ² traces, the median non-opening user turn is 22 words, only 19.0% of traces contain even one turn of five words or fewer, and 5.1% of follow-up turns are short.

Where the Gap Comes From

The scenario is a different artefact. τ²-bench gives its user simulator a task description and a protocol: say what you want, and emit ###STOP### when you are done. Veris gives its actor a persona specification, and most of that specification is about how the person talks rather than what they want.

τ²-bench user simulator

task prompt + protocol

3 fields
  • The task — what to achieve, and the facts needed to achieve it
  • Sentinel tokens###STOP###, ###TRANSFER###, ###OUT-OF-SCOPE###
  • Nothing specifying register, pacing, or how information is released

Veris persona spec

role + objectives + knowledge + style

8 fields
  • role, objectives, knowledge — who they are and what they know
  • style.descriptor — the register in a sentence
  • style.lexicon — the words this person actually uses
  • style.structures — e.g. "reveals details as asked", "mixes statements with questions"
  • style.mechanics — capitalisation, punctuation, typos
  • style.avoid — the phrasings that break character
  • style.samples — real turns in voice: "Cool, what options do you have?", "Also what's the material on that one?"
  • style.transformations — how a formal sentence becomes this person's sentence

Five of the eight Veris fields describe how the person talks. None of the τ² fields do.

That difference is the thing being measured, not a confound we should have controlled for. The +20.6-point goal-dump gap is what style.structures: "reveals details as asked" and style.samples exist to produce. If we imported τ²-bench's task-prompt format into Veris and asked whether Veris still won on goal-dumping, the answer would be much closer to no, because we would have deleted the lever.

The Lead Is a Lower Bound

The two user simulators are from different model generations, and the direction of that difference works against us.

The model playing the customer on each side. The judge is the same model on both sides; only the actor differs.
SideUser-simulator modelGeneration
Verisazure/gpt-5.4-miniGPT-5, trained hardest toward assistant behaviour
τ²-bench-retailgpt-4.1-mini-2025-04-14GPT-4, less assistant-trained than the generation above

The newer generation is optimised into being an assistant, which is exactly the wrong prior for playing a customer. Veris is running the harder model for this task and still leads on every check. A same-generation comparison would most likely widen the gap, but we have not run one, so we are not claiming a number for it.

Try It Yourself

The rubric is five score_model graders under one multi category, and nothing about it is Veris-specific: it reads a trace and grades the role="user" turns. Every check is a system prompt plus this response schema:

{
  "result":        "true" | "false" | "na",
  "justification": string
}

// true = LLM-like failure detected
// false = looks human
// na    = not enough persona turns to judge

Aggregate with passes / (passes + fails), skipping NA in both terms, and you have a category rate comparable to the ones above. Run it on your own user simulator before you trust its completion numbers. If it scores like τ²-bench-retail on identity confusion, your agent is being evaluated by another agent.

Then audit the judge, which is the step we nearly skipped. Take twenty traces it flagged, grep the user turns for the markers the check names, and read the ones that do not match. A rubric that fires on the right traces for the wrong reasons will still rank two systems correctly and still tell you nothing about what to fix.

The τ² traces are public on HuggingFace and the rubric is five prompts, so it is cheap to check and easy to argue with. Re-run it and tell us what you get.

Conclusion

Veris's simulated users score 74.2% on the five-check naturalness rubric; τ²-bench-retail's score 60.9%. Veris leads on all five checks and all three behavioural dimensions, with the widest gaps on identity confusion (45.5% against 12.5%) and goal-dumping in the opener (91.5% against 70.9%). Both sides were judged by the same model, on byte-identical prompts, with the same aggregation, over 200 Veris production simulations and all 546 traces in the public τ² corpus.

The 13.3-point lead is a floor. Veris runs its actor on a GPT-5-generation model, trained harder toward assistant behaviour than the GPT-4-generation model τ² uses, and wins on every check from the weaker family for the task. When we audited the identity-confusion check against the raw traces, we found no evidence for the failures it charged us with, which means 45.5% probably understates us and the +33-point gap is more likely conservative than inflated.

The comparison has real limits. The samples are asymmetric, 200 Veris simulations against 546 τ² traces, so the confidence interval is tighter on their side than on ours. The two sides also ran against different agents: Veris against four customer-facing agents, τ² against Qwen3.5-9B, and pushback in particular is agent-sensitive, since a user can only push back on something the agent did. Most importantly, all of this measures how a simulated user sounds, not whether it tests the right things. Naturalness is necessary, not sufficient.

The practical point survives all of that. The model playing your customer sets the difficulty of every conversation you grade. If it opens with 42 words and every identifier it owns, your agent is never tested on the discovery work that consumes most real support conversations, and the completion rate you report is for a conversation that will not happen. Read the user side of your own traces before you trust the number on the agent side.

Build a benchmark on users that behave like users

Your domain, your backends, your customers, with personas specified down to the lexicon.

Explore Veris Benchmark