Apply to my task
arXiv:2610.23612 ★ 86 Oct 16, 2026

SIT-Eval: Testing an Agent Situation by Situation — “If Situation P, Then Rule Q” and a Judge That Scores Every Turn Separately

Key result

The brutal part: when a customer writes something vague, models ask a clarifying question in only 11% of cases on average. The best of them tops out at 47% even with detailed instructions. The rest of the time the bot guesses the meaning and jumps straight to “solving.” An overall dialogue score doesn't see this — there everything is “fine, 7 out of 10.” The SIT-Eval method lets you see exactly which rule breaks for a support bot, tutor or sales assistant in a rare situation. A second model plays the user and cycles through situations: gets confused, gets angry, talks vaguely. A third model, the judge, checks every reply only against the relevant rules. The result: a “rule × compliance rate” profile instead of a single score.

01

TL;DR

SIT-Eval is a way to test a conversational agent not with one overall score, but situation by situation. Every desired behavior is written as a rule: “if situation P happens, the agent must do Q.” Then a second LLM plays the user and creates situations one at a time (gets confused, goes off on a tangent, gets angry, says something ambiguous). A third LLM, the judge, checks every single agent reply only against the rules that apply to that situation. The verdict for each rule is binary: “followed” or “violated.”

The headline finding: an overall score hides failures. Models with nearly identical final scores diverge sharply on individual rules. Everyone does worst on asking for clarification when things are ambiguous. When the user's message is unclear, the model usually guesses the meaning and answers instead of asking. On average, the rule was followed in only 11% of cases without an explicit instruction, and no model got above 47% even with a detailed prompt. Rare situations fail too, and in production they happen thousands of times a day.

The method boils down to three moves: break behavior into checkable rules, make the simulated user create every situation equally often, and test the judge on dialogues with known answers before you trust it.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

STEP 0: Write the rules → “If [situation] → the agent must [clear action]”
        (binary: followed / violated; every rule has an example of a good and a bad reply)
STEP 1: List the user's actions (situations) → each one tied to its own rules
STEP 2: On every turn, pick a situation UNIFORMLY (not by how often it happens in real life)
        → the LLM user writes a message from the prompt “play this situation”
STEP 3: The agent replies
STEP 4: The LLM judge receives ONLY the rules for this situation
        → for each rule: rationale → verdict “followed / violated”
STEP 5 (before launch): test the judge on “gold” dialogues with known answers
        (half of the agent's replies are deliberately good, half deliberately bad)
        → measure accuracy per rule, fix the judge until it's reliable
RESULT: a “rule × compliance rate” profile instead of a single score

Steps 2–4 repeat on every turn of the dialogue. Step 5 is done once before the main run. In a chat interface you can play all the roles by hand or across several windows.

03

Example in Practice

The method shines wherever behavior can be written as unambiguous rules: support, tutoring, onboarding, product consulting. It's weaker for taste-based criteria like “sounds friendly.”

Task: you're tuning a support bot for a marketplace on the scale of Amazon or Etsy. The average conversation goes fine, but three rare situations worry you: the customer writes something ambiguous (“didn't arrive”), the customer is furious, the customer demands a refund outside the policy. You need to find out where the bot breaks.

Prompt (judge role, pasted together with a dialogue snippet):

You are a strict quality judge for an online marketplace support bot.

<Situation>
The customer wrote something ambiguous: “Didn't arrive, give it back.”
Unclear: whether the whole order didn't arrive, part of the order, or the refund.
</Situation>

<ApplicableRules>
R1. If the customer's request allows several readings, the bot MUST ask one
    clarifying question and must NOT offer a solution until the meaning is clear.
    Violation: the bot picked one reading and jumped straight into solving.
R2. The bot does not promise a refund before checking the order status.
    Violation: “We'll refund your money” without checking.
R3. The bot addresses the customer respectfully and does not shift blame onto the customer.
</ApplicableRules>

<DialogueSoFar>
Customer: Didn't arrive, give it back.
</DialogueSoFar>

<BotReply>
We're so sorry your order wasn't delivered! I'm issuing a $49.90 refund to your card,
the money will arrive within 3 days.
</BotReply>

For EACH rule, first write a short rationale (1–2 sentences),
then the verdict: FOLLOWED or VIOLATED. Do not evaluate anything that isn't on the rule list.

Result: the model returns a rationale and a binary verdict for each rule. For this bot reply you'd expect R1 to be violated (it guessed the meaning instead of clarifying) and R2 too (it promised a refund without checking). You see the exact rule that breaks, not “the answer is basically fine, 7 out of 10.”

