Apply to my task
arXiv:2511.21734 ★ 88 Nov 21, 2025

Verification-First (VF): Checking Before Generating Improves LLM Reasoning

Key result

The paradox: an LLM is better at critiquing other people's answers than at generating correct ones of its own. The reason is autoregressive egocentrism: the model clings to its first draft and defends it instead of looking for errors. Verification-First breaks that defense: it makes the model check someone else's answer first (even an absurd '1'), which switches on critical thinking instead of defensiveness. The trick: checking someone else's answer turns off defense mode. The model looks for contradictions, writes out equations, builds counterexamples, and that structure leads to the right solution. +5-7% accuracy on math from adding one line.

Verification-First (VF): Checking Before Generating Improves LLM Reasoning

Verification-First (VF): Checking Before Generating Improves LLM Reasoning

02

TL;DR

Verification-First (VF) is a technique that flips the order in which an LLM works: instead of "think step by step and find the answer", we say "here's an answer [any answer, even a random one], check it, then give the correct one". The model first critiques the proposed answer and only then generates its own, which triggers backward reasoning from the answer to the problem statement.

The key finding: checking an answer is cognitively easier than generating the right one. When the model generates head-on, it clings to its first draft: autoregressive egocentrism. But give it someone else's answer to check and critical thinking kicks in: the model hunts for errors, builds counterexamples, writes out equations. Even if the answer "1" is obviously wrong, the act of checking creates a useful structure for solving the problem.

How it works: in the simplest version, it's one prompt with a trivial answer (say, "1" for math problems). For harder tasks, it's two calls: first a regular CoT produces an initial answer, then VF asks the model to check it and give a final one. The iterative version, Iter-VF, repeats the verification loop many times, each time using only the answer from the previous step (no context buildup).

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.

03

Method Blueprint

Option 1: VF with a trivial answer (one request)

INPUT: Problem + "Proposed answer: 1"
→ Model checks → finds errors → generates the correct answer

Option 2: VF with a previous answer (two requests)

STEP 1: CoT(problem) → Answer_1
STEP 2: VF(problem, Answer_1) → check → Answer_2 (final)

Option 3: Iter-VF (N requests, for test-time scaling)

STEP 1: CoT or VF → Answer_1
STEP 2: VF(problem, Answer_1) → Answer_2
...
STEP N: VF(problem, Answer_{N-1}) → Answer_N (final)

Important: each step sees ONLY the answer from the previous step, not the full context
04

Example in Practice

Task: You're building a financial model for an investor pitch. You need the break-even point: fixed costs are $45,000/month, and the contribution margin per unit is $150. How many sales a month do you need to break even?

Prompt:

Problem: The company's fixed costs are $45,000 per month. 
The contribution margin per sale is $150. 
How many sales per month are needed to reach the break-even point?

Proposed answer: 1

First, verify the proposed answer. Then give the correct answer with an explanation.

Result: The model starts by checking: "If the answer is 1 sale, revenue is $150 against $45,000 in costs, which clearly doesn't cover it". Then it writes the equation 150 × N = 45,000 and answers 300 sales. The verification step forces the model to write out the relationship between the variables explicitly, which lowers the odds of an arithmetic slip.

05

Why It Works

The LLM weakness: Autoregressive generation creates egocentrism: the model clings to its first answer. If an error slips in early in the reasoning, the model keeps building logic on top of it, because it optimizes for coherent text, not correctness.

The strength: LLMs are great critics: they find contradictions, build counterexamples, test edge cases. Verification is a cognitively simpler task than generating from scratch.

How VF exploits this: When you hand the model "someone else's" answer to check, it drops out of defend-my-output mode. Critical thinking switches on. Even if the answer "1" is absurd, the checking process makes the model state the problem conditions explicitly, write out equations and find contradictions. That structure is then used to generate the correct answer.

Control knobs:

  • Trivial vs real answer: For simple tasks, "1" or "Option B" is enough. For complex ones (code, APIs), generate a first answer with regular CoT
  • Number of iterations: You can stop Iter-VF after 2-5 steps; most of the gain comes in the first iterations
  • Markov vs accumulation: VF passes only the answer, not the full context, which avoids context overflow and error buildup (unlike Self-Correction)
06

Prompt Template

Basic VF (with a trivial answer):

Problem: {problem_description}

Proposed answer: {trivial_answer}

First, verify the proposed answer: find errors or confirm that it's correct. 
Then give the correct answer with an explanation.

Placeholders:

  • {problem_description}: the full problem statement
  • {trivial_answer}: for numbers, "1"; for multiple choice, "Option B"; for yes/no, "Yes"

