Apply to my task
arXiv:2510.20653 ★ 88 Oct 23, 2025

Self-Reflection: Iterative Self-Correction of LLM Answers

Key result

A weak model + one round of self-critique outperforms a strong model without it. Nova Micro (Amazon's cheapest) jumps from 22% to 71% accuracy on math, a 220% gain. The method lets you save on expensive models: take a cheap one, have it review its own answer, and get top-tier quality for less. The trick: a model is bad at generating on the first try but great at critiquing someone else's text. Self-reflection turns that weakness into a strength: first the model generates an answer, then reads it as external text and switches into verification mode. The first correction round delivers 80-90% of the total benefit. But there's a big catch: in translation and SQL generation, most models get worse, swapping correct answers for wrong ones while trying to "improve" them.

01

TL;DR

Self-reflection is a technique where the model improves its answer step by step over a series of requests. Instead of one LLM call, you ask for an answer, then ask the model to review it and fix the mistakes. You can repeat this for several rounds. Each round = a separate request carrying the previous answer as context.

A study across 10 models (Claude, Amazon Nova, Llama, Mistral) and 4 domains found that how well self-reflection works depends heavily on the task type. In math, the weakest models improve by 220% after a single correction round: Nova Micro jumps from 22% to 71% accuracy. In sentiment analysis the gain is more modest (5-10%) but consistent. In translation and SQL generation, though, most models get worse: the model swaps correct answers for wrong ones while trying to "improve" what already worked.

The key pattern: the first reflection round delivers 80-90% of the total benefit. Further iterations barely move accuracy but burn tokens. Smaller models (Nova Micro, Lite) gain from reflection far more dramatically than top-tier ones (Sonnet 3.7). That opens up a strategy: instead of an expensive large model, take a cheap small one + 1 reflection round and get comparable quality for less money.

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 (baseline answer):
The LLM generates a first answer to the task → Answer v1

STEP 1 (reflection):
The LLM gets its own Answer v1 + a "review and fix" prompt → Answer v2

STEP 2-N (optional):
Repeat the reflection loop → Answer vN

Every step runs as a separate request to the model. The previous answer is passed explicitly into the next prompt.

03

Example

Task: Calculate the unit economics of a subscription to an online fitness platform for the US market.

Prompt (round 0):

Calculate the unit economics for a fitness subscription with these parameters:
- Subscription price: $19.99/month
- CAC (customer acquisition cost): $45 via Google Ads
- Churn rate: 8% per month
- Variable costs: $3/user/month (content, support)
- Fixed costs: $50k/month

Find:
1. User LTV (lifetime value)
2. Payback period
3. Break-even point (how many active subscribers you need)
4. ROI over a 12-month horizon

Prompt (round 1 — reflection):

Here's your calculation above. Review it critically:
1. Check the formulas — are there any math errors?
2. Did you account for all costs correctly?
3. Do the final numbers make sense for the US market?

If you find inaccuracies, fix them and recalculate.

Result:

The model will produce two answers:

  1. First round: A baseline calculation with possible shortcuts or errors (e.g., the wrong LTV formula when accounting for churn rate)
  2. Second round (after reflection): A corrected calculation with more accurate formulas, verified numbers, and detailed explanations for each step

In math and analytical tasks you'll see concrete error fixes: the model finds the wrong formula, recalculates, and shows exactly where it went wrong.

04

Why It Works

LLM weakness: The model generates text on autopilot following patterns, with no internal "calculator." On the first pass it may:

  • Miss details in the problem statement
  • Slip up in intermediate steps (especially in long chains of calculations)
  • Apply an imprecise formula
  • Go with the first solution that comes to mind rather than the best one

LLM strength: The model is great at critiquing someone else's text: it spots logical gaps, checks reasoning steps, and notices missed conditions. When an LLM looks at text from the outside (even its own output), it switches into verification mode instead of generation mode.

How the method leverages that strength: Self-reflection turns a weakness (generating without checking) into an advantage. Round one generates the answer. Round two has the model read that answer as external text, switch on critical thinking, find errors, and rewrite. It uses its verification skills to fix its own hasty generation.

Control knobs:

  1. Reflection depth (0, 1, 3+ rounds):
    • 0 rounds → baseline answer, fast and cheap
    • 1 round → 80-90% of all possible benefit
    • 3+ rounds → diminishing returns, overpaying for tokens
    Tune it to the task: Simple questions: 0 rounds. Critical calculations: 1 round. You almost never need more.
  2. Feedback mechanism (what to compare against):
    • No feedback: the model reviews by eye
    • LLM-as-a-judge: a second model grades the first
    • External check: run the SQL, execute the code, compare against a reference
    Effect: On SQL tasks, feedback from executing the query improves Claude by 6%, while Amazon Nova does better with no feedback at all or with an LLM judge. There's no universal recipe, so test on your own data.
  3. How detailed the reflection instruction is:
    • "Review your answer" → a general check
    • "Check the calculations, formulas, and the logic of each step" → focus on math
    • "Did you account for every condition of the task?" → focus on completeness
    Effect: Specific review criteria produce more targeted corrections.
05

Prompt Template

{task_prompt}

---

[After you get the first answer — second request:]

Here's your answer above. Review it critically:
- {criterion_1}
- {criterion_2}
- {criterion_3}

If you find inaccuracies or omissions, fix them and rewrite the answer.

What to fill in:

  • {task_prompt} — your original question/task
  • {criterion_1, 2, 3} — specific things to check (e.g., "Check the math," "Did you account for every condition," "Does the conclusion follow")

For complex tasks you can spell out exactly what to check:

Check:
1. Is every input accounted for?
2. Are the formulas and calculations correct?
3. Are there any logical contradictions?
4. Is the result realistic for {context}?

🚀 Quick start — paste into your chat:

Here's a self-reflection template. Adapt it to my task: [your task].
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask which review criteria matter for your specific task, because different domains need a different focus: in math it's formula correctness, in translation it's preserving meaning and tone, in SQL it's syntax and query logic. It'll take the "task → reflection with criteria" pattern and adapt it to your case.

06

Limitations

⚠️ Domain-specific effectiveness: In math tasks and sentiment analysis, reflection reliably improves results. In translation and SQL generation, most models get worse, swapping correct answers for wrong ones. Test on your own data before rolling it out.

⚠️ Plateau after 1 round: The first reflection delivers 80-90% of the total benefit. Further rounds barely change accuracy but raise latency and cost 2-3x. For most tasks, the optimum = 1 round.

⚠️ Not equal across models: Amazon Nova Micro, Lite, and Pro get worse at translation with every reflection round. Claude Sonnet 3.5 v2 degrades on SQL tasks after reflection. Mistral Small loses accuracy on sentiment analysis. There's no universal model+method combo, so match it to your use case.

⚠️ Cost/quality trade-off: Every reflection round = an extra API call. For tasks where accuracy is critical (financial calculations, medical analytics), it's worth it. For high-volume processing of simple requests, the extra spend may not pay off even with a 10-15% quality gain.

07

How They Tested It

A team from Amazon and Zalando tested 10 models (Claude Sonnet 3.7/3.5/Haiku 3.5, Amazon Nova Premier/Pro/Lite/Micro, Llama Maverick, Mistral Small/Large) on 4 benchmarks: Math500 (math), Spider (text-to-SQL), IMDB (sentiment analysis), and Flores-200 (translation). Each model ran 0, 1, and 3 rounds of self-reflection, and for Claude 3.7 they also tested built-in reasoning with two thinking-token budgets.

They then built Pareto frontiers of accuracy vs latency: which configuration gives the best result for a given speed or budget. They compared not only final accuracy but also improvement trajectories, tracking how each model flipped correct/incorrect answers from round to round.

Crucially, the team didn't stop at benchmarks. They deployed self-reflection in a production content-localization system at Lounge by Zalando (17 European markets, real copywriters, real marketing campaigns). There they found market-specific effects: in the German market reflection eliminated 100% of errors, in the French market it cut them by 88%, and in the Spanish market by just 39%. That confirmed the main conclusion: there's no universal strategy, and effectiveness depends on the language, the domain, even the specific market within one language.

An interesting design detail: for SQL tasks they added two types of feedback between rounds, the query execution result vs an LLM-as-a-judge assessment. It turned out Claude works better with SQL execution feedback (it sees errors in the data), while Amazon Nova does better with an LLM judge or no feedback at all. Why? An Amazon Nova Pro judge can't give Claude sharper criticism than Claude gives itself, so that outside feedback only confuses it. Concrete SQL results (tables, errors), on the other hand, are objective and help.

The biggest surprise: Claude 3.7's built-in reasoning (marketed as an advanced feature) lost to plain self-reflection in many tests, even though reasoning costs more and doesn't work with prompt caching. That busts the myth that "dedicated reasoning models are always better": sometimes a base model + smart prompt engineering is more effective.

08

Resources

Finding the Sweet Spot: Trading Quality, Cost, and Speed During Inference-Time LLM Reflection

Relevant links from the study:

Authors: Jack Butler (Amazon Web Services), Nikita Kozodoi (Amazon Web Services), Zainab Afolabi (Amazon Web Services), Brian Tyacke (Zalando), Gaiar Baimuratov (Zalando)

Presented at: NeurIPS 2025 Workshop: Efficient Reasoning


Research digest

Key result

A weak model + one round of self-critique outperforms a strong model without it. Nova Micro (Amazon's cheapest) jumps from 22% to 71% accuracy on math, a 220% gain. The method lets you save on expensive models: take a cheap one, have it review its own answer, and get top-tier quality for less. The trick: a model is bad at generating on the first try but great at critiquing someone else's text. Self-reflection turns that weakness into a strength: first the model generates an answer, then reads it as external text and switches into verification mode. The first correction round delivers 80-90% of the total benefit. But there's a big catch: in translation and SQL generation, most models get worse, swapping correct answers for wrong ones while trying to "improve" them.

Principle

The method runs as a loop of separate requests: Round 0 → the model generates a first answer to the task (fast, on autopilot, possibly with errors) Round 1 → the model gets its own answer + a "review critically" prompt → switches from generation mode to verification mode → finds errors → outputs a corrected version Rounds 2-N (optional) → repeat the loop, but the effect drops off sharply Each round = a new API call. The previous answer is passed explicitly into the next prompt. This isn't "think again" inside a single request; these are physically separate calls to the model.

Why it works

An LLM generates text on autopilot following patterns, so it can miss details, slip up in a chain of calculations, or grab the first solution that comes along. But the same model is great at spotting other people's mistakes: it notices logical gaps, checks steps, finds missed conditions. When an LLM looks at text from the outside (even its own), it switches from "come up with an answer" to "check whether it's right". In verification mode the model is more critical and more careful. The study across 10 models found that the first reflection round captures 80-90% of all possible benefit. The second and third rounds barely change accuracy but double cost and latency. On math tasks, weak models (Nova Micro, Lite) improve by 150-220%, and top models (Claude Sonnet) by 15-30%. In sentiment analysis the gain is more modest (5-10%) but consistent.

When to apply

Math and analytics → unit-economics calculations, financial modeling, chains of logical inference. Especially for weak and cheap models, which gain from reflection far more dramatically. Sentiment analysis and classification → when you need stability; the gain is 5-10% but reliable. NOT a fit for translation and SQL: most models get worse. Amazon Nova Micro/Lite/Pro degrade on translation with every round. Claude Sonnet 3.5 v2 slips on SQL after reflection. Mistral Small loses accuracy on sentiment analysis. Test on your own data before rolling it out.

Mini recipe

1. First request (round 0): Send the task to the model and get a baseline answer. That's the draft. 2. Second request (round 1): Pass the original task + the model's answer + this prompt: `Here's your answer above. Review it critically: [review criteria]. If you find errors, fix them and rewrite.` 3. Review criteria (plug in specific ones): for math — `Check the formulas and calculations`, for analytics — `Did you account for every condition of the task?`, for logic — `Are there contradictions in the conclusions?` 4. Stop at round 1: after that come diminishing returns (near-zero quality gain for double the cost). 5. Optionally add feedback: for SQL, run the query and pass the error to the model; for code, run it and show the result. But test it: Nova works better with no feedback at all.

Examples

[BAD]: `Calculate LTV for a $19.99/month subscription, CAC $45, churn 8%/month, variable costs $3/user` — the model will output the first thing that comes to mind and may get the formula wrong or miss details. [GOOD]: Round 0: `Calculate LTV for a $19.99/month subscription, CAC $45, churn 8%/month, variable costs $3/user, fixed costs $50k/month. Find LTV, payback period, break-even point, and 12-month ROI.` Round 1: `Here's your calculation above. Review it critically: 1) Check the formulas — is the math correct? 2) Did you account for all costs? 3) Do the numbers make sense for the US market? If you find inaccuracies, recalculate.` The model will find errors (e.g., the wrong LTV formula when accounting for churn), fix them, and show exactly where it went wrong. Nova Micro goes from 22% to 71% accuracy on tasks like these.

In plain words

The core of Self-reflection is that the model behaves like a regular person: the first time around it dumps a stream of consciousness, and the second time it actually starts thinking. When you ask an LLM for an answer, it just stacks word after word based on probabilities, with no built-in brakes or inner critic. But make it look at its own text and ask, "Where did you mess up here?", and the model suddenly catches both silly typos and logic holes. It's not magic, just using the context as external memory for a round of error correction.

It's like writing an important email to your boss at 3 a.m. Hit "send" right away and tomorrow you'll cringe at the mistakes and the tone. But save it as a draft, reread it in the morning with fresh eyes, fix a couple of paragraphs, and the result is ten times better. Self-reflection is exactly that "morning read," packaged into an algorithm where the model acts as its own strict editor and proofreader. Technically you spend more time, but what comes out is a product, not junk.

The study lays out clearly that reflecting forever is a dumb idea, because you hit the point of diminishing returns. The best setup usually fits in 2-3 rounds: first a baseline answer, then a critique (hunting for hallucinations and calculation errors), and a final polish. Push the model longer and it starts overcooking the text, fixing things that already worked, or just going in circles while burning your money on tokens. The main trick is the balance between quality and price: sometimes an answer that's 80% right for pennies beats one that's 95% right but five times pricier and slower.

The principle is universal and works everywhere, from writing code to calculating unit economics. If the task is harder than "write a post about cats," a single request is always a lottery. In programming it helps catch bugs before you even hit compile, and in analytics it helps notice that the model mixed up revenue and profit. Prompt engineering is moving away from chasing the "perfect prompt" toward building chains of reasoning where the model puts itself to the test.

Bottom line: drop the belief that AI will produce a masterpiece at the push of a button. If the result matters, build in a review loop and budget for a few iterations. It's the only way to get an LLM to stop confidently spouting nonsense and start delivering results you won't be embarrassed by. One request is a draft; two requests is actual work. Whoever skimps on reflection ends up spending the time redoing all the content by hand.

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 Self-Reflection: Iterative Self-Correction of LLM Answers arXiv:2510.20653

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