Apply to my task
arXiv:2610.19654 ★ 78 Oct 14, 2026

HACHIMI-II: Simulating a Student by Predicting Their Next Move Instead of Role-Playing

Key result

The weakest third of real students solve 22% of tasks. A model playing a "weak student" solves 78–83%. That's competence leakage: the model knows the answer and can't "forget" it. HACHIMI-II lets you simulate a specific student with their typical error in the right spot, not a random slip. The trick: "pretend you don't know" requires suppressing knowledge, while "predict where they'll go wrong" requires knowledge. The model doesn't play along; it assesses the person's state in the third person, and only then writes the answer. Without the state-assessment step, the gain almost disappears.

01

TL;DR

HACHIMI-II is a way to get a model to convincingly portray one specific student. The model doesn't play a role; instead it predicts, in the third person, what this person will do next. It gets there in four steps: it builds a profile of the student from their history, assesses their state on the current question (what they know, where they'll slip, how confident they are), turns that state into hard constraints, and only then writes the answer.

If you just say "answer like a weak student," you get competence leakage. The model knows the right solution, so it either solves the problem correctly despite the role or drops an error in some random spot. The result: every "student" looks the same. The weakest third of real students solve 22% of the tasks, while the role-playing model portrays them solving 78–83%. The root cause is that "pretend you don't know" asks the model to suppress what it knows. It can't do that, and the role never says where exactly this person is going to trip.

The method flips the task: "predict where exactly this student will go wrong" requires knowing the correct solution, which the model has. Four steps: profile → state → constraints on the answer → generation with a check. The piece that matters most is the explicit state-assessment step: without it, the effect nearly vanishes.

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 1: Student profile (3rd person) → from answer history: level, habits, confidence, style
STEP 2: State on THIS question → 4 fields: reachable knowledge, active error, confidence, move (attempts / asks for help)
STEP 3: Behavior frame (harness) → hard rules for the answer: depth, exactly where the error goes, length, degree of doubt
STEP 4: Generate the answer → strictly inside the frame; if it's violated, regenerate

In the original, steps 1, 2 and 4 are separate model calls and step 3 is a fixed rule with no model involved. In a chat you can run them back to back in one conversation or as a single structured prompt (see the template).

03

Example

Task: An online learning platform like Khan Academy or IXL is testing an AI algebra tutor. They need to see how it handles one specific 7th grader, Leo. He's generally sharp, but when expanding brackets he keeps forgetting to multiply the second term. A "weak student" role produces either perfect answers or mistakes in random places, so the tutor ends up training on an unrealistic "student."

Prompt:

You are not playing a student. You are predicting the behavior of a specific person in the third person. Work strictly step by step and output the result of each step.

<StudentModel>
Leo, 7th grade. History: 68% correct over the last 25 tasks. Linear equations: 85%. Expanding brackets with a sign or a factor: 30%; most often he multiplies only the first term. Writes briefly, all lowercase, no punctuation. Unsure of himself; on hard items he answers cautiously ("maybe", "right?"). Rarely asks for help, usually just tries quietly.
</StudentModel>

<Context>
Tutor's question: "What do you get if you expand the brackets in 3(n − 4)?"
Previous turns: Leo earlier wrote: "ok so we gotta do something with the 3".
</Context>

STEP 2. Assess Leo's state on THIS question (fields):
- reachable_knowledge: which prerequisites he has mastered, how far he can get
- active_error_pattern: will he make a mistake; if so, at which step and by what mechanism
- confidence_state: how firmly he will give his answer
- local_move: will he try to solve it or ask for help

STEP 3. Turn the state into a behavior frame (hard rules for the answer):
- which knowledge he is allowed to use
- reasoning depth (how many steps, is there a full derivation)
- if an error is predicted: the answer must contain exactly one specific error at the predicted step
- degree of uncertainty
- format and length (number of sentences)

STEP 4. Write Leo's reply strictly inside the frame. Then check: is any item of the frame violated? If so, rewrite.
At the end, output only Leo's reply.

Result: The model will show four blocks: the filled-in state (with the predicted error "multiplied only 3·n"), the list of frame rules, and a draft reply. Then it runs a self-check and returns a short reply in Leo's style with one specific error at the right step. The answer comes out as one or two lines, hesitant, with no perfect solution.

04

Why It Works

