Apply to my task
arXiv:2607.26317 ★ 83 Jul 28, 2026

CDP (Cognitive Diagnostic Profiling): a detailed skill list instead of a vague "average person" makes persona simulation accurate

Key result

You ask the model to play a 'weak student' and get a straight-A student in a mask: it still solves things correctly, just apologetically. The CDP method lets you make an LLM plausibly fail exactly where a real person would, with their own specific gaps rather than an invented average level. The trick: instead of a "beginner" label, give a list of concrete skills: what the person does confidently, what they can't do at all, what they mix up. The model stops playing the role in general and starts following concrete constraints, which gives an honest spread of answers instead of averaged-out correctness.

01

TL;DR

CDP is a technique that replaces a vague persona ("an average student," "a beginner") with a concrete list of what the person can and can't do, broken into separate items. The model gets not a general level but a detailed skill map, and plays the role far more accurately.

The problem: when you ask an LLM to "answer like a typical student," the model almost always answers too correctly and too uniformly, practically like a straight-A student, no matter what level of person you asked it to portray. The reason is simple: the model is trained to be a helpful assistant that tries to give the right answer, and it has nothing to "hook onto" in order to make plausible mistakes. A generic "weak student" label doesn't tell the model what exactly this student can't do.

CDP solves it like this: first the skill is broken into concrete sub-skills (for fractions, say, "can subtract simple fractions," "can borrow from a whole number," and so on), then for the virtual person you decide which items they've mastered and which they haven't, and turn that into a text description of the profile. The model gets this profile before the task, and answers according to specific knowledge gaps rather than a general stereotype.

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: Break the target skill into K concrete sub-skills → a list of K items
STEP 2: Decide which items the "virtual person" has mastered (yes/no) → a binary profile
STEP 3: Turn each item into text: what the person does confidently, what they can't do at all → a ready profile description
STEP 4 (for a set of people): Set how often each profile occurs — evenly or per real audience stats → a pool of virtual people
STEP 5: Give the LLM the profile + the task, ask it to answer as a person with this profile → an answer that matches the knowledge gaps
STEP 6 (for the test as a whole): Collect answers across all profiles, see where questions turned out too easy/too hard

Steps 1–3 and 5 are done in one chat in a single request. Steps 4 and 6 are only needed if you want to run many personas for statistics; then a script is better, but in a chat you can hand-build 3–5 profiles.

03

Example

Task: A product manager is testing a new feature in a mobile carrier's app, a plan comparison screen, and wants to know before release where users with different levels of digital literacy will get confused.

Prompt:

Here is a feature in the app: a plan comparison screen. The user can pick up to 3 plans 
and see their specs side by side: price, gigabytes, minutes, roaming terms.

Simulate how a user with the following skill profile would go through this feature:
- Can do confidently: find the right section in the main menu, read the price and data allowance
- Can't do at all: use filters, understand terms like "unlimited with fine print", "grace period"
- Can do partially: compare two items visually, but gets confused by a third option

Answer in the first person. Walk through the feature step by step: what you do, where you get stuck, 
what you say out loud at that moment.

Result: the model produces a step-by-step first-person story in which the user finds the screen easily but freezes on the terms and gets confused when picking a third plan. Repeat the prompt with a different profile (say, "tech-savvy user") and you'll see the contrast, and immediately notice which UI elements really trip up people with specific gaps, rather than abstract "beginners."

04

Why it works

When asked to play a "weak" or "average" person, an LLM by default drifts back to its base role: a helpful assistant trying to answer correctly. A vague label like "average student" gives the model no concrete reason to make a mistake exactly where a real person would.

But the model is excellent at following explicit, detailed instructions about what a character knows and doesn't know. Say not "weak student" but "can subtract simple fractions but can't borrow from a whole number," and the model gets a concrete behavioral rule and sticks to it much more strictly.

CDP uses this strength: instead of one fuzzy label, it provides a list of concrete facts about the character. The model stops "playing the role in general" and starts obeying specific constraints, which is where the more realistic spread of answers comes from.