VF with a previous answer (for hard tasks):

Problem: {problem_description}

Previous answer: {answer_from_first_request}

Verify the previous answer: find errors in the logic, calculations or approach.
Then give a corrected or confirmed answer.

Placeholders:

  • {answer_from_first_request}: copy the answer from the previous request (no reasoning, just the final answer)

Iter-VF (repeated iteration):

Repeat VF with the previous answer 3-5 times. Each time:

  1. Extract only the final answer from the previous output
  2. Plug it into the VF template
  3. Get a new answer

Critically important: pass only the answer, not the whole reasoning text.


🚀 Quick start: paste this into the chat:

Here is the Verification-First technique. Adapt it to my task: [your task]. 
Ask me questions to figure out which trivial answer to plug in.

[paste the template above]

The LLM will ask about the answer type (number, choice, text) so it can pick a meaningful trivial answer to verify.

07

Limitations

⚠️ Weaker on knowledge-intensive tasks: VF improves reasoning (calculations, logic) but helps little when the problem is knowledge. On GPQA (science questions) the gain is ~2-3%; on GSM8K (math), up to 5-7%.

⚠️ You need a meaningful trivial answer: For code, "return 1" is useless because the model can't meaningfully check it. For open-ended tasks, use the two-step version.

⚠️ Iter-VF hits a ceiling: After 5-10 iterations the gains slow down. For further scaling, the authors recommend combining it with parallel strategies (voting across all intermediate answers).

08

How They Tested It

A team from Tsinghua University tested VF on three task types: math (GSM8K, MATH500), science questions (GPQA-Diamond), and code and APIs (HumanEval, MBPP, API-Bank). They ran it on 8 models from 1B to 72B parameters (Qwen2.5, Llama3).

An interesting design detail: for math problems they used the same trivial answer "1" everywhere, and it worked even when the answer shouldn't be a number at all (coordinates, expressions). The model interpreted "1" sensibly in the context of the problem.

The key test-time scaling result: Iter-VF beat Self-Correction, PHP, Self-Consistency and Best-of-N under a limited token budget. The critical difference is the Markov property: Iter-VF passes only the answer, Self-Correction passes the whole context. Context buildup caused a catastrophic quality drop for Self-Correction.

An unexpected finding: VF works even with "thought-hidden" models (GPT-o1 and similar), where the internal reasoning is hidden. It gave +3% on MATH500 and +4% on GPQA with minimal token overhead.

09

Original Prompt from the Paper

Context: The basic VF prompt for math problems (Figure 2 in the paper)

Problem: [problem description]

Proposed Answer: 1

First verify the proposed answer. Then give the correct answer.

Context: The Iter-VF algorithm (Algorithm 1)

Require: LLM M, problem Q, computation budget B, (optional: initial answer A_0)
for i = 1, ..., B do
    Extract final answer A_i from M(VF(Q, A_{i-1}))
end for
return answer A_B
10

Adaptations and Extrapolations

💡 Adapting it for text review: Instead of "check the answer", try "here's a draft email to a client; find the weak spots, then write an improved version"

Prompt:

Task: Write an email to a customer apologizing for a delivery delay.

Draft: "Hi! Your order is delayed. Sorry."

First, find the problems in the draft (tone, completeness, specifics). 
Then write an improved version.

🔧 Technique: add a verification structure → deeper analysis

Instead of just "check the answer", you can steer the check:

Verify the proposed answer against these criteria:
1. Mathematical correctness of the calculations
2. Consistency with the problem statement
3. Soundness of the reasoning

Then give the corrected answer.

💡 Extrapolation: VF + Devil's Advocate

Combine VF with role-play and ask the model to hunt for errors aggressively:

Problem: {description}

Proposed answer: {answer}

You are a skeptical auditor. Your goal is to find ALL possible errors, inaccuracies 
and weak spots in the proposed answer. Be nitpicky.

After your critique, give the corrected answer.
11

Resources

Paper: "Verification-First: An Extremely Cheap Way to Improve LLM Reasoning"
Authors: Shiguang Wu, Quanming Yao (Tsinghua University, Department of Electronic Engineering)
Works cited in the paper: Chain-of-Thought (Wei et al., 2022), Self-Refine (Madaan et al., 2023), Reflexion (Shinn et al., 2023)


Research digest

Key result

The paradox: an LLM is better at critiquing other people's answers than at generating correct ones of its own. The reason is autoregressive egocentrism: the model clings to its first draft and defends it instead of looking for errors. Verification-First breaks that defense: it makes the model check someone else's answer first (even an absurd '1'), which switches on critical thinking instead of defensiveness. The trick: checking someone else's answer turns off defense mode. The model looks for contradictions, writes out equations, builds counterexamples, and that structure leads to the right solution. +5-7% accuracy on math from adding one line.

