Founders

How to Write a Reviewer Prompt That Abstains

Antonio Evans9 min read

A reviewer prompt is laid out as five stacked rubric cards on the left, each with a three-way selector: pass, fail, cannot determine.
Key points

Key points

  1. 1Add a third verdict called cannot determine to every rubric check, kept strictly separate from pass and fail.
  2. 2When the judge selects cannot determine, require it to name the exact evidence that was missing before the verdict is accepted.
  3. 3Give every check a stable identifier so abstentions can be logged, counted and traced back to one criterion instead of a vague "unclear output".
  4. 4Write each abstention to a log with the check ID, the item, the missing evidence and the prompt version, then route it to a named person with a fixed time budget so the queue keeps moving.

Why a binary rubric forces the judge to guess

Most rubric prompts offer two outcomes per check: pass or fail. That looks clean, but it assumes the judge always has what it needs to decide. In practice it often does not. A check like "the summary cites a primary source" is unanswerable when the reviewed document has no reference section at all. A checker that must return pass or fail in that situation has only two options: fail the item and punish it for something outside the rubric, or pass it and let a real gap through. Both are fabrications, and both are invisible downstream because the output still looks like a clean verdict.

Evaluation research keeps landing on the same problem from different directions. Off-the-shelf LLM judges agree with domain experts only 64 to 68 percent of the time on expert-knowledge tasks, per Splunk's guide to LLM-as-judge, largely because they lack the context to apply a domain rule correctly. When the context is missing rather than the rule, forcing a verdict converts a knowledge gap into a score. Work on abstention makes the same point: models that cannot abstain tend to answer anyway, confidently, when knowledge is missing, and giving them an explicit abstain path improves reliability, as shown in research on identifying LLM knowledge gaps.

The practical consequence for a reviewer pipeline is simple. Every forced pass or fail on an unanswerable check is a claim you cannot defend in an audit, because nobody can reconstruct what the judge was looking at. A third option fixes the accounting even before it improves the score.

Writing the third option so it is not a soft escape hatch

The danger with cannot determine is that it becomes the easiest button to press. Judges drift toward it whenever a check requires effort, and you end up with a large pile of non-answers instead of a small, high-signal exception queue. Three prompt rules keep it honest.

Rule one: define the option by evidence, not by difficulty. The check should say that cannot determine is available only when the required evidence is absent from the material provided, and never when the evidence is present but ambiguous. Per Hebbia's description of its rubric design, each criterion should target a single, diagnosable failure mode. If a checker can point to the exact passage that would settle the question and that passage does not exist in the input, abstention is correct. If it can point to two conflicting passages, that is a fail, not an abstention, because the evidence exists and the work is wrong.

Rule two: require a missing-evidence field. The judge cannot submit cannot determine alone. It must complete a sentence describing what would have made the check decidable, such as "no changelog entry for any of the three versions in scope". This turns an abstention into a request that a human can act on.

Rule three: put the burden on the judge to prove absence. Ask it to list where it looked, for example "searched the reference section, appendix and inline citations; found none". A judge that must document its search cannot quietly skip the work.

Prompt designWhat the judge doesQueue effect
Binary pass/fail onlyGuesses on unanswerable checksNo exception signal; errors are silent
cannot determine, no justificationAbstains when unsure or lazyLarge, noisy exception pile
cannot determine with missing-evidence fieldNames the absent inputSmall pile, each item actionable
cannot determine plus search trailNames the absent input and where it lookedSmall pile, audit-ready

One more constraint belongs in the prompt: cap abstentions per item. If more than about one in five checks cannot be determined, treat that item as out of scope for automated review rather than judging it partially. A partial review that passes the rest is worse than an honest escalation, because the numbers look better than the coverage.

Give every check a stable identifier

A verdict you cannot count by criterion is a verdict you cannot learn from. The fix is mundane and takes ten minutes: name each check once, in a machine-readable form, and never reuse the name for a different meaning.

CHK-01 Summary states the document's main claim
CHK-02 Summary cites at least one primary source
CHK-03 Numbers in the summary match the source table
CHK-04 Tone follows the style guide's register rules
CHK-05 No factual claim appears without a reference

The identifier does three jobs. It lets you compute an abstention rate per check, which is the single most useful diagnostic you get from this setup. It keeps log records joinable across prompt versions, so when you rewrite CHK-02 you can compare its abstention rate before and after without guessing whether the criterion moved. And it makes routing specific: the reviewer sees CHK-02 and CHK-03 on an item, not "quality concerns".

