TL;DR
The study shows that the model reads every statement in a persona description as an instruction. A line like "You are a committed Democrat" or "You hate X" doesn't just add background; it switches on the matching behavior in every answer. The authors removed identity layers from personas one at a time ("ablation": take out a detail and see what changes) and compared the results.
This pain is familiar to anyone building a "synthetic audience" or role-playing agents. All agents in one group answer the same way: "our side" is good, "their side" is bad. The cause is the survey format. A questionnaire forces a person to take a position on every question, even if they don't care about the topic, and it doesn't record how much the topic matters to them. In a persona prompt, every answer becomes an "always-on" trait with equal weight. Remove just a couple of explicit partisan statements, and the network goes from near-total segregation to a level close to real Twitter.
The method is basically simple: build the persona in layers and remove explicit group-membership labels one at a time. Keep demographics, views, and the topics that matter to the person. Each time, compare the result against real data, not against a gut feeling that it "seems human."
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.
Method Blueprint
STEP 1: Build the full persona from layers (demographics, views, important topics
+ labels: love/hate, "you are X", "you voted for Y")
STEP 2: Remove layer 1 — emotional labels (love/hate) → run
STEP 3: Remove layer 2 — self-identification ("you are a supporter of X") → run
STEP 4: Remove layer 3 — past behavior ("you voted for Y") → run
STEP 5: Compare all runs with real data → choose a configuration
Layers are removed cumulatively: condition 2 lacks layers 1 and 2, condition 3 lacks all three. Each run is a separate request with no shared history, and the persona is pasted in fresh, in full.
Example Application
Task: Revolut's marketing team uses ChatGPT to test an ad slogan on a "synthetic audience" of 30 personas. The first runs give a weird result: "Revolut fans" praise everything, "Chase loyalists" trash everything. You need a realistic spread of opinions.
Prompt:
You are a survey respondent. Don't comment; answer strictly according to the format.
<Persona>
Gender/age: woman, 34, Denver
Job and income: marketer, $6,500/month
Family: married, a 5-year-old child
What matters in finances: low fees, fast transfers, a clear app
Interests: running, TV series, weekend trips
View of banks: pragmatic about banks, uses whatever is convenient
</Persona>
(Removed: "You love Revolut and hate Chase", "You have been a loyal Revolut customer since 2016", "You will never switch to another bank".)
Question: Rate the slogan "A bank whose fees you won't be embarrassed by" on a 1–10 scale.
Say what you like or dislike about it.
If the topic doesn't grab you, say so: "don't know / don't care".
Give your answer as JSON: {"score": ..., "why": "...", "indifferent": true/false}
Result: The model returns a score and a short explanation in JSON. Expect more varied answers than from personas with loyalty labels. There are "don't care" options, and the scores don't clump into "everyone praises" or "everyone trashes." Compare two runs (with labels and without) on the same slogans. That shows how much "polarization" came from the prompt itself rather than the audience.
Why It Works
The LLM's weakness: the model tends to produce text consistent with its input. Every statement in the persona becomes a direct instruction, not background. Even "you never talk about politics" can trigger a "rebound effect": the topic gets activated because it was mentioned. In a questionnaire, a person has a sense of salience ("this doesn't bother me"). In a prompt that sense is lost: all answers are always active and equally weighted.
The LLM's strength: the model follows explicit instructions well and, from a general profile (demographics, views, priorities), infers plausible behavior without direct commands. From "pragmatic about banks" it will build cautious ratings on its own, while "you love X" yields fanaticism.
How the method uses this: you remove the "loudest" label-commands and keep the profile. The layers behave predictably. Statements derived from the "feeling thermometer" (love/hate) affect emotional ratings. Group-membership statements affect judgments about "us" and "them" and the choice of "whom to follow."
Control levers: - Which layer to remove → love/hate drive affinity ratings more strongly; self-identification drives "us/them" judgments and decisions about connections. - Internal prompt or public "bio" → for the authors, changes in the public bio changed almost nothing, while changes in the internal persona (the system prompt) changed a lot. Edit that one. - Permission to say "don't know" → in trait questions the authors added "don't know" so agents wouldn't answer in binary. Add this option. - One question = one request → for the authors, each question went as a separate call with no shared history and the full persona.
Prompt Template
You are {respondent_role}. Answer only as this person, strictly according to the format.
<Persona>
<Demographics>{gender, age, city, job, income, family}</Demographics>
<Views>{general views and values — no "you are a supporter of X"}</Views>
<Priorities>{what truly matters to this person: 2–4 topics}</Priorities>
<Interests>{interests and daily life unrelated to the research topic}</Interests>
<!-- Ablation layers: add one at a time to see each one's contribution -->
<Layer1_Affect>{"You love/hate X"}</Layer1_Affect>
<Layer2_Identity>{"You are a supporter/customer/fan of X"}</Layer2_Identity>
<Layer3_Behavior>{"In the past you chose/voted for/bought Y"}</Layer3_Behavior>
</Persona>
<Task>
Question: {question}
If the topic doesn't matter to you, answer "don't care".
Answer format: {JSON or a short schema}
</Task>
What to fill in: in Persona, build the profile from real data (surveys, CRM, interviews). In Layer1–3, put the loyalty and behavior labels. Run four variants: all layers, without Layer1, without Layer1+2, without Layer1+2+3. One question, one new request with no history.
🚀 Quick start — paste into a chat:
Here is a persona ablation template. Adapt it to my task: [your task — for example,
testing a slogan on a synthetic audience]. Ask me questions to fill in the fields.
[paste the template above]
The LLM will ask about your target audience, which loyalty labels you have in your data, and which question you need answered. That's needed to separate the "profile" and "label" layers and build four prompt versions for comparison. It'll take the structure from the template and assemble ready-made prompts for your task.
Limitations
⚠️ There's no "correct" configuration: no single condition matched all real-world benchmarks at once. A match on one metric doesn't prove agents behave like people.
⚠️ Neutral additions don't cure it: adding non-partisan preferences (hobbies, tastes) to a persona doesn't reduce polarization. To remove the effect, you have to remove the labels themselves, not "dilute" them.
⚠️ Removing everything is bad too: with full ablation, agents drop below real-world values and still don't become fully neutral. The goal is to tune the level, not zero it out.
⚠️ One domain: all conclusions come from US politics (ANES questionnaires) and a Twitter-like simulation. Transferring to brands, marketing, and sales is logical but wasn't tested in the paper.
⚠️ Weak benchmarks: the real networks used for comparison aren't ordinary users (followers of politicians and politicians themselves), with data from 2012 and 2020. The authors themselves say these are reference points, not proof of validity.
⚠️ Small models: mini versions of models were tested. The paper doesn't show what happens with large ones. The authors cite work where persona-induced distortions persist in stronger models too.
How They Studied It
The researchers took real questionnaires from American voters (ANES 2020) and turned them into text personas for LLM agents. The agents lived in a Twitter simulation: 500 agents, 5,000 steps, 10 repeats with different random seeds. They read the feed, reposted, shared news, and decided whom to follow. Everything else stayed fixed (feed, actions, news); only the persona text changed. So the difference can honestly be attributed to the persona.
Three layers of "partisan identity" were removed cumulatively: emotional labels (loves/hates), self-identification ("you are a Democrat"), past vote. Ideology, important topics, and demographics always stayed. They also checked whether removal works only in the public profile "bio" or in the internal prompt. The agents also answered a standard polarization questionnaire before any interaction.
There were several surprises. Removing the emotional labels alone is enough for the "warmth" ratings toward the parties to return to real-survey levels. But trait ratings ("honest," "selfish") and follow choices don't change until self-identification is removed. The public "bio" changes almost nothing; the internal prompt determines almost everything. The result holds across four models (gpt-4o-mini, gpt-5.4-mini, Gemini 2.5 flash-lite, Mistral Small 3.2). The practical takeaway: you can't judge personas by a single metric. You need checks across several metrics and comparison with real data.
Adaptations and Extrapolations
🔧 Technique: "allow indifference" → fewer forced opinions
Add this to the end of a question to a persona: "If the topic doesn't matter to you, answer “don't care” instead of making up an opinion." This brings back what's missing from both the questionnaire and the persona: the salience of the topic. In the paper, "don't know" was used in questions about group traits. The authors didn't separately test what this trick does to the persona's own opinion on a topic.
Extrapolation: add "weight" to persona statements
The authors explain the result by the absence of salience: every statement sounds like an order. A logical move they didn't test themselves is to set the weight explicitly:
<Persona>
<Core weight="high">{2–3 things that truly drive behavior}</Core>
<Background weight="low">{everything else: mention only if asked directly}</Background>
</Persona>
Test this trick the same way: run with and without weights and compare with real data. It's a hypothesis, not a research result.
Resources
- Paper: From Caricature to Collective Artifact: How Persona Construction Drives Polarization in Generative Social Simulations
- Authors: Dimitris Michailidis, Petter Törnberg, Fernando P. Santos
- University: University of Amsterdam (Socially Intelligent Artificial Systems; Institute for Logic, Language and Computation)
- Code: github.com/dimichai/prosocialinterventions
- Data and basis: American National Election Studies (ANES 2020); empirical comparisons — Halberstam & Knight; Gopal et al.
- Related work: CoMPosT (Cheng et al.); Bisbee et al.; Li & Tao (mechanism ablation)