Business

The Arbitration Log: What to Record When Reviewers Clash

Antonio Evans9 min read

A split-screen diagram: left side shows two reviewer cards with scores (7 and 9) and confidence (0.8 and 0.6), right side shows the arbitration log entry with fields labeled: reviewer_id, score, confidence.
Key points

Key points

  1. 1Six mandatory fields (both reviewer IDs, both raw scores, both confidence values, the tie-breaker reason, the resolving reviewer ID, and a UTC decision timestamp) are enough to rebuild any arbitration call from the log alone.
  2. 2Free-text notes belong only in the tie-breaker field, so every other column stays queryable and comparable across rounds.
  3. 3Reviewer confidence should be logged as a separate signal from the score, because self-reported confidence and the substance of a review are known to diverge.
  4. 4A tiered retention policy (full record while live, structured record in midlife, summary-only after that) keeps audits affordable without losing the decision trail.

Why a disagreement log needs its own schema

Most review systems store an outcome: accept or reject, pass or fail, ship or hold. They rarely store the argument that produced it. When two reviewers score the same item far apart, the final number tells a later reader nothing about which evidence won, which reviewer was overruled, or whether the conflict exposed a defect in the rubric rather than in the item under review.

That gap matters more as review volume grows. Adjudication guidance is consistent on one point: preserve the initial judgments before discussion, classify the cause of the disagreement, and write a resolution another reviewer could reproduce (adjudication record practice). A log that only stores the winner fails all three tests. It cannot show whether the instructions were independently understandable, and it cannot show whether a later rule change should trigger rescoring of earlier cases.

The scale of disagreement is not a rounding error. A meta-analysis of 70 reliability coefficients from 48 studies covering 19,443 manuscripts found low agreement between independent reviewers, with a mean intraclass correlation of about 0.34 (Bornmann, Mutz and Daniel, summarized by ReviewerOne). Roughly two thirds of the variance in scores is not shared between reviewers. If a third of the signal is noise or genuine interpretive difference, the tie-breaker is doing real work and deserves a record.

The same logic applies outside academic peer review. Any workflow with two independent graders and an occasional third: content moderation escalations, grant panels, model-output review queues, loan or claims files. The schema below is domain-neutral; only the score scale changes.

The six mandatory fields

Build the log so that one row equals one resolved conflict. The primary fields are:

FieldTypeExampleWhy it must exist
arbitration_idstring, uniqueARB-2041Joins the log to the item, queue and round
item_idstringDOC-88117The artifact under review
reviewer_a_idstringrev_anikaFirst independent judgment, preserved and never overwritten
reviewer_b_idstringrev_marcusSecond independent judgment
score_anumber or label2 (reject)Raw score before any discussion
score_bnumber or label4 (accept)Raw score before any discussion
confidence_anumber4Reviewer A's stated confidence
confidence_bnumber2Reviewer B's stated confidence
tie_breaker_reasonenummissing_evidenceClassified cause, not prose
resolving_reviewer_idstringrev_priyaWho made the call
resolved_scorenumber or label3 (minor revision)The number that actually ships
decision_at_utctimestamp2026-03-04T14:22:07ZTotal order for replay and latency analysis

Two fields carry more weight than they look.

The reason field should be a closed list, not free text. Useful values include rubric_ambiguity, missing_evidence, factual_error, severity_difference and unresolved. The adjudication literature draws the same distinctions: a missed explicit rule is a label correction, a rule that permits two readings is a rubric change, and evidence that neither reviewer could establish stays unresolved (Rubrex on classifying causes). Encoding those as enum values lets you count them later. If rubric_ambiguity dominates, the problem is the rubric, not the reviewers.

The confidence field should never be discarded, even though it is imperfect. A study of review text found that reviewers sometimes give high confidence while expressing reservations, and low confidence alongside detailed, well-founded critique (Wu, Xi and Zhang on confidence consistency). Research also shows confidence can be estimated from review text itself, which suggests it is a real signal rather than a decorative checkbox (Bharti et al. on reviewer confidence). Logging it next to the score is what lets you ask, later, whether high-confidence outliers predict overturned decisions.

Keep the schema flat and append-only. Never mutate score_a or score_b after the fact. If a reviewer self-corrects, write a new row with resolves pointing at the original arbitration_id. Append-only tables are cheap to audit and impossible to quietly rewrite.

Worked example one: a rubric ambiguity, not a bad reviewer

Anika scores a support-policy answer 2 (incorrect) because it states the general refund window but omits a regional exception. Marcus scores it 4 (correct) because the general policy is true and the question never named a region.

FieldValue
arbitration_idARB-2041
item_idDOC-88117
score_a / confidence_a2 / 4
score_b / confidence_b4 / 2
tie_breaker_reasonrubric_ambiguity
resolving_reviewer_idrev_priya
resolved_score3 (partially correct)
tie_breaker_noteRubric did not require applicable exceptions; question did not specify region.
decision_at_utc2026-03-04T14:22:07Z

