This prompt is a diagnostic instrument for evaluation platform teams who operate multiple LLM judges and have already observed unacceptable disagreement in their scoring pipeline. The job-to-be-done is not to calculate agreement metrics—you should have already computed Cohen's Kappa, pairwise agreement percentages, or Krippendorff's Alpha before reaching for this prompt. The job is to explain why the judges disagree. You need a structured root cause analysis that tells you whether the problem lives in the rubric (ambiguous criteria, missing edge-case guidance), the judges (model-specific bias, inconsistent calibration, position effects), or the data (genuinely ambiguous items, adversarial examples, distribution shift from the rubric's design range). The ideal user is an evaluation infrastructure engineer or ML engineer who owns judge quality and can act on calibration recommendations.
Prompt
Inter-Rater Disagreement Root Cause Analysis Prompt Template

When to Use This Prompt
Diagnose the root causes of scoring disagreements between LLM judges before they erode trust in your evaluation pipeline.
Use this prompt after a batch scoring run where at least two judges have produced scores on the same items and your agreement metrics have crossed a concerning threshold—typically Cohen's Kappa below 0.6 or pairwise agreement below 80%, though your team's tolerance may vary. Feed the prompt the items, the scores from each judge, the rubric that was used, and any relevant metadata about the judges (model version, temperature, system prompt). The output you should expect is a disagreement taxonomy that classifies each divergent case into categories such as rubric ambiguity, judge leniency bias, genuine edge case, or position effect, followed by calibration recommendations like rubric clarification, judge re-anchoring, or exclusion rules for ambiguous items. This is an offline diagnostic workflow, not a real-time scoring component. Do not wire this prompt into a production scoring pipeline; it is designed for periodic evaluation health checks, perhaps run weekly or after any judge model or rubric update.
Do not use this prompt when you have only a single judge, when you haven't yet computed agreement statistics, or when you need a real-time arbitration mechanism for conflicting scores. This prompt analyzes patterns across a batch; it is not a tiebreaker for individual items. Also avoid it when your judges use fundamentally different scoring scales or rubrics—the analysis assumes a shared evaluation framework. If you skip the prerequisite agreement computation, you risk feeding the prompt data where disagreement is actually within acceptable bounds, wasting analysis tokens on noise. Before running this prompt, ensure you have: (1) a batch of scored items with judge identifiers, (2) the exact rubric text each judge was given, (3) computed agreement metrics to confirm a problem exists, and (4) a human reviewer available to act on the calibration recommendations. The next step after receiving the output is to prioritize the most frequent disagreement category and implement the corresponding fix, then re-run the scoring batch and re-measure agreement to verify improvement.
Use Case Fit
Where this prompt works and where it does not.
Good Fit: Multi-Judge Eval Pipelines
Use when: You run multiple LLM judges (or human + LLM) against the same outputs and need to diagnose scoring divergence. Guardrail: Ensure each judge's score and rationale are logged separately before analysis. This prompt requires pairwise score data, not aggregate metrics.
Bad Fit: Single-Judge Setups
Avoid when: Only one judge is scoring outputs. Root cause analysis of disagreement requires at least two independent assessments. Guardrail: If you have a single judge, use the Score Calibration Drift Diagnosis prompt instead to compare judge scores against a human baseline.
Required Inputs
What you need: Paired judge outputs (scores + rationales), the original prompt, the evaluated output, and the scoring rubric. Guardrail: Missing rationales make root cause attribution unreliable. If judges only return scores, instrument them to capture reasoning before running this analysis.
Operational Risk: Rubric Ambiguity
Risk: The prompt may attribute disagreement to judge bias when the real cause is a vague rubric. Guardrail: Run the rubric through a clarity check before blaming judges. If rubric criteria can be interpreted multiple ways, fix the rubric first, then re-evaluate disagreement.
Operational Risk: Position Bias
Risk: LLM judges may exhibit position bias, favoring the first or last output in a pair. Guardrail: Randomize output order presented to each judge. If disagreement patterns correlate with position, flag position bias as a primary root cause before analyzing other factors.
Operational Risk: Judge Model Mismatch
Risk: Different judge models (e.g., GPT-4 vs. Claude) may have inherent scoring tendencies that produce systematic disagreement. Guardrail: Include judge model identity as a feature in the analysis. If disagreement clusters by model family, consider calibrating per-model thresholds or standardizing on a single judge model.
Copy-Ready Prompt Template
A ready-to-use prompt for diagnosing why two LLM judges disagree on a score, producing a structured root cause taxonomy and calibration recommendations.
This prompt template is designed for evaluation platform teams who need to move beyond simple agreement metrics and understand why judges diverge. It accepts the original input, the outputs from two judges, their scores, and the evaluation rubric. The model is instructed to classify the disagreement into a structured taxonomy—rubric ambiguity, judge bias, genuine edge case, or noise—and to produce actionable calibration recommendations. Use this when pairwise agreement drops below a threshold or when you are onboarding a new judge and need to align it with an existing baseline.
textYou are an expert evaluation auditor. Your task is to analyze a scoring disagreement between two LLM judges and determine the root cause. ## INPUT DATA - **Original User Prompt:** [ORIGINAL_PROMPT] - **Model Output Under Evaluation:** [MODEL_OUTPUT] - **Evaluation Rubric:** [RUBRIC_TEXT] - **Judge A Score and Justification:** [JUDGE_A_OUTPUT] - **Judge B Score and Justification:** [JUDGE_B_OUTPUT] ## TASK 1. **Classify the Disagreement:** Assign the primary root cause from the taxonomy below. - `RUBRIC_AMBIGUITY`: The rubric is vague, contradictory, or missing criteria for this case. - `JUDGE_BIAS`: One judge exhibits a systematic bias (e.g., length bias, stylistic preference, position bias). - `GENUINE_EDGE_CASE`: The model output is a legitimate borderline case where reasonable raters can disagree. - `JUDGE_NOISE`: The disagreement appears random, inconsistent, or unjustified by either the rubric or the output. 2. **Provide Evidence:** Quote the specific text from the rubric, justifications, or model output that supports your classification. 3. **Recommend Calibration:** Suggest a concrete action to resolve the disagreement. - For `RUBRIC_AMBIGUITY`: Propose a clarification to the rubric text. - For `JUDGE_BIAS`: Describe the bias pattern and suggest a countermeasure (e.g., de-biasing instruction, position swapping). - For `GENUINE_EDGE_CASE`: Recommend a tie-breaking policy or a human review flag. - For `JUDGE_NOISE`: Suggest a temperature adjustment or a consistency check (e.g., majority vote with a third judge). ## OUTPUT FORMAT Return a single JSON object with the following keys: - `disagreement_category` (string): One of the four taxonomy values. - `evidence_summary` (string): A concise explanation with direct quotes from the input data. - `calibration_recommendation` (string): A specific, actionable step to improve alignment. - `confidence_score` (float): Your confidence in this root cause analysis, from 0.0 to 1.0. ## CONSTRAINTS - Do not re-score the model output. Your job is to analyze the *judges' behavior*. - If the rubric is missing entirely, classify as `RUBRIC_AMBIGUITY`. - Base your analysis strictly on the provided text. Do not introduce external knowledge about the domain.
To adapt this template, replace the square-bracket placeholders with your actual data. The [RUBRIC_TEXT] should be the exact instructions given to your judges, as even small wording differences are often the root cause of divergence. The [JUDGE_A_OUTPUT] and [JUDGE_B_OUTPUT] fields must include both the numeric or categorical score and the judge's written justification, as the evidence for bias or noise is typically found in the justification, not the score itself. For high-stakes evaluation pipelines, always route outputs classified as GENUINE_EDGE_CASE to a human review queue rather than accepting an automated tie-break. Before deploying this prompt, run it against a golden dataset of known disagreement causes to verify that the taxonomy classification matches your team's internal definitions.
Prompt Variables
Required inputs for the Inter-Rater Disagreement Root Cause Analysis prompt. Each placeholder must be populated before the prompt can produce a reliable disagreement taxonomy and calibration recommendation.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[JUDGE_OUTPUTS] | Array of scored outputs from multiple LLM judges for the same item, including judge ID, score, and optional justification | [{"judge_id":"judge-1","score":3,"justification":"Response partially addresses the query but misses the second constraint."},{"judge_id":"judge-2","score":5,"justification":"All constraints met, tone is appropriate."}] | Must be valid JSON array with at least 2 judge entries. Each entry requires judge_id and score fields. Justification is optional but strongly recommended for root cause depth. |
[RUBRIC_DEFINITION] | The scoring rubric or criteria that all judges were instructed to apply, including scale anchors and dimension definitions | {"dimensions":[{"name":"completeness","weight":0.4,"scale":{"1":"Missing all required elements","5":"All required elements present and well-formed"}}],"overall_scale":{"1":"Unacceptable","5":"Excellent"}} | Must be valid JSON with at least one dimension and a defined scale. Vague rubrics like 'score 1-5' without anchors will degrade analysis quality. Validate dimension count matches what judges were given. |
[ITEM_CONTENT] | The original prompt, question, or task that was presented to the model being evaluated by the judges | "Summarize the following research paper in 3 bullet points, preserving all key findings and noting any limitations mentioned by the authors." | Must be non-empty string. For multi-turn items, include full conversation array. Content should match exactly what the model and judges saw. Truncation or paraphrasing here creates false disagreement signals. |
[MODEL_OUTPUT] | The actual output produced by the model under evaluation that all judges scored | "The paper finds that X improves Y by 12%. Limitations include small sample size and single-domain testing. The authors recommend further study in production environments." | Must be non-empty string. For multi-turn, include full model response array. This is the artifact judges scored; mismatch between this and what judges actually saw is a common root cause of false disagreement. |
[JUDGE_METADATA] | Optional context about each judge: model name, version, temperature, system prompt hash, or deployment date | [{"judge_id":"judge-1","model":"gpt-4o","temperature":0,"prompt_version":"v2.3"},{"judge_id":"judge-2","model":"claude-sonnet-4-20250514","temperature":0.1,"prompt_version":"v2.3"}] | Optional but strongly recommended. When absent, cross-model drift and prompt version mismatches cannot be diagnosed. Validate that judge_id values match those in [JUDGE_OUTPUTS]. Null allowed if metadata is unavailable. |
[AGREEMENT_THRESHOLD] | The minimum pairwise agreement rate or score delta below which disagreement is considered significant and requires root cause analysis | 0.7 | Must be a float between 0.0 and 1.0 for agreement rate, or a positive integer for max score delta. Default to 0.7 if not specified. Thresholds below 0.5 produce noisy analysis; thresholds above 0.95 may over-flag minor calibration differences. |
[OUTPUT_SCHEMA] | The expected structure for the disagreement taxonomy and calibration recommendations output | {"disagreement_cases":[{"judge_pair":["judge-1","judge-2"],"score_delta":2,"root_cause_category":"rubric_ambiguity","evidence":"Judges interpreted 'key findings' differently","confidence":0.85}],"calibration_recommendations":[{"target":"rubric","action":"Add examples for 'key findings' boundary"}],"pairwise_agreement_metrics":{"cohen_kappa":0.62,"percent_agreement":0.74}} | Must be valid JSON schema or example structure. Validate that root_cause_category values are constrained to a defined taxonomy. Schema conformance check required before downstream consumption. |
Implementation Harness Notes
How to wire the disagreement analysis prompt into an evaluation debugging workflow with validation, logging, and human review gates.
This prompt is designed to be called programmatically as part of an automated evaluation debugging pipeline, not as a one-off chat interaction. The typical trigger is a scheduled job or a webhook that fires when inter-rater agreement metrics (such as Cohen's Kappa or raw agreement percentage) drop below a configured threshold for a specific rubric or judge pair. The harness should collect the raw scoring data, format it into the [DISAGREEMENT_DATA] input block, and call the LLM. The output is a structured disagreement taxonomy that downstream systems can use to flag rubric items for revision, quarantine a biased judge, or escalate edge cases for human review.
Input assembly: The [DISAGREEMENT_DATA] placeholder expects a JSON array of scoring records, each containing item_id, judge_a_score, judge_b_score, rubric_item, item_text, and optional judge_a_rationale and judge_b_rationale. The harness should query your eval database for all items where two judges disagreed within the target time window. Model choice: Use a model with strong reasoning capabilities (such as GPT-4o, Claude 3.5 Sonnet, or Gemini 1.5 Pro) because the task requires comparing rationales and inferring root causes. Avoid smaller or faster models for this analysis; misclassification of disagreement types will erode trust in the entire judge fleet. Validation: After receiving the output, validate that the JSON conforms to the expected schema—particularly that every disagreement_category value is from the allowed enum (rubric_ambiguity, judge_bias, genuine_edge_case, scale_misalignment, rationale_contradiction, unknown). Reject and retry once if the schema is invalid or if the confidence field is missing for any entry.
Logging and observability: Log every analysis run as an event with the input disagreement count, the output taxonomy distribution, the model used, and the latency. Attach the full prompt and response to your trace store (e.g., LangSmith, Braintrust, or your internal logging system). This is critical because disagreement root cause analysis is itself a judgment call—you need to be able to audit the analyzer's decisions later. Human review gate: For any disagreement classified as genuine_edge_case with confidence below 0.8, route the item to a human review queue. These are the cases most likely to reveal gaps in your evaluation rubric or genuine ambiguity in your task definition. Do not auto-apply calibration adjustments based solely on the LLM's output; always require human sign-off before modifying judge prompts, retraining judge models, or updating rubric definitions.
Integration points: Wire the output into your rubric management system to flag items with high rubric_ambiguity rates for revision. Feed judge_bias signals into your judge calibration dashboard. Use scale_misalignment detections to trigger a score normalization pass. The recommended_action field in each output record should map to an automated workflow—for example, 'revise_rubric' creates a ticket in your rubric backlog, 'recalibrate_judge' triggers a calibration run against human-annotated samples, and 'escalate_for_review' opens a human review task. Avoid the temptation to close the loop fully automatically; disagreement analysis is diagnostic, not prescriptive, and acting on incorrect root cause labels will compound errors across your evaluation pipeline.
Expected Output Contract
Fields, format, and validation rules for the JSON response produced by the Inter-Rater Disagreement Root Cause Analysis prompt. Use this contract to parse, validate, and store analysis results in your evaluation pipeline.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
disagreement_id | string (UUID v4) | Must match the input disagreement ID. Parse check: valid UUID format. | |
analysis_timestamp | string (ISO 8601 UTC) | Must be a valid ISO 8601 datetime in UTC. Parse check: Date.parse() succeeds and timezone is Z. | |
judge_pair | object | Must contain judge_a and judge_b string fields matching input judge IDs. Schema check: both fields present and non-empty. | |
agreement_metrics | object | Must contain raw_agreement (float 0-1), cohen_kappa (float -1 to 1), and total_samples (integer > 0). Validation: range checks on all numeric fields. | |
disagreement_taxonomy | array of objects | Each object must have category (enum: rubric_ambiguity, judge_bias, edge_case, position_effect, length_bias, genuine_ambiguity, other), count (integer >= 0), percentage (float 0-100), and evidence_examples (array of strings, max 3). Schema check: category in allowed enum. Sum of percentages must be 100 ± 1. | |
root_cause_attribution | object | Must contain primary_cause (string from taxonomy enum), confidence (float 0-1), supporting_evidence (string, min 50 chars), and alternative_causes (array of strings, max 3). Validation: primary_cause in allowed enum. Confidence threshold: must be >= 0.6 for primary_cause assignment. | |
calibration_recommendations | array of objects | Each object must have target (enum: rubric, judge_a, judge_b, both), action (string, min 20 chars), priority (enum: critical, high, medium, low), and expected_impact (string, min 20 chars). Schema check: target and priority in allowed enums. Array must contain 1-5 items. | |
human_review_required | boolean | Must be true if primary_cause confidence < 0.8 or if edge_case percentage > 30. Validation: boolean type check. Approval required flag for downstream workflow routing. |
Common Failure Modes
Inter-rater disagreement analysis fails silently when the diagnosis is vague, the evidence is thin, or the fix targets the wrong layer. These cards cover the most common production failure modes and how to guard against them.
Vague Disagreement Taxonomy
What to watch: The prompt produces generic labels like 'subjective difference' or 'judge error' without specifying the mechanism. This makes the analysis useless for calibration. Guardrail: Require the output to cite a specific disagreement class (rubric ambiguity, position bias, length bias, stylistic preference leakage, genuine edge case) with a mandatory evidence pointer to the conflicting rubric dimension or output segment.
Ignoring Low-Severity Systematic Bias
What to watch: The analysis focuses only on high-severity score divergences and misses a small but consistent bias (e.g., one judge always penalizes brevity by 0.5 points). Over time, this drift corrupts the score distribution. Guardrail: Include a pairwise agreement metric and a per-dimension mean score delta in the output schema. Flag any dimension where the mean delta exceeds a configured threshold, even if individual disagreements are within tolerance.
Confusing Rubric Ambiguity with Judge Incompetence
What to watch: The prompt attributes disagreement to 'judge misunderstanding' when the real root cause is an underspecified rubric criterion (e.g., 'conciseness' without a word limit). This leads teams to recalibrate judges instead of fixing the rubric. Guardrail: Instruct the prompt to first test whether the rubric criterion itself is objectively measurable. If two reasonable humans would interpret it differently, classify the root cause as rubric ambiguity before blaming the judge.
Missing Position and Order Effects
What to watch: In pairwise or multi-output comparisons, the prompt fails to check whether output order influenced the disagreement. A judge might consistently prefer the first option, creating false divergence signals. Guardrail: If the input data includes presentation order, require the analysis to compute a position-bias score. If order data is unavailable, flag this as a known blind spot in the output limitations section.
Uncalibrated Confidence in Root Cause
What to watch: The prompt assigns a single root cause with high confidence when the evidence supports multiple contributing factors. Downstream automation acts on a false diagnosis. Guardrail: Require the output to include a confidence score and a ranked list of contributing factors with proportional attribution. Add a validation rule that rejects analyses where a single factor claims more than 90% attribution without explicit justification.
Ignoring Genuine Edge Cases as Noise
What to watch: The prompt classifies all disagreement as error, missing cases where the input is genuinely ambiguous and reasonable judges should disagree. This leads to overfitting rubrics to eliminate healthy variance. Guardrail: Include a 'genuine ambiguity' classification in the taxonomy. Require the prompt to test whether the disagreement persists when the rubric is clarified. If so, flag the case for human review and potential rubric boundary documentation rather than forced alignment.
Evaluation Rubric
Use this rubric to test the quality of the root cause analysis before trusting it. Each criterion targets a specific failure mode common in inter-rater disagreement diagnosis.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Disagreement Taxonomy Completeness | Every disagreement instance is assigned to exactly one taxonomy category (rubric ambiguity, judge bias, genuine edge case, or other) | Unlabeled disagreements remain; multiple categories assigned to same instance without justification | Parse output JSON; count disagreement instances in input vs. labeled instances in output; verify each has exactly one non-null category label |
Evidence Grounding | Each root cause claim cites specific score deltas, judge IDs, or rubric clauses from the input data | Root cause statements lack pointers to input data; claims reference external knowledge or parametric assumptions | Regex check for judge ID patterns, score values, or rubric clause references in each root cause explanation field |
Pairwise Agreement Metrics Accuracy | Reported Cohen's kappa or agreement rate matches manual calculation from input score matrix within ±0.02 tolerance | Reported agreement metrics differ from manual calculation by more than 0.02; metrics calculated on wrong judge pairs | Extract input score matrix; compute pairwise agreement independently; compare against reported metrics in output |
Calibration Recommendation Actionability | Each recommendation specifies a concrete change: rubric clause rewrite, judge recalibration step, or edge case documentation update | Recommendations are vague (e.g., 'improve rubric' or 'fix bias') without specific target clause, judge, or procedure | LLM-as-judge eval: secondary judge checks if each recommendation contains a specific action verb plus a target identifier |
Judge Bias Pattern Detection | Bias claims include direction (lenient/strict), affected criteria, and supporting score distribution evidence | Bias claims are unqualified (e.g., 'Judge A is biased') without direction, criteria, or distribution evidence | Schema check: bias_patterns array items must have non-null direction, affected_criteria, and evidence_summary fields |
Rubric Ambiguity Localization | Ambiguous rubric clauses are quoted verbatim from input rubric with specific suggested rewrites | Ambiguity claims paraphrase rubric without quoting; suggested rewrites are missing or generic | String containment check: each ambiguity finding must contain a quoted substring present in the input rubric text |
Edge Case Classification Precision | Genuine edge cases are distinguished from judge error with reasoning that references both judges' perspectives | Edge cases and judge errors are conflated; reasoning only cites one judge's view | LLM-as-judge eval: secondary judge checks if edge case entries contain balanced reasoning referencing both judges' scores or rationales |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base prompt and a single pair of judges. Remove strict output schema requirements initially—accept free-text disagreement analysis and iterate on the taxonomy. Use a small sample of 20–30 scored items with known disagreement patterns.
Simplify the prompt to:
codeAnalyze why [JUDGE_A] and [JUDGE_B] disagreed on [ITEM_ID]. Output: root cause category, evidence from both judges' reasoning, and a suggested rubric clarification.
Watch for
- Overly broad root cause categories that collapse distinct failure modes
- Confirmation bias when the analyst already suspects a specific cause
- Missing edge cases where both judges are partially right

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us