Apply to my task
arXiv:2510.01123 ★ 93 Oct 1, 2025

Reflect-and-Revise: Iteratively Improving Scoring Criteria by Reflecting on Mistakes

Key result

LLMs score work inconsistently: similar pitches get a 3 one time and a 5 the next. The reason: there's no explicit checklist, so the model relies on unstable intuition. The Reflect-and-Revise method turns a fuzzy rubric like "rate quality 1-5" into a structured system with concrete indicators and thresholds. The trick: the model scores examples → sees where it diverged from the reference → analyzes the patterns behind the gaps → rewrites the criteria. In 3-10 iterations the barest instruction becomes a detailed algorithm with mapping tables and explicit rules.

01

TL;DR

Reflect-and-Revise is a technique for improving the scoring criteria (rubrics) an LLM uses. The model scores examples with the current rubric, compares its scores to reference scores, analyzes the gaps and rewrites the rubric to hit the targets more precisely. The process repeats for 3-10 iterations. The method is universal: from grading essays to evaluating code, design or business ideas.

LLMs struggle to score against fuzzy criteria. Without a clear structure the model is inconsistent: it gives similar work different scores (a 3 one time, a 5 the next) and leans on random details instead of meaningful criteria. The reason: there's no explicit tally of how well the work meets the criteria. The model eyeballs the score from an overall impression rather than a systematic check.

The method works through reflection on mistakes. After each iteration the model sees where it diverged from the reference, analyzes the patterns behind the gaps and rewrites the criteria to eliminate the typical errors. In 10 iterations even the barest rubric, "Score from 1 to 6", turns into a structured system with concrete indicators, thresholds and conditional rules.


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

ITERATION (repeat 3-10 times):

STEP 1: Score with the current rubric
→ The model scores 5-10 examples
→ For each: score + rationale

STEP 2: Collect the discrepancies
→ Compare the model's scores to the reference scores
→ Identify error patterns

STEP 3: Improve the rubric
→ The model analyzes its mistakes
→ Rewrites the criteria
→ Adds concrete indicators

STEP 4: Validation (optional)
→ Test the new rubric on held-out examples
→ Keep the best version

All steps happen in a conversation with the model; no code or API required.


03

Example in Action

Task: You're a product manager at an accelerator scoring startup pitches. You need to give 1-5 scores on four criteria: problem, solution, market, team. But the scores come out inconsistent: similar pitches get a 3 one time and a 4 the next.

Iteration 1: A simple rubric:

Score this startup pitch on a 1-5 scale, considering:
- Clarity of the problem
- Uniqueness of the solution  
- Market size
- Team experience

[Paste the pitch]

Give a score and a rationale.

You score 5 pitches and record the model's scores alongside your reference scores.

Iteration 2: Error analysis:

Here are my scores for 5 pitches and yours:

Pitch 1: I gave 4, you gave 3: you underrated the team
Pitch 2: I gave 2, you gave 4: you overrated a vague problem
Pitch 3: I gave 5, you gave 5: match
Pitch 4: I gave 3, you gave 2: you underrated a niche market
Pitch 5: I gave 3, you gave 4: you overrated a solution with no evidence

Rewrite the rubric to eliminate these errors. 
Add concrete indicators for each score.

Iteration 3: The refined rubric:

The model will produce something like:

PROBLEM (1-5):
5: A concrete figure for the loss/pain + statistics
4: A clear statement without numbers
3: A general but understandable statement
2: Vague, not tied to an audience
1: Not stated

TEAM (1-5):
5: Relevant experience >3 years + a product track record
4: Relevant experience 1-3 years
3: Experience in an adjacent field
2: No relevant experience
1: No information

[and so on for every criterion]

Repeat 1-2 more times on new examples until the scores stabilize.

Result:

The model will show the evolution of the rubric, from generic wording to concrete thresholds, numeric indicators and conditional rules. The final version will contain visual emphasis (key criteria highlighted), mapping tables (score → signs) and explicit rules ("if the team has no relevant experience → max 3 points").


04

Why It Works

LLMs are bad at keeping implicit criteria in mind. When you write "score the quality", the model interprets it differently every time. It considers the same signals one time and ignores them the next. There's no systematic checklist, just intuition, and intuition is unstable.

An LLM's strength is pattern matching on examples. The model is excellent at finding regularities in a series of "input → output" pairs. When it sees 5-10 cases where it got it wrong, it can derive a rule: "If the problem has no numbers, max 3 points". It's the same idea as few-shot learning, but applied to the scoring criteria themselves.

