Interview Simulation

Simulation runs your interview against an AI persona, so you can see how the script behaves before spending real participants on it.

September 26, 2026

Simulations need a paid plan. On Hobby you get: "Upgrade required: Simulations are not available on the Hobby plan." They also cost 2× the live interview rate.

Where it is

Simulate in the sidebar (/simulate), with Personas and History alongside.

Personas

A persona is the participant the model plays. Manage them at Personas (/personas).

  • Write your own — brief it like an actor: who they are, their situation, what they care about, how they talk, what they are sceptical about.
  • Generate — drafted from the study's own context (type, description, research question, objectives and target population). Generated personas are marked AI Generated.

Good personas are specific. "A 38-year-old parent in Denver who cancelled after two months because recipes took too long on weeknights" produces a more useful transcript than "a busy customer".

Running a batch

  1. Choose the Model Selection tier — open weights (2 credits / 5 questions), standard (6, Solo+), premium (20, Pro+). These are already doubled by the simulation multiplier.
  2. Select Personas — tick the ones you want, or All. The Credit Estimation panel shows questions, personas selected, credits per simulation, total required, your balance and the remainder.
  3. Start Batch Simulation. Progress is shown per persona.

Results appear as interviews in the study, flagged as simulated, so you can filter them in and out everywhere else.

History

History (/history) lists past runs with counts of successful and failed runs and credits used, filterable by status. Each row shows the persona, tier, time and resulting interview. A run refused for plan or credit reasons is recorded as Failed and costs nothing.

With MCP

list_personas    {"study_id": "…"}
create_persona   {"study_id": "…", "content": "A 38-year-old parent in Denver who…"}
generate_personas{"study_id": "…", "count": 3, "save": true}
run_simulation   {"study_id": "…", "persona_id": "…", "model_tier": "open_weights"}
get_simulation   {"simulation_id": "…"}
list_simulations {"study_id": "…", "status": "…", "limit": 20}
delete_simulation{"simulation_id": "…"}
  • run_simulation starts one run and returns immediately. Poll get_simulation until it leaves running. To sweep a panel, call once per persona.
  • Pass persona_id for a stored persona, or persona for ad-hoc text; omit both for a generic participant.
  • Credits are reserved at the estimated cost before the run starts; a request that would exceed your balance is refused with 402 and costs nothing.
  • deliver_signals (default off) decides whether an Interview Flow's "Send a signal" steps reach their real endpoints. Leave it off unless you are deliberately testing your webhook receiver — otherwise a simulation just records what it would have sent.
  • delete_simulation removes the run's bookkeeping row; the interview it produced is kept.

What simulation is good for

  • Catching broken scripts — questions that confuse the interviewer, branches that never fire, follow-ups that never end
  • Estimating length and cost before you buy participants
  • Exercising an Interview Flow along each path

What it is not

Simulated participants are not evidence about real people. They do not have your customers' memories, and they are agreeable in ways real participants are not. Use them to test the instrument, then run it on humans.


Last updated: September 2026