This matches a wider lesson from rubric reliability work. When multiple raters apply a rubric and disagree, research on the statistical methods for rubric inter-rater reliability points out that the strength of measured reliability depends heavily on which statistic you choose and on how clearly the criteria are specified. A criterion that shifts meaning between versions destroys your ability to measure anything. Stable IDs are the cheap precondition for those measurements.

A useful side effect: per-check abstention rates tell you which criteria are badly written. A check with a 40 percent abstention rate is usually not a hard check, it is a vague one, and rewriting it to name the exact artifact it needs is the fix. A check with a near-zero rate across thousands of items may be too easy to be worth running.

Logging abstentions so they can be acted on

The log is where most teams lose the benefit. A record that says "abstained" is useless. A record that says which criterion could not be evaluated, on which item, for want of which evidence, under which prompt version, is a work item.

CREATE TABLE review_abstentions (
  id            BIGINT PRIMARY KEY,
  item_id       TEXT      NOT NULL,
  check_id      TEXT      NOT NULL,   -- CHK-02
  missing       TEXT      NOT NULL,   -- the named absent evidence
  searched      TEXT      NOT NULL,   -- where the judge looked
  prompt_version TEXT     NOT NULL,
  created_at    TIMESTAMP NOT NULL,
  owner         TEXT,                 -- set by the router
  due_at        TIMESTAMP,            -- created_at + time box
  resolution    TEXT                  -- pass | fail | scope change
);

Five fields do the heavy lifting, and each earns its place. The check ID lets you aggregate by criterion. The missing evidence field is what the human reads first, so it should be one sentence in plain language, not a paragraph. The prompt version is the join key that lets you ask whether a rewrite reduced abstentions, and without it, a prompt change looks identical to a traffic change. The owner and due_at fields turn the log into an assignment rather than a report. The resolution field closes the loop, because an abstention where the human decided "pass, the evidence is in an appendix the judge was not given" is a different fix from one where the human decided "fail, the source is genuinely absent".

Two derived numbers should sit on a dashboard from day one. The first is abstentions per hundred items overall, which is your supervision load. The second is the share of resolved abstentions that ended in pass, which is your false-alarm rate. A high false-alarm rate on a single check means the check is asking for evidence you rarely supply, and either the input packaging or the criterion needs to change. This is the same discipline that evaluation guidance calls for when it warns that unambiguous criteria produce stable scores and ambiguous ones flip between runs, as Splunk's agent evaluation framework describes when it recommends validating rubric stability across independent runs before automating decisions.

Routing abstentions without slowing the queue

The design goal is that an abstention never blocks the rest of the item. The other checks resolved, the item moved through those, and only the unresolved checks wait. That is the difference between a pre-triaged exception and a full re-review.

Route by check, not by item. If CHK-02 and CHK-03 are about sourcing and numerics, they go to whoever owns evidence standards for that content type. If CHK-04 is about tone, it goes to the editorial owner. This keeps each reviewer's context narrow, which matters because the supervisory load in review work is not the volume of items alone but the variety of unrelated judgments a person has to hold at once, as discussed in research on the supervisory paradox in AI delegation. Every extra category of question in one queue is a switch cost.

Give each route a time budget, and publish it. A workable default is one business day for content checks and four hours for anything touching a regulated claim. The time box is not a service-level target for its own sake; it caps how long an item sits in a partially resolved state, which is where review queues rot. If the box is missed, the item escalates to the route's backup owner rather than waiting.

Use a fixed review mode for abstentions. A reviewer resolving an abstention is not re-reading the whole item. They are answering one question: does the named evidence exist, and if so, where. That is a human-in-the-loop pattern in the narrow, per-item sense, where a person resolves a specific flagged decision before it is finalized, which the comparison of human-in-the-loop and human-on-the-loop describes as appropriate for high-stakes, lower-volume decisions where accuracy matters more than speed. Abstentions are exactly that slice.

RouteOwns checksTime boxBackup
Evidence and sourcingCHK-02, CHK-051 business dayEditorial lead
Numeric accuracyCHK-034 hoursData owner
Style and registerCHK-041 business dayStyle editor
Scope and packagingCHK-011 business dayPipeline owner

Feed resolutions back into the input. The most common cause of repeated abstention is a missing document, not a bad judge. If CHK-03 keeps abstaining because the source table never reaches the reviewer prompt, the fix is to attach the table, and the abstention rate for that check drops without touching the model. Teams that track this find that a meaningful share of their exception volume disappears after two or three packaging fixes.