The method turns a fuzzy instruction into an explicit algorithm. After a few iterations the rubric gains:

  • Numeric thresholds ("experience >3 years" vs "experience 1-3 years")
  • Mandatory signals ("if there are no statistics → no higher than 4")
  • Mapping tables (score → list of indicators)

That removes ambiguity: the model stops guessing and starts counting hits against the criteria.

Control knobs:

  • Number of iterations (3-10): more iterations → a more detailed rubric, but gains slow down after iteration 5-7
  • Batch size (5-20 examples): more examples → error patterns are easier to see, but processing takes longer
  • Rationale format: ask the model to explain each score in detail → you see more precisely where it went wrong
  • Starting rubric: you can start with the barest "Score 1-5" or with a ready detailed one; the results are comparable

05

Prompt Template

Iteration 1: Initial scoring

Here are the scoring criteria:

{initial_rubric}

Score these {N} examples and give a rationale for each:

EXAMPLE 1:
{example_1}

EXAMPLE 2:
{example_2}

[...]

Answer format for each:
- Score: [points]
- Rationale: [why this score]

Iteration 2+: Improving the rubric

Here are the results of scoring {N} examples:

EXAMPLE 1:
My score: {reference_1}
Your score: {model_1}
Model's rationale: {rationale_1}
Where it went wrong: {error_analysis_1}

EXAMPLE 2:
My score: {reference_2}
Your score: {model_2}
Model's rationale: {rationale_2}
Where it went wrong: {error_analysis_2}

[...]

Current rubric:
{current_rubric}

Analyze the patterns in the discrepancies and improve the rubric:
1. Add concrete indicators for each score
2. Specify thresholds where possible
3. Write explicit rules ("if X → no higher than N")
4. Visually highlight the key criteria

Output the improved rubric.

What to fill in:

  • {initial_rubric}: the barest version, "Score from 1 to 5 on criteria: X, Y, Z", or a ready detailed rubric
  • {example_N}: the actual work to score (pitches, texts, code)
  • {reference_N}: your correct score
  • {error_analysis_N}: a short note on what the model missed or overrated

🚀 Quick start: paste into the chat:

Here's a Reflect-and-Revise template for improving scoring criteria. 
Adapt it to my task: [describe what needs to be scored]. 
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask which criteria matter for your task and what scale to use; it needs that to build the starting rubric. Then it will ask for 5-10 examples with your scores, the raw material for the first refinement iteration. The model will take the structure from the template and adapt it to your context.


06

Limitations

⚠️ You need examples with reference scores: Full refinement takes 50-200 examples with correct answers. It also works with 5-10 examples, but the rubric will be less detailed and blind spots may remain.

⚠️ Not for subjective criteria: If the "correct score" depends on taste and opinion (creativity, humor, aesthetics), refinement can lock onto your personal preferences instead of objective patterns.

⚠️ Narrow optimization metric: The study only optimized scoring agreement (QWK). Other aspects of quality (soundness of rationales, fairness, consistency within categories) may not improve or may even get worse.

⚠️ Diminishing returns after 5-7 iterations: On ASAP, improvement continued until iteration 7-8, then plateaued. Further refinement gives minimal gains; the rubric hits the precision ceiling for that model.


07

How They Tested It

The team used two essay datasets: TOEFL11 (12,100 essays, 1-5 scale) and ASAP (179 test essays, 1-6 scale). For each dataset they selected 200 examples: 100 for training (generating rubric improvements), 100 for validation (picking the best version), and the rest for testing.

They tested five models: GPT-4.1, GPT-5-mini, Gemini-2.5-Flash, Gemini-2.5-Pro, Qwen3-Next-80B. Each ran 10 iterations with batches of 10 examples. In each iteration the model scored essays, saw the gaps versus human scores and rewrote the rubric. The version with the best QWK on validation was selected.

They compared three starting points:

  1. simplest_rubric: "Score from 1 to 6", a minimal instruction
  2. simplified_human_rubric: a simplified version of the official rubric
  3. human_rubric: the detailed official rubric for graders

The surprise: After refinement even the barest rubric beat the detailed human one on ASAP (+0.48 vs +0.26 QWK). That's counterintuitive; you'd expect a detailed rubric to be the best starting point. But it turns out LLMs are better at deriving criteria from their mistakes than at following ready-made human instructions.

The reasoning: Human rubrics are optimized for people: they contain context, examples, nuances of wording. LLMs often ignore the details or interpret them their own way. A simple rubric is a blank slate that the model builds out for itself by reflecting on real mistakes. The result fits the logic of that specific model more precisely.