Control levers: - Number of sub-skills (K) → more items means a sharper profile but a longer prompt. For simple tasks 3-4 items are enough. - Three mastery levels (confident / can't at all / partial) instead of a plain yes/no → more flexible, lifelike character behavior. - Real audience stats (if you have data on your users) → add them to the prompt as a reference point: "70% of users get confused by filters." This sharply boosts simulation accuracy in models that already hold the profile reasonably well.

05

Prompt template

Here is {context: test/feature/scenario}: {short description}.

Simulate how a person with the following profile would {react to / go through this}:
- Can do confidently: {skill 1, skill 2}
- Can't do at all: {skill 3, skill 4}
- Can do partially: {skill 5}

Answer in the first person, showing this person's actions and thoughts step by step.

Fill in: the context (what you're testing), and 3-5 concrete skills split across the three mastery categories.

🚀 Quick start — paste into the chat:

Here is the Cognitive Diagnostic Profiling 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 specific skills/knowledge matter in your situation and how to split them into separate items, because the method only works when the profile is made of concrete statements, not general ones.

06

Limitations

⚠️ Requires an expert breakdown: If the skill is split crudely or incorrectly (e.g., items that are too general), the profile won't deliver a real gain. The method's quality depends on how concrete the wording is.

⚠️ Weaker without "thinking mode": Models with reasoning turned on (thinking mode) hold the profile much more accurately than those without it; on non-reasoning models the effect is weaker.

⚠️ Statistical calibration needs a tool for bulk runs: You can check one or two profiles by hand in a chat. But if you need to run dozens of profiles for a statistically reliable result (as in testing educational materials), you'll need a script or the API.

07

How it was studied

The researchers took real data from 536 schoolchildren who took a 15-item fraction subtraction test with a known breakdown into 5 specific skills. They compared how 8 different LLMs (from Google, DeepSeek, Qwen, Mistral) answered the same items in three modes: with no profile at all, with a uniformly random detailed profile, and with a profile weighted by the real statistics of skill distribution among the students.

Without a profile, the models behaved like straight-A students: almost all answered everything correctly regardless of question difficulty, and the match with the real students' distribution was weak. Give them a detailed profile and the match jumped: for one of the models, for example, the accuracy of predicting item difficulty shot up from a correlation of 0.24 to 0.86–0.90 with real data.

The most interesting part: models with "thinking" turned on did much better than regular versions of the same models. And adding real statistics on skill distribution among students helped most where the basic detailed profile was already working decently; in other words, a hint about the real world amplifies a good signal but doesn't rescue a weak one.

Research digest

Key result

You ask the model to play a 'weak student' and get a straight-A student in a mask: it still solves things correctly, just apologetically. The CDP method lets you make an LLM plausibly fail exactly where a real person would, with their own specific gaps rather than an invented average level. The trick: instead of a "beginner" label, give a list of concrete skills: what the person does confidently, what they can't do at all, what they mix up. The model stops playing the role in general and starts following concrete constraints, which gives an honest spread of answers instead of averaged-out correctness.

Principle

Don't write 'weak student'; write what exactly they can't do. A generic label gives the model no hook for a mistake, but a detailed skill profile does. Three mastery levels instead of a plain yes/no (confident, can't at all, partial) make the character's behavior lifelike rather than mechanically binary.

Why it works

The model is trained to be a helpful assistant and by default drifts toward the right answer. A vague 'average student' label doesn't tell it where exactly to stumble. A detailed skill list is a clear behavioral rule, and the model sticks to it strictly. Models with reasoning mode turned on hold the profile noticeably more accurately than without it, so the rule works better where the model talks through its logic step by step rather than blurting out a ready answer.

When to apply

Testing interfaces and learning materials → specifically for checking where users with different backgrounds, or students with specific knowledge gaps, will get stuck, especially when you need a contrast between profiles before real user testing. NOT suited if you don't have time to break the skill into concrete sub-items: a crude profile gives no gain.

Mini recipe

1. Break the skill into pieces: 3-5 concrete sub-skills instead of a generic label; not 'weak student' but 'can add fractions with the same denominator, can't borrow from a whole number' 2. Assign the levels: for each item decide: mastered, not mastered, or partial 3. Assemble the profile as text: three lists: does confidently / can't do at all / gets confused 4. Give the model the profile and the task: ask it to answer in the first person, showing its line of thought step by step 5. Compare profiles: run 2-3 different profiles on the same task; the contrast will instantly reveal the real problem spots

Examples

[BAD]: `Answer like a weak student who's bad at fractions` [GOOD]: `Profile: confidently adds fractions with the same denominator; can't borrow from a whole number when subtracting at all; gets confused with different denominators. Solve 5 minus 2/3 in the first person, showing your line of thought`

In plain words

Here's the deal: when you ask a model to pretend to be an "average student" or a "beginner," it still blows it, because deep down it's a super-smart overachiever trying its hardest to be helpful. The model simply doesn't get where exactly it's supposed to "be dumb," and ends up giving either answers that are too smart or some vague noise. The CDP (Cognitive Diagnostic Profiling) method fixes this: instead of slapping a fuzzy label on the model, you feed it a clear skill map: what exactly this "person" knows, and where they're guaranteed to stumble.

It's like asking a professional actor to play someone who can't cook. Without details he'll just theatrically drop pots, and it'll look fake. But give him instructions like "you know how to turn on the stove, but you have no idea how long to boil eggs or how to tell salt from sugar" and the performance becomes eerily realistic. CDP is exactly that detailed script, turning an abstract role into a living character with specific gaps in their head.

Instead of guessing, the model gets a concrete list of competencies. When testing an app interface, for example, we don't just tell the model "be a grandma," we spell it out: "can scroll, but doesn't understand the hamburger-menu icon and is scared of pop-ups." As a result the model stops throwing the game and starts making mistakes exactly where a real user would get lost. That turns simulation from guesswork into a high-precision tool, where every failure of the model is justified by its "profile."

Although the method was battle-tested on psychometric tests, the principle is universal for any product where user experience matters. It's a must-have for UX research, testing complex interfaces, or building training courses. You can run your product past a hundred "digital twins" with different skill profiles before you ever show it to real people. Guessing what users want is on its way out; now we're learning to model human behavior itself, down to the click.

Bottom line: stop feeding the model lazy prompts like "imagine you're a beginner." That doesn't work and gives you skewed data. Switch to structured skill profiles to knock the built-in "helpfulness" out of the model and make it fail for real. Whoever learns to calibrate models to real people will save millions on testing. Everyone else will keep getting hallucinations about usability that shatter on the very first real customer review.

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 CDP (Cognitive Diagnostic Profiling): a detailed skill list instead of a vague "average person" makes persona simulation accurate arXiv:2607.26317

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