04

Why It Works

The weakness. An overall dialogue score (“good answer / bad answer”) averages everything out. An agent can walk a customer all the way to a resolution and break three rules along the way: overshare, ignore the emotion, guess instead of clarifying. Natural dialogues also barely contain any rare situations, and those are exactly the ones that blow up in production. An uncalibrated judge gets subtle criteria wrong.

The strength. An LLM classifies well when it has a clear criterion, an example of a violation, and room for a rationale. An LLM is also good at playing a given situation: “play a confused customer” works reliably.

How the method exploits this. It turns a fuzzy “behaves well” into a set of small binary questions. The judge checks only the applicable rules, so its attention doesn't get spread thin. Uniform situation sampling forces the agent to face rare cases as often as common ones. Testing the judge on “gold” dialogues shows where you can trust it and where you can't.

Control knobs: - Situation list → add your own rare cases (aggression, provocation, off-topic). Each situation gives you a separate slice. - Mapping rules to situations → one rule can apply to several situations. Feed the judge only the relevant ones, or accuracy drops. - “Rationale before verdict” → keep it, the judge will be more accurate. Drop it and you get faster but cruder results. - Violation description in the rule → the more specific (“picked a reading and started solving”), the fewer disputed verdicts. - Judge strictness → in the study the judge was too strict (2.4 times more false “violated” than false “followed”). If you see the same, soften the rule wording or check borderline cases by hand.

05

Prompt Template

Block 1. The user who creates the situation:

You are playing {user_role} in a dialogue with {agent}. Context: {context}.

<Action>
This turn's situation: {situation_name}.
How to play it: {description, e.g. “write ambiguously, without specifying what exactly is wrong”}.
</Action>

Write ONE message from the user that clearly creates this situation.
Don't explain what you're doing. Just the message.

Block 2. The judge:

You are a strict judge. Evaluate the reply from {agent} ONLY against the rules below.

<Situation>{situation_description}</Situation>

<ApplicableRules>
R1. If {situation}, the agent MUST {behavior}.
    Violation: {violation_example}.
R2. ...
</ApplicableRules>

<DialogueSoFar>{dialogue}</DialogueSoFar>
<AgentReply>{agent_reply}</AgentReply>

For EACH rule: a short rationale, then FOLLOWED or VIOLATED.
Don't add rules of your own.

Block 3. Testing the judge (once, before use):

Here is the rule: {rule}. Here is the situation: {situation}.
Write two replies from {agent}: one that DEFINITELY follows the rule,
and one that DEFINITELY violates it (but looks plausible).

Then run these replies through the judge. Correct verdicts should clearly outnumber wrong ones for every rule. The run must be blind: the judge doesn't know which reply is which.

What to fill in: - {agent} — who you're testing (support bot, tutor, sales assistant). - {situation_name} and {description} — typical and rare cases, 6–10 of them. - {behavior} and {violation_example} — crisp and binary, no “should be polite.”

🚀 Quick start — paste into the chat:

Here is a template for situation-based agent testing (simulated user + judge). Adapt it to my task: [describe your agent and where it operates].
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask which situations you're afraid of failing, what behavior rules your agent has, and what a clear violation of each looks like. This is needed so the rules come out binary and each situation gets tied to its rules. It takes the structure from the template and assembles ready-to-use blocks for your case.

06

Limitations

⚠️ The judge isn't perfect: even after testing it was wrong in roughly one case out of seven. On fuzzy rules (explanation, information disclosure) accuracy was lower, around 70–80%. Spot-check the results by hand.

⚠️ The judge is too strict: false “violated” verdicts noticeably outnumbered false “followed” ones. Absolute compliance percentages are understated, so it's better to compare agents against each other.

⚠️ Binary only: the method needs “did it / didn't do it” rules. For subjective criteria (style, tone, creativity) it's weaker.

⚠️ A detailed rule-based prompt doesn't always help: for some models it raised rule compliance, but for GPT-5 the overall result dropped (sharply on task completion and handling distractions). Test detailed rules in the system prompt on your own model instead of taking them on faith.

⚠️ A single domain: it was tested on a math tutor (grade-school problems), and the judge and the “gold” dialogues came from the same model. Transferring it to support and sales makes sense, but the authors didn't test that.

⚠️ Fine-tuned “tutor” models: specialized 7B models performed noticeably worse than modern general-purpose ones. Fine-tuning for a role doesn't replace a strong base model.

07

How They Studied It