On TOEFL11 the gain was smaller (+0.19 vs +0.47 on ASAP). The likely reason: TOEFL uses a coarse scale (3 levels: low/medium/high). With few gradations there's less room for improvement and it's harder to detect subtle error patterns. On ASAP's 6-point scale the rubric can draw finer distinctions.


08

Original from the Paper

Context: The researchers used this prompt for rubric refinement in their algorithm. The model received the current rubric and error data for a batch of examples, and generated an improved version.

You are an expert in designing scoring rubrics for automated essay scoring. 
Your task is to refine the current rubric based on the model's performance 
on a set of sample essays.

Current Rubric:
{current_rubric}

Performance Data:
{feedback_data}

The feedback_data contains:
- Essay text
- Model's predicted score and rationale
- True score assigned by human raters
- Observed discrepancy

Analyze patterns in the discrepancies and generate an improved rubric that:
1. Addresses systematic scoring errors
2. Adds concrete indicators for each score level
3. Specifies threshold values where applicable
4. Includes explicit conditional rules (e.g., "if X is absent, max score is N")

Output only the refined rubric text.

The feedback_data format:

json
[
  {
    "essay": "[essay text]",
    "predicted_score": 4,
    "rationale": "The essay demonstrates clear organization...",
    "true_score": 3,
    "discrepancy": "Overestimated organization quality"
  },
  ...
]
```

---

## Adaptations and Extrapolations

### 💡 Adaptation for other kinds of scoring

The method isn't just for essays; the principle applies anywhere, you need **repeatable scoring**:

**Scoring junior developers' code:**
```
Criteria: readability, efficiency, error handling
Examples: 10 PRs from juniors with your comments
Iterations: 3-5 (usually enough)

Result: A rubric with concrete rules
- "If there's no None handling → max 3/5"
- "If nesting is >3 levels deep → minus 1 point"
```

**Scoring social media posts:**
```
Criteria: engagement, readability, CTA
Examples: 20 posts with metrics (reach, clicks)
Iterations: 5-7

Result: A predictive engagement model
- "If there's a question in the first paragraph → +1 point"
- "If the CTA comes at the end with no context → -2 points"
```

---

### 🔧 Technique: Visualize the evolution → a transparent process

After each iteration, ask the model to show a **diff of the criteria**:
```
Show what changed in the rubric:

BEFORE:
- Criterion: Clarity of the problem (score 1-5)

AFTER:
- Criterion: Clarity of the problem (score 1-5)
  * 5 points: a concrete loss figure + target audience
  * 4 points: a clear statement without numbers
  * ...

WHY:
The model often overrated vague statements. Added a requirement for 
concrete numbers for the top scores.
```

This helps you **trace the logic** of the improvements and see which errors were critical.

---

### 🔧 Technique: Refine criteria one at a time → finer tuning

Instead of improving the whole rubric at once, improve **each criterion separately**:
```
Iteration 1: Improve only the criterion "Problem"
Examples: 10 cases where the model misjudged the problem

Iteration 2: Improve only the criterion "Solution"  
Examples: 10 cases where the model misjudged the solution

[...]

Iteration N: Combine all criteria into the final rubric

Pro: more targeted improvement; the model focuses on one aspect.

Con: slower (N iterations instead of 1), and it misses the interactions between criteria.


09

Resources

  • Automated Refinement of Essay Scoring Rubrics for Language Models via Reflect-and-Revise (2025)
  • Authors: Keno Harada, Lui Yoshida, Takeshi Kojima, Yusuke Iwasawa, Yutaka Matsuo
  • The University of Tokyo
  • Datasets: TOEFL11, ASAP (Automated Student Assessment Prize)
  • Metric: Quadratic Weighted Kappa (QWK), a measure of scoring agreement

Research digest

Key result

LLMs score work inconsistently: similar pitches get a 3 one time and a 5 the next. The reason: there's no explicit checklist, so the model relies on unstable intuition. The Reflect-and-Revise method turns a fuzzy rubric like "rate quality 1-5" into a structured system with concrete indicators and thresholds. The trick: the model scores examples → sees where it diverged from the reference → analyzes the patterns behind the gaps → rewrites the criteria. In 3-10 iterations the barest instruction becomes a detailed algorithm with mapping tables and explicit rules.

Principle

An iterative improvement loop driven by reflection on mistakes. Step 1: The model scores 5-10 examples with the current rubric, with a rationale for each score. Step 2: You compare the model's scores with the reference scores and identify patterns (where it underrated the team, where it overrated a vague problem). Step 3: The model analyzes its mistakes and rewrites the criteria, adding concrete indicators, thresholds and conditional rules. Repeat the loop 3-10 times until the scores stabilize. All in a conversation with the model; no code or API required.