Keep a human calibration sample. Abstention logs tell you where the judge gave up, not where it was wrong. Set aside a small random sample of fully resolved items for human spot-checks, and compare. This is the same hybrid approach Hebbia describes, pairing deterministic property checks with rubric grading and human calibration so that rubric ambiguity surfaces as disagreement rather than as quiet error.

A worked example with numbers

Suppose a pipeline reviews 10,000 documents a month against five checks, so 50,000 check verdicts. Before the change, 4 percent of items came back with a quality complaint, and the reviewers could not tell which checks caused them.

After adding cannot determine with a missing-evidence field, the first month shows 1,800 abstentions, or 3.6 percent of check verdicts. That looks like a large number until you break it down by check. Suppose CHK-03 accounts for 1,100 of them because the source table is attached only half the time. Fixing the attachment cuts those to roughly 200, and total abstentions fall to about 900, or 1.8 percent. Each of those needs one reviewer decision, which at three minutes per abstention is about 45 hours a month, spread across named owners with a published time box.

The insight is the gap between those two numbers. Without per-check logging, the team sees 1,800 exceptions and assumes the judge is weak. With it, they see one packaging bug wearing a judge's coat. The check ID, not the model upgrade, is what turned 1,800 problems into one.

When abstention is the wrong tool

Abstention is for missing evidence, not for hard calls. Three cases need a different design.

Subjective dimensions. If a check asks whether tone is "appropriate", no amount of missing-evidence discipline will make it decidable. Rewrite it into observable conditions, the way Hebbia's rubric principle converts a vague "good title" into a specific word-count and no-units rule. A decidable check rarely needs to abstain.

Contested ground truth. Where two experts would genuinely disagree about the right answer, the problem is the criterion, not the evidence. Send those to a calibration session and split the check until each part has one defensible answer. The human-in-the-loop scoring framework used in a national writing assessment makes this explicit: agreement between model and human varies by rubric dimension, and the workflow is designed to send to humans the cases where review adds the most value rather than all of them.

Very high abstention rates. If a check abstains on a third of items, stop judging it and audit the input instead. A criterion that is unanswerable a third of the time is usually measuring a document type you do not receive.

Once the prompt, the log and the routes are in place, the remaining work is operational: watch the per-check rates weekly, rewrite the worst criterion, and keep the human sample running. Teams that want one API key across the judge models and the downstream text, vision or embedding calls they need can point the pipeline at Quanta Inference and keep the abstraction stable while the judge model changes underneath.

FAQ

FAQ

What exactly should the cannot determine option say in the prompt?

Keep it short and conditional: "Return cannot determine only if the evidence this check requires is absent from the material provided. You must name the missing evidence and state where you looked for it. If evidence is present but conflicting or unclear, return fail." The two clauses that matter are the naming requirement and the conflicting-evidence rule, because together they stop the option from absorbing hard calls.

How many abstentions should we expect?

There is no universal rate, and any number should come from your own log rather than a target. A useful early signal is the split by check: one or two checks usually account for most of the volume, and those are almost always input or criterion problems rather than model problems. Treat a check that abstains on more than about a fifth of items as a signal to audit the input, not to tune the prompt.

Does an abstention count as a fail for scoring?

No, and mixing them defeats the purpose. Score abstentions separately and report them as coverage rather than quality. If you must produce a single number, report quality over the checks that were actually decidable and coverage beside it, so a high score on half the checks cannot be mistaken for a high score on all of them.

Who should own the abstention queue?

The person who owns the standard behind the check, not the person who owns the pipeline. The sourcing check belongs to whoever decides what counts as a primary source, and the tone check belongs to the editorial owner. Give each route a named owner and a backup, and write the time box into the routing rule so it does not depend on goodwill.

How do we know the abstain option improved anything?

Compare two things across prompt versions: the share of resolved abstentions that ended in pass (your false-alarm rate) and the share of items that needed any human touch. A working setup lowers the second over time as packaging fixes land, without raising the error rate on a human spot-check sample. If the human sample gets worse while abstentions fall, you have taught the judge to skip work rather than to work better.

Sources

Sources

  1. How to Set Up Evals with LLM-as-Judge
  2. Identifying LLM Knowledge Gaps via Multi-LLM Collaboration
  3. Evaluating AI Agents: A Hybrid Deterministic and Rubric ...
  4. Is it actually reliable? Examining Statistical Methods for Inter ...
  5. How to Build an Agent Evaluation Framework for ...
  6. The Supervisory Paradox: How AI Delegation Transforms ...
  7. Human-in-the-Loop vs Human-on-the-Loop: Enterprise ...
  8. A Human-in-the-Loop Framework for AI-Assisted Scoring ...
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