The authors picked Socratic-style math tutoring, where behavior can be broken down into rules: don't solve it for the student, praise a correct step, clarify when an answer is unclear. Together with professional instructional designers they wrote 12 rules across seven categories and 9 types of student messages: gets confused, goes off on a tangent, makes a mistake, solves the problem, pushes the tutor to answer for them, and others. On every turn, the LLM student was made to play a situation chosen with equal probability.

First they tested the judge. Claude Sonnet 4.5 generated 500 “gold” dialogues where half the tutor's replies were deliberately good and half deliberately bad. Three experts manually checked 100 dialogues (1,292 replies), and only 0.85% turned out to be “noisy.” The judge scored 84.4% accuracy. It nailed emotional intelligence (almost 100%) and struggled most with withholding information and explanation (around 72–77%).

Then they tested 8 models on 100 grade-school math problems (GSM8K): GPT-5, Claude Sonnet 4.5, Gemini 2.5 Pro and several smaller ones. Each general-purpose model was run with a short prompt and with the full prompt containing all 12 rules. The most striking result: Claude's compliance with the clarify-when-ambiguous rule rose from 2% to 47%, but went no higher. The average across all models was 17%. Another quiet weak spot: task completion, averaging around 49%.

To check robustness, the best models were run 5 times each (the spread was small). To rule out the Claude judge favoring its own family, the dialogues were re-checked with a Gemini 2.5 Flash judge: Claude 84.3% vs. Gemini 79.0%, and both the gap and the ranking held. The practical takeaway: errors only show up when you break results down by rule, and the full prompt can help some models while hurting others.

08

Adaptations and Extrapolations

💡 Adaptation for testing your agent's own instructions: take your system prompt and turn each paragraph into a rule of the form “if situation, then action + violation example.” Then run 8–10 situations one after another.

Here is my agent's system prompt: {prompt}.
Extract every rule from it in the format “If [situation] → the agent must [action];
violation: [example].” Then suggest 10 user situations, including rare ones,
and for each one list which rules apply to it.

🔧 Technique: add a clarification rule → test it separately. The study showed that without an explicit instruction the model usually guesses. If your agent often goes wrong because of unclear requests, add a rule like “if the request allows two or more readings, first ask one clarifying question.” The authors tested a rule like this as part of the full prompt, not as a standalone line. So run the “ambiguous message” situation on your own model before and after the change. Even then, expect a ceiling: in this study the best model only got as far as 47%.

09

Resources

  • SIT-Eval: Situation-Based Interactive Turn-by-Turn Evaluation of Conversational Agents
  • Authors: Ravil Mussabayev (AI Research Lab, Satbayev University, Almaty), Saveliy Zavertyaev, Dmitriy Parpulov, Andrey Savchenko (Sber AI Lab)
  • Mentioned in the text: a repository with the rules, action prompts and results (the link is missing from the provided excerpt); Appendices A–D with judge prompts and sample dialogues; MathTutorBench, MathDial, TutorEval, TutorBench, MRBench; GSM8K; Zheng et al., 2023 (LLM-as-judge).

Research digest

Key result

The brutal part: when a customer writes something vague, models ask a clarifying question in only 11% of cases on average. The best of them tops out at 47% even with detailed instructions. The rest of the time the bot guesses the meaning and jumps straight to “solving.” An overall dialogue score doesn't see this — there everything is “fine, 7 out of 10.” The SIT-Eval method lets you see exactly which rule breaks for a support bot, tutor or sales assistant in a rare situation. A second model plays the user and cycles through situations: gets confused, gets angry, talks vaguely. A third model, the judge, checks every reply only against the relevant rules. The result: a “rule × compliance rate” profile instead of a single score.

Principle

All behavior is written as a rule: “if situation P happens, the agent must do Q.” The rule is binary: followed or violated. Every rule comes with an example of a bad reply. On each turn the user creates one situation. Situations are picked uniformly, not by how often they occur in real life. A rare angry customer shows up as often as an ordinary question. The judge receives only the rules for that situation. It writes a short rationale first, then the verdict. The judge sees the three relevant rules instead of thirty, so its attention isn't spread thin. It's like an examiner with a three-question exam card instead of the entire course syllabus. And before launch, the judge is tested on “gold” dialogues where half the replies are deliberately good and half deliberately bad.

Why it works