Why it works

LLMs are bad at keeping implicit criteria in mind. When you write "rate the quality", the model interprets it differently every time, sometimes weighing certain signals, sometimes ignoring them. There's no systematic checklist, just unstable intuition. But an LLM's strength is pattern matching on examples. The model sees 5-10 cases where it was wrong and derives a rule: "If the problem has no numbers, max 3 points". The method turns a fuzzy instruction into an explicit algorithm: instead of "rate the problem" you get a table: "5 points = a concrete loss figure + statistics, 4 points = a clear statement without numbers, 3 points = a general statement". The model stops guessing and starts counting hits against the criteria.

When to apply

Scoring work where results are inconsistent → specifically startup pitches, student essays, code review, design portfolios, candidate resumes, especially when similar work gets different scores or colleagues argue over grades. NOT a fit for subjective criteria where the "correct score" depends on taste (creativity, humor, aesthetics): refinement will lock onto personal preferences instead of objective patterns.

Mini recipe

1. Create a starting rubric: the barest version, `Score from 1 to 5 on these criteria: problem, solution, market, team`, or take a ready detailed one; the results are comparable 2. First scoring pass: the model scores 5-10 examples with a rationale for each score; you record its scores alongside your reference scores 3. Gap analysis: for each example write `Pitch 1: I gave 4, you gave 3: underrated the team. Pitch 2: I gave 2, you gave 4: overrated a vague problem` and so on 4. Rubric improvement: give the model the list of discrepancies + the current rubric and ask: `Rewrite the rubric to eliminate these errors. Add concrete indicators for each score, thresholds and explicit rules` 5. Repeat the loop: take 5-10 new examples, score them with the improved rubric, analyze the errors again. Repeat 3-10 times until the scores stabilize (gains slow down after iteration 5-7)

Examples

[BAD]: `Score this startup pitch on the quality of the problem, solution and team. Give 1-5 points`: fuzzy criteria the model interprets differently every time [GOOD]: `Here are your scores for 5 pitches and mine: Pitch 1: you 3, me 4 (underrated team experience). Pitch 2: you 4, me 2 (overrated a vague problem with no statistics). Pitch 3: you 5, me 5 (match). Current rubric: "Problem 1-5: clarity of the statement. Team 1-5: relevant experience". Rewrite the rubric with concrete indicators: Problem 5 = [which signs?], 4 = [which?]. Team 5 = [how many years of experience?], 4 = [how many?]. Add thresholds and rules like "if X → no higher than N"`: the model sees the error patterns and turns vagueness into a mapping table

In plain words

The core idea of Reflect-and-Revise is that an LLM isn't just a text generator, it's a powerful corrector of its own mistakes. The problem with today's models isn't that they're dumb, it's that they're inconsistent. When you ask a model to "rate the code quality" or "grade this essay", it interprets "quality" depending on its mood. Today it hates the commas, tomorrow the structure. The method makes the model craft its own perfect measuring stick, turning fuzzy instructions into a hard algorithm that doesn't screw up.

Imagine hiring an intern to review reports and giving them a very vague brief. The intern messes up, you correct them, and instead of just apologizing, every time they rewrite their own job description, adding items so they never make that exact mistake again. After ten rounds they're holding a perfect checklist that would let even a robot produce results identical to an expert's.

It works through a cycle of tough love: the model takes the current rubric, scores examples and compares the results to the reference. If it gave a 3 where the expert slapped on a 5, the model has to explain why it missed and rewrite the criteria so it hits the bullseye next time. The process repeats 3 to 10 times until the criteria are so sharp that any ambiguity simply evaporates. 10 iterations turn the model's "gut feeling" into a working standard.

It was tested on grading essays and code, but the principle is universal. You can plug it into any business process: from scoring startups at an accelerator to reviewing design work or the quality of support replies. Anywhere there's a subjective "like / don't like", this method lets you extract the implicit criteria from an expert's head and pack them into a prompt that works consistently. SEO for meaning: that's what it really is.

Bottom line: stop hoping the model will figure out on its own what you consider "good content". Use Reflect-and-Revise so it builds its own coordinate system from your corrections. Either you burn time hand-tuning instructions and still get randomness, or you make the AI learn from the gaps. Anyone who doesn't adopt systematic rubrics will keep getting mood-driven answers from the model.

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 Reflect-and-Revise: Iteratively Improving Scoring Criteria by Reflecting on Mistakes arXiv:2510.01123

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