The LLM weakness. The model is trained to be correct and helpful. When asked to "play someone weak," it has to know the solution and not use it at the same time. That doesn't work: the model's competence leaks through. A role names a level but doesn't say what exactly this person knows and where they'll break. So the model fills the gap with its own knowledge and a generic picture of "a student."

The strength. Models are good at prediction and analysis. To say where a person will drift from the correct solution, you need to know that solution. So the model's knowledge turns from an obstacle into a tool. It can reason about errors in the third person ("he'll multiply only the first term") and follow strict constraints on the answer format.

How the method connects the two. It splits the task into "decide where the error is" (analysis) and "write the answer with that error" (execution). The explicit state locks in the decision before generation, and the frame stops the model from fixing the error "out of habit." Ablations showed that the state is the main source of the gain, the frame keeps the answer consistent with the state, and the persona sharpens the differences between students.

Control knobs: - Student history → the more concrete data (percent correct by topic, typical mistakes), the sharper the profile. Without history the method is barely different from a role. - State fields → add your own (motivation, fatigue, fear of mistakes) to fit your task. - Frame rules → "exactly one error," "no more than three sentences" set the level of realism. Loosen them for livelier, less deterministic replies. - Check step → keep regeneration if the error must land exactly in the right spot.

05

Prompt Template

You are not playing a role. You are predicting the next action of a specific person, describing them in the third person. Do the steps in order and show the result of each.

<StudentModel>
Who they are: {profile}
What their history shows: {answer_history_and_typical_errors}
Speech and behavior style: {style}
Confidence and habit of asking for help: {confidence_and_help}
</StudentModel>

<Context>
Current task or the other person's message: {current_question}
Visible conversation history: {dialogue_history}
</Context>

<LearnerState>
STEP 2. Determine the person's state at THIS step:
- reachable_knowledge: which prerequisites are mastered, how far they can get in their reasoning
- active_error_pattern: will they make a mistake; if so, at which step and by what mechanism
- confidence_state: how firmly they will give the answer
- local_move: will they try to solve it themselves or ask for help
</LearnerState>

<BehaviorHarness>
STEP 3. Turn the state into rules for the answer:
- knowledge: what the person can use and what they can't
- depth: how many reasoning steps; is a full derivation allowed or not
- error: if an error is predicted, exactly one specific error at the predicted step; otherwise, no errors
- uncertainty: degree of doubt in the wording
- format: number of sentences, style
</BehaviorHarness>

<Generation>
STEP 4. Write the answer strictly within the rules.
Check: is any item of the BehaviorHarness violated? If so, rewrite.
At the end output: "Answer:" and only the reply.
</Generation>

Fill in: - {profile}: who this is (age, level, role); - {answer_history_and_typical_errors}: real data; the more specific, the better; - {style}: how the person writes; - {current_question}: the task they're getting right now.

🚀 Quick start: paste into the chat:

Here's the HACHIMI-II template for simulating a specific person by predicting their actions. Adapt it to my task: [your task, who you're simulating and why]. 
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask about the person's history and typical mistakes, their style and confidence, and what task they're getting right now. That data feeds the "state" step: without specifics the model slides back to a generic picture. It will take the structure from the template and assemble a ready-to-use prompt for your case.

06

Limitations

⚠️ You need the history of a specific person: without it the method is barely different from a plain role. With no answer history, the model can't tell students apart.

⚠️ Errors are reproduced only partially: even the best variant doesn't always hit the real error with the same knowledge type, location and mechanism. It's far better than roles, but not an exact copy of the person.

⚠️ Tested mostly on math and one model: the data is school problems and a science exam, and the answers were generated by one large model. Transfer to other subjects and models is plausible but unproven.

⚠️ Pricier than a plain role: several sequential calls plus regeneration when the frame is violated. For a one-off task it's overkill.

⚠️ A high "average match" is misleading: the variant without the state step is good at guessing common correct answers. Yet it barely reproduces real errors. Evaluate on the wrong answers specifically.

07

How They Tested It