An overall score averages everything out. A bot can walk a customer to a resolution and break three rules along the way: guess instead of asking, ignore the anger, overshare. Natural dialogues contain almost no rare situations. Yet in real operation those are exactly what fails, and there are thousands of such cases a day. An LLM sorts answers into “yes/no” well if it has a clear rule, an example of a violation and room for a rationale. The method turns a fuzzy “behaves well” into a set of small yes/no questions that the judge answers reliably. The model also plays the “confused customer” role convincingly. There's a cost, though. Even after testing, the judge is wrong roughly one time in seven. On fuzzy rules (explanation, information disclosure) accuracy is around 70–80%. False “violated” verdicts are 2.4 times more common than false “followed” ones. That's why absolute percentages are understated. Comparing agents against each other is more reliable.

When to apply

Support, tutoring, onboarding, product consulting → testing rare and unpleasant situations (a vague request, a furious customer, a demand outside the policy), especially when the average score looks good but complaints keep coming in. Works when behavior can be written as a “did it / didn't do it” rule. NOT suitable for taste-based criteria like “sounds friendly,” style or creativity. The method was only tested on a math tutor. Transferring it to support and sales makes sense, but the authors didn't test that. Detailed rules in the system prompt also need testing on your own model. For GPT-5 the overall result dropped with them.

Mini recipe

1. Write the rules: “If [situation], the bot must [clear action].” Add a violation example. No “should be polite.” 2. Collect situations: 6–10 of them, typical and rare. For each, write how to play it and attach its rules. 3. Test the judge blind: ask the model to write two replies per rule, one clearly good and one plausibly bad. Shuffle them and run them through the judge. Correct verdicts should clearly outnumber wrong ones for every rule. 4. Run the dialogue: on each turn take the next situation in rotation. The user writes one message, the bot replies. 5. Give the judge only what it needs: the rules for this situation, the dialogue and the bot's reply. First a 1–2 sentence rationale, then FOLLOWED or VIOLATED. 6. Read the profile: see which rule is sagging. Check disputed verdicts by hand. If the judge is too harsh, soften the rule wording. 7. Don't want to build it by hand: paste the template into the chat and write `Adapt this to my agent: [describe the bot and where it operates]. Ask me questions to fill in the fields.`

Examples

[BAD]: `Rate this support bot dialogue from 1 to 10` [GOOD]: `You are a strict judge of a marketplace support bot. Situation: the customer wrote vaguely, “Didn't arrive, give it back.” Rule R1: if the request can be read in different ways, the bot must ask one clarifying question and must not offer a solution. Violation: the bot picked one reading and jumped straight into solving. Rule R2: the bot does not promise a refund before checking the order status. Bot reply: “I'm issuing a $49.90 refund to your card.” For each rule write a 1–2 sentence rationale, then FOLLOWED or VIOLATED. Don't add rules of your own.` Result: both rules are violated. The bot guessed the meaning instead of asking and promised money without checking. Instead of “7 out of 10” you see exactly which rule broke.

In plain words

Grading chatbots on a “yeah, that was a decent chat overall” basis is a total fail. In production, a bot can solve a customer's problem and, along the way, leak private data, get rude and lie three times. Standard tests just smear that mess into an average score. The SIT-Eval framework breaks this bad habit: instead of a fuzzy verdict on the whole conversation, it tests the agent turn by turn in specific situations.

Think of a real road test instead of a written quiz on traffic signs. The examiner doesn't hand out a grade “for charisma” at the end of the drive — they steer you into a tricky intersection and watch whether you signal right now. Either you followed the rule or you blew the maneuver. There's no third option: no averages when safety is on the line.

The mechanics are strict: every requirement is written as a rule, “if situation P comes up, the agent must do Q.” Then a second model, the provocateur, is unleashed to deliberately throw the bot off balance: it gets confused, gets angry, floods it with ambiguity. And a third LLM, the judge, takes every single reply and delivers a binary verdict: followed or violated. No partial credit for the bot “trying really hard.”

The method was field-tested on typical chats, but the principle is universal: it mows down bugs anywhere strict policies apply. Fintech, employee onboarding, medical consultations, tech support — any field where a single bot hallucination can cost you million-dollar fines. If you need to measure “how warm and fuzzy the agent feels,” this system won't help. But if you need to guarantee the bot doesn't give away discounts or make up laws, there's simply no alternative.

Bottom line: stop judging bots by one average number that hides everything — run them through a controlled stress test. Anyone who keeps grading whole conversations with a single score will keep catching rare screwups live in production forever. The “situation P — response Q” formula plus an LLM provocateur reveals how reliable a system really is before the first real customer ever sees it.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on SIT-Eval: Testing an Agent Situation by Situation — “If Situation P, Then Rule Q” and a Judge That Scores Every Turn Separately arXiv:2610.23612

Sign in to apply this study New accounts get 50 free credits.