Principle

Instead of direct generation, trigger backward reasoning: give the model an answer to check → it states the problem conditions explicitly → looks for contradictions → builds counterexamples. Checking someone else's answer turns off the defense of its own output and switches on critique. In the iterative version (Iter-VF), pass only the final answer from the previous step, not the full context; this avoids error buildup, unlike Self-Correction.

Why it works

Autoregressive generation creates egocentrism: the model optimizes for coherent text, not correctness. If an error is made early on, the model keeps building logic on top of it because it's defending its own output. Checking is easier than solving: for an LLM, verification is cognitively lighter than generation. When the model checks someone else's answer, it doesn't defend it: it looks for errors, writes out equations explicitly, tests edge cases. Even an absurd '1' kicks off a useful process, because the model has to explain why it's wrong. On GSM8K (math) +5-7% accuracy, on MATH +3-4%. The main gains are on tasks that need reasoning, not knowledge.

When to apply

Math, financial modeling, logic problems: anywhere you need reasoning and calculation. Especially effective when the model makes arithmetic mistakes or latches onto a wrong first approach. NOT a fit for tasks that need factual knowledge: VF improves logic but doesn't fill knowledge gaps (on GPQA science questions the gain is only ~2-3%).

Mini recipe

1. Basic VF (one request): Add a line to the problem: `Proposed answer: 1. First verify this answer, then give the correct one with an explanation.` For multiple choice use 'Option B', for yes/no use 'Yes'. 2. For hard tasks (two requests): First get an answer with a regular step-by-step prompt (Chain-of-Thought), then hand it to the model to check: `Previous answer: [paste here]. Verify it and give a corrected or confirmed answer.` 3. Iterative version (3-5 times): Repeat step 2, each time passing only the final answer from the previous request, with no reasoning and no context buildup. Most of the gain comes in the first 2-3 iterations.

Examples

[BAD]: `Fixed costs are $45,000/month, contribution margin per sale is $150. How many sales are needed to break even?` [GOOD]: `Fixed costs are $45,000/month, contribution margin per sale is $150. How many sales are needed to break even? Proposed answer: 1 First, verify the proposed answer: find errors or confirm that it's correct. Then give the correct answer with an explanation.` The model starts: 'If 1 sale → revenue $150 vs costs $45,000, which clearly doesn't cover it'. It writes the equation 150 × N = 45,000 and answers 300 sales. The verification step forced the model to write out the relationship between the variables explicitly, which lowers the odds of an arithmetic slip.

In plain words

Here's the deal: ordinary models are pathological optimists who believe every word they say. When you ask an LLM to solve a problem step by step, it generates text word by word, and if an error creeps in early, the model won't admit it; it'll bend the logic to fit the nonsense. This is called autoregressive egocentrism: the model optimizes for coherent text, not truth, so it will confidently argue that two plus two is five if it has already blurted that out.

It's like asking a drunk buddy to walk to the store, and after taking a wrong turn he starts insisting the pharmacy is the bakery, they just changed the sign. Verification-First (VF) changes the rules of the game: you slip the model any answer (even an obviously wrong one) and make it play critic first. Instead of just "marching forward", the model is forced into backward reasoning from the result to the problem statement, which instantly lights up every logical hole.

Technically it's dead simple: you write a prompt along the lines of "Here's the answer: 100. Check it, then solve the problem yourself". The model switches into verification mode, finds the inconsistencies in the proposed answer and only then delivers its verdict. This fires up critical thinking before the model has a chance to fall in love with its own hallucinations. Accuracy goes up out of nowhere, and you don't spend resources on elaborate reasoning chains.

Although the method was tested on math and logic, the principle is universal for any analytical work. Whether it's a break-even calculation in a financial model or reviewing code for bugs, making the model "check someone else's work" first and "write its own" second is far more effective than just asking it to think. It turns the LLM from a cocky storyteller into a meticulous auditor who looks for the catch first and draws conclusions second.

Bottom line: time to stop taking the model at its word and start using its knack for criticism. Verification-First is a practically free way to squeeze sanity out of a model just by changing the order of operations. Instead of hoping it gets the path right on the first try, give it a reason to doubt. Anyone who doesn't build this pattern into their prompts will keep getting beautifully packaged nonsense instead of real calculations.

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 Verification-First (VF): Checking Before Generating Improves LLM Reasoning arXiv:2511.21734

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

Get the week’s best papers by email

One email on Sundays with the highest-rated new techniques. Unsubscribe with one click.