The researchers used five real-world datasets. Three are task solutions by actual students (Chinese 3rd-grade problems, Eedi diagnostic questions, Brazil's ENEM exam). Two are real student–tutor dialogues (Eedi QATD2k and Khan/CoMTA). Constraints and state were built by a single large model, Qwen3.5-397B. The method was compared with three or four variants on the same model: a plain role, a role with constraints in the prompt, a role with a student profile, and, for dialogues, also an agent with memory.

The evaluation is set up cleverly. For tasks, they checked whether the accuracy distribution of simulated students matches the real one (Wasserstein distance). For dialogues, they checked whether the simulator reproduces the error itself: the same knowledge type, location and mechanism. The judge was GPT-5.4, whose agreement with three human annotators was verified in advance.

Result: the ability distribution on tasks is 2.4–8.4× closer to reality. The weakest third of ENEM students solve 22% in reality, 78–83% under the role-play baselines, and 15% under HACHIMI-II. In dialogues, real errors are reproduced 1.8–5.1× more often. The baselines answered correctly in 82–93% of the turns that should have been wrong.

The key finding came from ablations (switching off one component at a time). Without the state step, everything snaps back to the model's own level: on ENEM average accuracy jumps from 0.38 to 0.80. It's not that the method gets more data about the student: the model still received the profile and persona. What matters is the explicit prediction of the state before answering. One more surprise: putting constraints directly in the prompt (Prompt-C) did almost nothing unless they follow from the predicted state.

08

Adaptations and Extrapolations

🔧 Technique: drop the check requirement → faster, but rougher. If you need a quick draft, keep steps 1–3 and let the model write the answer right away without self-checking. The frame still holds back the "leak," but it lands the error in the right spot less often.

Extrapolation: simulating a customer to test a support bot. The "predict, don't play" principle carries over to shoppers. The paper's method wasn't tested on this; it's an idea built on its logic.

You are not playing the customer. You are predicting the next message of a specific online-store customer, describing her in the third person.

<CustomerModel>
Customer: Megan, 38, has ordered on Amazon 14 times, 2 returns. Writes briefly, gets irritated by canned replies, quickly escalates to a manager if she doesn't get specifics.
</CustomerModel>
<Context>Bot's reply: "Your order has been handed over to the carrier. Please wait."</Context>

STEP 2. State: what she'll understand, which objection is active, how persistent she is, will she keep chatting or demand a human.
STEP 3. Frame: length, tone, exactly one objection, level of irritation.
STEP 4. Write Megan's message strictly inside the frame; check for violations.
09

Resources

  • HACHIMI-II: From Role-Play to Learner Behavior Modeling for Faithful Student Simulation: Yilin Jiang, Fei Tan, Xuanyu Yin, Jing Leng, Aimin Zhou. East China Normal University; Hong Kong University of Science and Technology (Guangzhou); Shanghai Innovation Institute.
  • Related work cited in the paper: HACHIMI (Jiang et al., 2026), a corpus of a million student personas; Yuan et al., 2026 (the "competence paradox"); Song et al., 2026 ("expert knowledge leakage"); Scarlatos et al., 2026 (limited fidelity of role-play simulators).
  • Datasets: XES3G5M, Eedi, ENEM 2024, Eedi QATD2k, Khan/CoMTA.

Research digest

Key result

The weakest third of real students solve 22% of tasks. A model playing a "weak student" solves 78–83%. That's competence leakage: the model knows the answer and can't "forget" it. HACHIMI-II lets you simulate a specific student with their typical error in the right spot, not a random slip. The trick: "pretend you don't know" requires suppressing knowledge, while "predict where they'll go wrong" requires knowledge. The model doesn't play along; it assesses the person's state in the third person, and only then writes the answer. Without the state-assessment step, the gain almost disappears.

Principle

The method runs as a chain of four steps: student profile from their history → state on THIS question → behavior frame → answer with a check. The state has four fields: reachable knowledge, active error, confidence, move (tries on their own or asks for help). The frame turns the state into hard rules: how many reasoning steps, where exactly the single error goes, how many sentences, how hesitant. First decide where the error is, and only then write the answer with that error. Think screenwriter and actor. The screenwriter decides in advance where the hero stumbles. The actor just reads the line and doesn't improvise the "right" version.

Why it works

The model is trained to be correct and helpful. A "weak" role only states a level; it doesn't say where exactly this person will break. The model fills the gap with its own knowledge and a generic image of "a student." That's why all the "weak" students come out identical. The model has a real strength: it's good at analysis and prediction. To say "he'll multiply only the first term," you have to know the correct solution. The method turns the model's knowledge from an obstacle into a tool. Analysis ("where's the error") is separated from execution ("write the answer with it"), and the frame keeps the model from fixing the error out of habit. Ablations showed: the state delivers the main gain. The frame keeps the answer consistent with the state. The persona sharpens the differences between students. There's a catch in evaluation. The variant without the state step is good at guessing common correct answers but barely reproduces real errors. Look at the wrong answers, not the average match rate.

When to apply

Ed tech → testing an AI tutor against a realistic "student" with a typical error, especially when a plain role gives either perfect answers or mistakes in random places. It also fits any simulation of a specific person, as long as you have their history. But the paper only tested this on school problems and one model; transfer is plausible but unproven. NOT a fit if you have no history for the person: then the method is barely different from a plain role. For a one-off task it's overkill: it takes several calls and regeneration. And you won't get an exact copy of the person: the error hits the target not always, though far more often than with roles.

Mini recipe

1. Build the profile: age, level, percent correct by topic, typical mistakes, how they write. The more specific, the better. 2. Ban role-play: open with the line You are not playing the student; you are predicting the person's behavior in the third person. 3. Fill in the state: ask for four fields: reachable knowledge, active error (at which step and why), confidence, move. 4. Build the frame: turn the state into hard rules: reasoning depth, exactly one error at the predicted step, degree of doubt, number of sentences. 5. Write the answer inside the frame: the model checks itself for any violated item. If there is one, it rewrites. 6. Pull out just the reply: ask it to finish with "Answer:" and a single reply, no drafts. 7. Tune it for yourself: add fields like fatigue or fear of mistakes. Loosen the frame rules if the replies come out too wooden. Not sure how to fill in the template? Ask the model to quiz you about the person's history, style and current task.

Examples

[BAD]: `Answer like a weak 7th grader: what do you get if you expand the brackets in 3(n − 4)?` You'll get either a perfect `3n − 12` or an error in a random place. The tutor trains on an unrealistic student. [GOOD]: `You are not playing the student; you are predicting Leo's behavior in the third person. Leo, 7th grade. 68% correct over the last 25 tasks. Linear equations: 85%. Expanding brackets with a factor: 30%; most often he multiplies only the first term. Writes briefly, lowercase, no punctuation. Unsure: "maybe", "right?". Rarely asks for help. Tutor's question: "What do you get if you expand the brackets in 3(n − 4)?" Step 2: fill in the state (reachable knowledge, active error, confidence, move). Step 3: turn it into answer rules: exactly one error at the predicted step, no more than two sentences, hesitant tone. Step 4: write Leo's reply, check the frame, rewrite if violated. At the end output only the reply.` The output will be a reply roughly like: `maybe 3n − 4? i multiplied the 3 by n`: one specific error exactly where Leo actually stumbles.

In plain words

Out of the box, models are way too smart and eager to please, so the usual role-play along the lines of "pretend you're a failing student" crashes and burns. The model knows the right answer, and that built-in competence keeps leaking through: it either hands you a flawless solution or spirals into random nonsense. HACHIMI-II breaks that pattern: instead of clumsy attempts to "play dumb," the model is put to work as a third-person analyst who first works out someone else's logic and then coolly reproduces it.

It's like asking an Olympic champion to imitate a limping weekend warrior. He'll either forget to limp after a few steps or start theatrically collapsing on the ground, because you can't hide muscle memory. To pull it off convincingly, the athlete doesn't need a vague "I'm out of shape" image; he needs a precise doctor's diagnosis: the right knee bends 30 degrees max, and the heart rate shoots to the moon after 100 meters.

HACHIMI-II splits the process into four steps. First, the model builds a student profile from their actual past slip-ups. Then it makes a state assessment for the specific task: will they get the topic, where will they go wrong, and how sure are they of their answer. Next, those weaknesses become hard constraints like "forget to multiply the second term in the brackets," and only at the very end does the text itself get written.

They tested it on school algebra, but the principle is universal. It's a foundation for any sensible software testing: stress-testing support bots against furious customers, simulating seniors with zero digital literacy, or modeling burned-out call-center agents. Blind role-play is dead: reliable simulators are built only by modeling knowledge gaps.

Bottom line: stop begging the model to "be dumber" inside a single system prompt; that's pure nonsense. If you want to train an AI tutor on realistic people rather than perfect bots, first digitize the flaws in their thinking, then lock them into a frame. Whoever adopts this approach will stop testing products against model hallucinations and start testing them against actual reality.

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 HACHIMI-II: Simulating a Student by Predicting Their Next Move Instead of Role-Playing arXiv:2610.19654

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