Read the confidences, not just the scores. Anika is confident her reading is right; Marcus is less sure his is sufficient. That pattern is itself evidence that the instruction is underspecified, not that one reviewer erred. The correct response is not to pick a winner and move on but to version the rubric and rescore affected cases, which is exactly the separation between label correction and rubric change that adjudication guidance recommends (Rubrex).

The decision rule here is concrete: if both reviewers have confidence at or above a set threshold and the reason is rubric_ambiguity, open a rubric change rather than a one-off correction. If one reviewer's confidence is low and the other's is high, treat the high-confidence review as the working interpretation until evidence says otherwise.

Worked example two: a factual error and an unresolved case

Marcus scores a methods summary 5 (strong pass). Priya, resolving, scores it 2 (reject) because the summary claims the experiment established causation, and the underlying study reports only association. This is not ambiguity; it is a checkable error.

FieldValue
arbitration_idARB-2043
item_idDOC-90442
score_a / confidence_a5 / 5
score_b / confidence_b2 / 4
tie_breaker_reasonfactual_error
resolving_reviewer_idrev_priya
resolved_score2
tie_breaker_noteClaim of causation contradicts reported design; corrected label under existing rule.
decision_at_utc2026-03-04T16:05:51Z

Marcus's confidence of 5 is a red flag worth counting. A high-confidence reviewer who conflicts with a checkable fact is exactly the case a confidence-aware queue should rank first. This is also where a third state earns its keep: when neither reviewer can establish applicability, record unresolved rather than forcing a binary. Converting uncertainty into a passing answer because the release process expects one is a known failure mode (Rubrex on retaining an unresolved state). Use a separate column rather than hiding it in the note.

Designing the score and confidence scales so the log stays usable

The log is only as good as the scale it records. Two design choices pay off.

First, prefer decomposed checks over holistic Likert ratings where you can. Evaluator models show low agreement and high variance on subjective Likert scoring, and a checklist of binary questions improved average agreement across evaluator models by 0.45 while reducing variance (CheckEval). Even if your reviewers are human, the lesson transfers: a score built from "did it cite a source, did it state scope, did it avoid an unsupported causal claim" is easier to arbitrate than a single "quality: 1 to 5."

Second, use anchored level descriptions rather than vague labels. "Poor, average, excellent" names levels without explaining how to assign them; an anchor describes what the evidence at a level looks like so a reviewer can point to a passage and say why it matches (Sopact on scoring rubrics). Anchor sets serve the same purpose in scored writing: they make a subjective process slightly more objective and are used to calibrate readers to a common standard (Kratzer on anchor papers). Store the rubric version in the log so a later reader knows which anchors applied.

There is a harder question hidden here: should the log measure reviewer conformity or decision quality? A position paper argues that AI evaluation should shift from solo performance against a human baseline to the performance of human-AI teams, since modern work is a joint cognitive system rather than a person versus a machine (AI Evaluation Should Work With Humans; McKenna on joint cognitive systems). Apply the same lens to reviewers. The metric is not "did the second reviewer match the first" but "did the two-plus-adjudicator system reach a defensible call." A log built to measure agreement alone will push reviewers toward consensus and hide real disagreement, which is the opposite of what you want.

You can also store machine judgments in the same table. If an LLM judge or a scripted check scored the item, log its output and confidence as just another reviewer row with a reviewer_type of model. Evaluation work increasingly combines code checks, LLM-as-a-judge, human review and production sampling, because no single method covers every failure mode (Arize on LLM evaluation). One table for all judges makes the arbitrations comparable.

# Same table for humans and model judges.
row = {
    "arbitration_id": "ARB-2050",
    "item_id": "DOC-91002",
    "reviewer_a_id": "rev_anika", "reviewer_type_a": "human",
    "score_a": 2, "confidence_a": 4,
    "reviewer_b_id": "judge_v3", "reviewer_type_b": "model",
    "score_b": 4, "confidence_b": 0.81,
    "tie_breaker_reason": "severity_difference",
    "resolving_reviewer_id": "rev_priya",
    "resolved_score": 3,
    "rubric_version": "rubric-2026-02",
    "decision_at_utc": "2026-03-04T16:40:00Z",
}

Normalize model confidence to a 0 to 1 float and human confidence to its native integer scale, and record the scale in the rubric metadata. Do not rescale in the log itself or you lose the raw value.

The retention question: auditability versus storage cost

The tempting policy is to keep everything forever. The practical policy is tiered, and the decision rule is about replay.

Tier 1, full record, live window. Keep every field for a defined active window (30 to 90 days for a fast-moving queue, longer for regulated review). This is when you rerun, rescore and audit adjudications. Storage is trivial at this scale because arbitration rows are a small fraction of all review rows.

