AI

UX Design

Synthetic Users: A Practical Guide for AI-Driven Testing

Pablo Manzoni

February 20, 2026

Karen has no patience.

If a button is disabled without explanation, she gets annoyed.
If an empty state looks like an error, she assumes the system is broken.
If a loading spinner doesn’t explain what’s happening, she asks for the manager.

Karen isn’t a real person.
She’s a synthetic user.

And she might be one of the most useful ways I’ve found to stress-test a design before putting it in front of real users.

What Is a Synthetic User?

A synthetic user is a constrained AI decision agent embedded in a controlled simulation framework.

It is not just a profile. It is a structured behavioral model with:

  • Identity (role + expertise)
  • Intent (clear objective)
  • Limits (constraints + forbidden assumptions)
  • Logic (behavioral and abandonment rules)
  • Boundaries (strict evaluation scope)
  • Accountability (structured output requirements)

It operates only within what is defined and cannot compensate for ambiguity, missing signals, or structural gaps in the interface.

A synthetic user is not:

  • A fictional persona or a storytelling device
  • A predictive AI that guesses user preferences
  • An intelligent assistant that fixes unclear design

A synthetic user interacts strictly with what is visible in the interface and nothing more. It does not infer intent, fill gaps, or compensate for ambiguity. When the path forward is unclear, it hesitates. That hesitation is not failure. It is the signal that reveals structural friction.

What a Synthetic User Needs to Work

A technical workflow diagram showing how synthetic users work: Context and instructions are combined with a synthetic persona and fed into an AI LLM. The AI interacts with a Figma prototype via an MCP connection to generate a final structured report.

If you want this to be more than “ChatGPT pretending to be someone,” you need structure. You must define:

  1. Functional Role: Who this user is in operational terms (Operations Manager reviewing trip segments).
  2. Domain Expertise Level: How much they understand the subject matter (6 months in logistics, still learning edge cases).
  3. Technical Proficiency: How comfortable they are with software (Uses dashboards daily, avoids advanced filters).
  4. Explicit Objective: What they must accomplish in this session (Confirm whether a trip contains excursions).
  5. Success Criteria: What level of certainty is required to consider the task complete (Needs explicit confirmation, not inference from a map).
  6. Motivations: What they prioritize when making decisions (Speed over exploration).
  7. Constraints: Operational limits that shape behavior (Low tolerance for ambiguity, under time pressure).
  8. Behavioral Rules: How they interpret and act on information (If unclear after 3 seconds, move to another visible option).
  9. Abandonment Rules: When they stop the flow (If the same friction appears twice, they exit).
  10. Forbidden Assumptions: What they cannot infer or mentally “fix” (Cannot assume disabled filters require prior calculation unless explicitly stated).
  11. Evaluation Scope: What part of the experience they are allowed to simulate (Only the “Segments” tab, not the full dashboard).
  12. Structured Output Format: How the simulation must report results (Step → Action → Clarity → Doubt → Reason → Highest friction).

What I Learned About Using Synthetic Users

Synthetic users don’t validate whether something “works.” What they actually do is expose where a design forces users to interpret instead of confirming things explicitly. They surface structural ambiguity that often goes unnoticed in internal reviews and help distinguish between friction that affects everyone and friction that only impacts less experienced users.

In practice, they make design discussions more concrete because you’re no longer debating opinions, you’re observing constrained behavior. They don’t replace usability testing, but they significantly improve how prepared you are before running it.

How to Start Using Synthetic Users 

If you want to try it today:

  1. Define a synthetic user with strict rules
  2. Write a clear objective
  3. Declare your "forbidden assumptions"
  4. Provide the flow step-by-step
  5. Force a structured output 

If the synthetic user never hesitates, your constraints are too weak

I’ve pulled together the exact resources I use:

This Is Still Early

Agent-based simulation is not a new idea.

What is still underdeveloped is how to apply it in a structured, practical way inside UX workflows. There is no widely adopted standard yet. No clear implementation pattern most teams follow.

What I’m sharing here is not an academic breakthrough. It’s a working implementation.

It can evolve. It can scale into automation.

But even in its current form, it has helped me detect structural friction before running formal usability testing, that alone makes it worth exploring.

Pablo Manzoni

UX Lead & Product Designer