Tier 2, structured record, midlife. Drop verbose free text and evidence snapshots, keep every typed field including the tie-breaker enum and both confidence values. Rows stay queryable for trend analysis and drift detection.

Tier 3, summary only, long tail. Keep arbitration_id, item_id, tie_breaker_reason and decision_at_utc. This answers "how often did rubric ambiguity drive conflicts in that period" without keeping the blow-by-blow.

A simple decision table helps:

Question you will ask laterField neededEarliest tier that answers it
Who overruled whom, and when?IDs, scores, timestampTier 3
Why was this call made?tie-breaker enum plus noteTier 2
Can I rescore under a new rubric?raw scores, confidence, rubric versionTier 1
Which reviewer needs recalibration?both confidence values, reviewer IDsTier 2
Is the queue slow on hard cases?decision timestampTier 3

Two operational rules keep retention honest. First, version the rubric and store the version on every row, so a rescoring pass knows which cases fall under the old rule; a rubric change alters what counts as acceptable and can require rescoring baseline and candidate outputs (Rubrex). Second, treat the arbitration log as a derived table that can be rebuilt from immutable review submissions, so tiering down the log never destroys the source of truth.

If you are running these arbitrations at volume and need a second, consistent judge in the loop, Quanta Inference puts text, classification and embedding models behind one OpenAI-compatible endpoint, which makes it easy to add a model row to the same decision log (Quanta Inference).

Operational checks before you ship the schema

Run these before the log becomes load-bearing:

  • Replay test. Take ten past conflicts and rebuild the decision from the log alone. If any require asking a person what happened, a field is missing.
  • Enum coverage. Measure the share of rows that land in an other reason. If it exceeds a threshold you set, the enum is too coarse; refine it rather than letting prose fill the gap.
  • Scale check. Confirm the same score means the same thing across reviewers by comparing against anchor sets, and record the calibration date.
  • Unresolved rate. Track how often conflicts end unresolved. A rising rate usually means the rubric or the evidence packet is failing, not the reviewers.
  • Append-only enforcement. Verify at the database level that scored columns reject updates.

The goal is not a perfect record. It is a record another reviewer can read cold and reproduce the call, with the confidence signals and the reason preserved in machine-readable form.

FAQ

FAQ

What is the minimum I need to store for each arbitration?

Six fields: both reviewer IDs, both raw scores, both confidence values, the tie-breaker reason, the resolving reviewer ID, and a UTC decision timestamp. Add the resolved score and the item ID so the row joins to the item and the queue. Keep free text limited to the tie-breaker note.

Should I store reviewer confidence if it is often inconsistent with the review text?

Yes. Research shows reviewers can report high confidence while expressing reservations, and confidence can be estimated from review text itself, so it carries information even when noisy (confidence consistency). Logging it lets you check later whether high-confidence outliers predict overturned calls.

How do I distinguish a bad review from a broken rubric?

Classify the cause before changing anything. A missed explicit rule is a label correction; a rule that permits two reasonable readings is rubric ambiguity that needs a version change and rescoring. Adjudication guidance recommends keeping an unresolved state when neither reviewer can establish the facts (Rubrex).

How long should I keep the full arbitration record?

Long enough to rerun and rescore under a plausible rubric change, typically 30 to 90 days for a fast queue and longer where compliance applies. After that, drop the free text and keep the typed fields, then keep a summary row for trends. Make the log rebuildable from immutable review submissions so tiering never destroys the source.

Can I log model judges in the same table as people?

Yes, and you should. Give each judge a reviewer_type of human or model, record confidence on its native scale, and note the scale in the rubric metadata so nothing is silently rescaled. Combining code checks, model judges and human review is standard practice because no single method catches every failure mode (Arize).

Sources

Sources

  1. Adjudicate AI review disagreements with an evidence record
  2. How to handle reviewer disagreement during peer review
  3. Are the confidence scores of reviewers consistent with ...
  4. How Confident Was Your Reviewer? Estimating Reviewer ...
  5. A reliable LLM-as-a-Judge framework for evaluating text ...
  6. Application Scoring Rubric: Anatomy, Anchors & Examples
  7. Effective Ways to Use Anchor Papers in the Classroom
  8. Position: AI Evaluation Should Work With Humans
  9. Humans As Baseline Performance
  10. LLM evaluation: methods, metrics, RAG & agent evals guide
About the author

About the author

Antonio Evans
Antonio Evans

Antonio Evans is the founder of Quanta Intelligence and a fractional CTO who builds HIPAA-ready AI systems for health and life-science companies. Before that he was technical co-founder of FriendsEAT for twenty years, CEO of Socialdraft, and a data engineer at IBM. Antonio lives with his dog Santino in Lisbon, Portugal.

All articles