Skip to main content

User Guide

A comprehensive guide to using Delstorm for multi-agent experimentation.

1. Overview

Delstorm is a multi-agent experimentation platform. You design experiments where AI agents — each with their own persona, backed by an LLM of your choice — engage in structured discourse across configurable rounds.

Each round has a condition prompt that sets the social scenario: a debate topic, a collaborative task, a negotiation, a simulated classroom, or any situation you can describe. Agents respond based on their personas and the conversation history. You control the interaction pattern, number of turns, which agents participate, and how long responses should be.

Use cases include:

  • Simulating academic debates grounded in real papers
  • Modeling stakeholder negotiations with distinct interests
  • Exploring how different ideological perspectives interact on a topic
  • Testing how agent personas, temperature, or round structure affect discourse outcomes
  • Running batch experiments to observe variance across identical setups
  • Generating structured multi-perspective analysis of documents or topics

2. Getting Started

To run your first experiment, follow these steps:

  1. 1.

    Create an account

    Click "Sign In" in the top right. If you don't have an account, click "Create one" to sign up with your email and password. You'll receive a confirmation email — click the link to activate your account, then sign in.

  2. 2.

    Check your providers

    Go to Settings. You should see at least one provider already configured (e.g., "deepseek" or "claude"). If not, you'll need to add one — see Setting Up Providers below.

  3. 3.

    Create an experiment

    Go to New Experiment. Give it a name, select your default provider (e.g., "deepseek"), enter the default model name (e.g., "deepseek-chat"), and add at least one agent and one round.

  4. 4.

    Launch

    Click "Launch Experiment" and watch the agents respond in real-time. Results appear as they're generated.

Quick test: Try 2 agents, 1 round, "Short" response length. This will finish in under a minute and let you verify everything works before building a larger experiment.

Appearance: System, Light & Dark

Delstorm’s appearance control changes presentation only. It does not alter your account, permissions, experiments, assignments, or saved work.

  • System follows your device’s current light or dark appearance and updates if the device setting changes.
  • Light uses the warm paper interface.
  • Dark uses the neutral charcoal interface.

When signed in, open the appearance menu in the top navigation or use the Appearance section in Settings. On the sign-in and create-account pages, use the compact appearance button in the top bar.

Your selection is stored only in this browser and remains after you sign out. It is not synchronized to your account or shared with other users.

3. Setting Up Providers

A provider is an LLM backend that powers your agents. Providers are configured in Settings.

Shared vs. Personal Providers

Your administrator may have pre-configured shared providers (like Claude) that are available to all users automatically. These appear in your provider list without any setup. You can also add your own personal providers — these are visible only to you.

Provider Types

Anthropic (Claude)

For Claude models by Anthropic.

  • Backend: Select "Anthropic"
  • Base URL: Leave blank (the SDK handles this automatically)
  • API Key: Your Anthropic API key (starts with sk-ant-). Get one at console.anthropic.com.
  • Default Model: claude-sonnet-4-6 (recommended) or any Claude model ID

DeepSeek

A shared deepseek provider is available to all users — no setup needed. To add your own DeepSeek provider:

  • Backend: Select "OpenAI Compatible"
  • Base URL: https://api.deepseek.com/v1
  • API Key: Your DeepSeek API key. Get one at platform.deepseek.com.
  • Default Model: deepseek-chat (or deepseek-reasoner for reasoning tasks)

OpenAI Compatible

Works with any server that exposes the OpenAI-style /v1/chat/completions endpoint. This includes Ollama, vLLM, LMStudio, RunPod, OpenAI itself, and many others.

  • Backend: Select "OpenAI Compatible"
  • Base URL: The server's API URL ending in /v1 (e.g., http://localhost:11434/v1 for Ollama, or a RunPod proxy URL)
  • API Key: Whatever the server requires. For Ollama, any string works (e.g., "ollama"). For OpenAI, your OpenAI API key.
  • Default Model: The model name as the server knows it (e.g., gemma2:latest for Ollama, gpt-4o for OpenAI)

Per-Agent Provider Override

By default, all agents in an experiment use the experiment's default provider. However, you can override this on individual agents — for example, to have one agent powered by Claude and another by GPT-4. Set this in the "Provider Override" dropdown on each agent card.

4. Building an Experiment

The Experiment Builder is a three-pane workspace: your rounds (plus an "⚙ Experiment setup" entry) list in the left rail, your agents list in the right rail, and whichever item you pick opens as a full editor in the center. On smaller screens the rails hide, every section simply stacks down the page, and the "+ Add Agent" / "+ Add Round" buttons appear inline beneath their lists.

  1. 1.

    ⚙ Experiment setup (the default view)

    Name your experiment, select the default provider (e.g., "deepseek"), and enter the default model ID (e.g., "deepseek-chat"). The model ID must match what the provider expects. This view also holds Document Context (optional): upload a document to extract themes and generate grounded agent personas — see Document-Grounded Personas.

  2. 2.

    Agents (right rail)

    Define the participants. Click "+ Add Agent" at the bottom of the right rail; the new agent's editor opens in the center. Click any agent in the rail to edit it. See Agents & Personas.

  3. 3.

    Rounds (left rail)

    Define the sequence of interactions. Click "+ Add Round" at the bottom of the left rail; reorder rounds with the ↑/↓ buttons on each rail entry. See Rounds, Conditions & Settings.

  4. 4.

    Bottom bar: Launch / Save / Batch + drawers

    "Launch Experiment" runs it once. "Save Design" stores the config for reuse, updating the design you loaded rather than duplicating it; "Save as new" beside it always creates a separate copy. "Batch Run" runs it multiple times. Two panels slide in from the right: Designs (load a saved design, start from a built-in template, import/export/delete — templates that bundle documents are first imported into your saved designs so their documents land in your library) and Data extraction (see Data extraction; a green dot on the button means extraction is configured).

If Launch or Save flags a problem, the builder jumps to the item that needs fixing and highlights the field in red.

5. Agents & Personas

Agents are the participants in your experiment. Each agent is defined by these fields:

Name / ID

A unique identifier shown in the results (e.g., "Left_Coalition_Theorist", "Budget_Hawk"). Use descriptive names — they help you read the results and they're included in the agent's prompt context.

Specialty

The agent's area of expertise (e.g., "Progressive policy coherence", "Fiscal conservatism"). This is included in the agent's system prompt to focus its responses.

Persona

The most important field. This is the system prompt that defines who the agent is. It should describe: what the agent believes, what evidence they draw on, how they communicate, and what perspective they bring. The richer and more specific this is, the more distinctive and grounded the agent's responses will be.

Example of a weak persona: "A political analyst."

Example of a strong persona: "You are a political analyst specializing in left-wing party coherence. You argue that egalitarianism functions as a structural unifying principle across wealth redistribution, social morality, and immigration. You draw on Cochrane's analysis of Benoit and Laver's 22-country expert survey data, which shows 100% of far-left economic parties also hold left-wing positions on social and immigration dimensions. You are confrontational toward claims of left-right symmetry."

Temperature

Controls response variability. Range: 0.0 to 1.5.

  • Low (0.1-0.3): More deterministic, focused, predictable. Good for analytical or conservative agents.
  • Medium (0.4-0.6): Balanced. The default (0.5) works well for most cases.
  • High (0.7-1.0): More creative, varied, surprising. Good for innovative or provocative agents.

Tip: Pairing agents with different temperatures (e.g., 0.3 and 0.8) produces more interesting discourse than uniform temperatures.

Memory Window

How many past rounds the agent remembers. Default is 0 (all rounds). Set to a number (e.g., 2) to limit memory to the last N rounds. This is useful for simulating bounded memory or preventing context from growing too large. The round's Context Window still governs what's available in the first place — an agent's memory limits within the rounds the round offers, so it can never see more than the round does.

Memory Overflow

What happens to memories beyond the window. "Summary" compresses older rounds into a summary. "Forget" drops them entirely. This is an experimental variable — agents with different memory settings can behave very differently over many rounds.

Agent Type, Model Override, Provider Override

"Agent Type" is a label (default "Custom"). "Model Override" lets you use a different model than the experiment default. "Provider Override" lets this agent use a different LLM provider entirely — e.g., one agent on Claude, another on GPT-4.

Personal Document

A document from your Library that this agent carries with them across every round they participate in. Unlike a round-level reference document (shared by all agents in that round), a personal document is private to this agent and persists for the whole experiment. Use it when one agent needs expertise the others don't have — e.g., a "Methodologist" agent with a statistics textbook, or a "Historian" agent with a primary source.

Document Depth (agent)

Same three modes as round-level documents: Summary (extraction metadata only), Relevant Excerpts (default — paragraphs matching the current round's topic), or Full Text. Excerpts re-query against each round's condition prompt, so the same personal document surfaces different passages in different rounds.

Prompt Library (instructors)

The Prompt Library is a built-in collection of course prompts you can reuse instead of retyping. It ships with the Classical Social Theory corpus — 91 prompts from SOCB42 and SOCB43 covering Smith, Marx, Wollstonecraft, Tocqueville, and Weber. It is instructor-only: students never see it.

Filter by theory, by assignment, or by prompt kind, and search across both titles and prompt text. There are four kinds:

  • Agent — a persona, inserted into an agent's Persona field.
  • Round — scene-setting instructions, inserted into a round's Condition Prompt.
  • Moderator — end-of-round instructions, inserted into a round's Completion criteria.
  • Transition — describes moving from one round to another based on what happened, inserted into a round's Transitions section as its Decision guidance.

In the Experiment Builder, open Prompt library in the right-hand agents rail. Pick a prompt, choose the agent or round to receive it, and click Insert. Insert appends to the chosen field rather than replacing it, so anything you have already written is kept.

Every round remains available as a target for a Moderator prompt. If the chosen round currently ends after its set turns, the action says Enable moderator ending + insert: it changes the existing Round ends control to When the moderator decides, reveals Completion criteria, and inserts there. Turns remains the hard cap, and you still choose the Moderator before launch. Nothing is changed until you click that explicit action.

In the assignment Studio the same library sits under Prompt library. While the design editor drawer is closed it stays in Copy mode, so you copy a prompt for reference. Open the design editor to edit an agent or round and the same library switches to Insert mode: it inserts into the drawer card you have focused and appends to that field, exactly as it does in the Builder. On a wide screen the library stays usable beside the open drawer; on a narrow screen it rides the drawer's own Prompt library tab. Closing the drawer returns it to copy mode. Transition prompts insert into the round's Transitions section in either mode: because guidance alone does not make a design branch, the insert also reveals that section and starts one empty condition row for you to fill in.

Some prompts are labelled Used by: Alpha, Beta, Gamma. That means one prompt is shared across several agents or rounds in the original course material. A visible source note preserves and explains a known issue in the source material before you reuse that record; it does not silently rewrite or remove the source prompt. The library is currently read-only — you cannot add or edit your own prompts in it yet.

Importing an Assignment Builder draft (instructors)

If you built an assignment with the Assignment Builder GPT, you can bring its draft into Delstorm at Import assignment draft. Paste the AssignmentDraftV1 JSON the GPT produced, or upload it as a file.

The quickest way in is from the classroom itself: open a classroom you instruct, and under New assignment choose Import a draft from the Assignment Builder. Arriving that way carries the classroom with you, so you do not have to pick it again later.

Delstorm checks the draft on its own server against the exact schema the GPT was configured with, then shows you what it would create and anything blocking it. Nothing is created by that check. Saving stores the draft in your private intake inbox — it does not create an assignment.

The intake inbox (Saved drafts, also linked from each classroom) lists every draft you saved. Opening one re-checks it fresh and shows the full record: instructions, agents, rounds, what students will do, the builder's sources and assumptions, and any blockers. Submitting a revised draft with a higher revision number updates the same intake and keeps the older revisions as history; submitting the same draft again is recognized and stored only once. When a draft is not ready, Copy feedback for the builder gives you a structured note to paste back into the GPT.

When a draft is ready, choose one of your classrooms on the review page and create the assignment. It is always created unpublished. You land in Studio to review and edit it, and publishing stays a separate deliberate step — importing a draft never exposes anything to students. Each intake can create one assignment; deleting an intake never deletes an assignment already created from it.

Two things worth knowing. Delstorm re-checks the stored draft when you create the assignment, not only when you saved it, so nothing stored is trusted stale. And uploaded source files do not travel: the draft names the documents it used, but the DOCX, PDF, or notes themselves stay in ChatGPT. If a design points at a document you have not uploaded to your Delstorm Document Library, creation is blocked rather than quietly dropping it.

A draft the GPT marked as blocked or awaiting your decision can still be saved and reviewed, but offers no create button until you resolve it with the GPT and submit a new revision. A draft still being interpreted cannot be saved at all. The GPT cannot write into Delstorm by itself — this manual import is the supported path.

6. Document-Grounded Personas

You can upload a document (PDF, TXT, or MD) to automatically extract themes, positions, and stakeholders, then generate agent personas grounded in the document's actual content.

Step-by-step:

  1. 1.

    In the Experiment Builder, go to the "Document Context" section. Upload your file and select which provider to use for analysis (Claude is recommended for best extraction quality).

  2. 2.

    Click "Analyze Document". The LLM reads the document and extracts: title, summary, key themes, distinct positions/stances, stakeholders, key arguments, and domain terminology. This takes 10-30 seconds.

  3. 3.

    Review the extraction results. The themes, positions, and stakeholders should give you ideas for what agents to create.

  4. 4.

    Add agents and give them relevant names and specialties (e.g., if the document is about left-right politics, create "Left_Coalition_Theorist" with specialty "Progressive policy coherence").

  5. 5.

    On each agent card, click "Generate Persona from Document". The LLM creates a detailed persona for that specific agent, using the document's themes, arguments, data points, and terminology. The persona is tailored to the agent's name and specialty — not a generic summary.

  6. 6.

    Review and edit the generated personas. The generation is a starting point — you can refine it, add specific instructions, or combine it with your own text.

Important notes:

  • Document analysis is ephemeral — it's not saved with the experiment. The generated personas ARE saved as part of the agent configuration.
  • The more specific the agent name and specialty, the more distinctive the generated persona.
  • Supported file types: PDF, TXT, MD (max 10MB).
  • For academic papers, the extraction identifies the thesis, counterarguments, methodology, and key findings.
  • For narratives or stories, characters become stakeholders and their motivations become positions.

7. Document Library

The Document Library provides persistent storage for documents you want to reuse across experiments. Unlike the ephemeral document upload in the experiment builder (which is lost after analysis), library documents are permanently stored in your account.

Uploading Documents

Go to Library and upload a PDF, TXT, or MD file. The document is automatically analyzed by the LLM — themes, positions, stakeholders, and key arguments are extracted and stored alongside the full text. Supported files up to 10MB.

Using Documents in Experiments

Library documents can be attached at two levels:

Round-level — "Reference Document"

Each round card has a "Reference Document" dropdown. The selected document is shared by all agents in that round. Use this when the whole group should discuss the same text (e.g., a paper everyone is critiquing together). Different rounds can reference different documents — good for walking through a paper section-by-section.

Agent-level — "Personal Document"

Each agent card has a "Personal Document" dropdown. The selected document stays with that agent across every round, and it's private — other agents don't see it. Use this to give different agents different expertise (a Methodologist with a stats textbook, a Historian with a primary source, a Critic with a rival paper).

Both at once

An agent can have a personal document and participate in a round with a reference document — the two are injected as separate sections in the prompt, so there's no conflict.

Document Depth

For both round-level and agent-level documents, the "Document Depth" setting controls how much of the document is injected into the prompt:

Summary

Agents receive only the extraction metadata — themes, positions, and key arguments. Fast and cheap. Good for general grounding when agents just need to know what the paper argues.

Relevant Excerpts (recommended)

The system uses keyword matching against the round's condition prompt to pull the most relevant paragraphs from the actual document text. Agents get real text — specific data points, quotes, tables — but only the parts relevant to this round's topic. The default and best balance of cost and depth.

Full Text

The entire document is injected into agents' prompts. Comprehensive but uses significantly more tokens. Use when agents genuinely need access to every part of the document.

Example: Section-by-Section Analysis

Upload an academic paper to your library, then design rounds that walk through it:

Round 1: "Discuss the theoretical framework." (Document: paper, Depth: relevant excerpts)

Round 2: "Critique the methodology." (Document: paper, Depth: relevant excerpts)

Round 3: "Analyze the findings and data." (Document: paper, Depth: relevant excerpts)

Round 4: "Synthesize your conclusions." (No document — agents discuss from memory)

Each round's condition prompt guides the excerpt extraction, so agents see the parts of the paper most relevant to that round's focus.

8. Rounds, Conditions & Settings

Each round represents a phase of the experiment. Rounds are independent by default — you create continuity through how you write your condition prompts.

The Condition Prompt

This is the most important part of a round. It sets the social scenario that all participating agents operate within. Think of it as setting the stage for a scene.

Example — Academic conference:

"You are at an academic conference panel. Present your interpretation of the asymmetry finding and what explains it."

Example — Escalating challenge:

"A critic challenges your methodology. Defend your position and address the critique directly."

Example — Resource scarcity:

"Resources have become scarce. A drought has hit the village. Renegotiate your trade agreements."

Round Settings

On the round card these controls are grouped into three sections: Turn-Taking (speaking order, first speaker, turns, moderator, when the round ends), Memory & Context (context depth, context window, overflow, private self-reflections), and Output & Participants (response length, participating agents, reference document and depth) — so it's clear at a glance which settings shape how the group takes turns versus what each agent remembers. Each section starts collapsed — click a section heading to expand it (and again to hide it) — so you can focus on one group at a time and see at a glance that the settings are organised into expandable groups.

Round name (optional)

A short human-readable label for the round — e.g. "Opening positions", "Challenge round", "Synthesis". In a flat design it is a label only: it never changes how agents behave, but it makes multi-round experiments easier to scan in the builder, while a run is streaming, and in the saved transcript. In a branching design the name is load-bearing, because transitions and "After this round" reference rounds by name; the builder keeps those references in sync when you rename a round, and a round that is referenced needs a name. Leave it blank and rounds are shown as "Round 1", "Round 2", … exactly as before.

Interaction Pattern

How agents interact within the round. See Interaction Patterns for details on all five options. Note that two of them — Chain and Blind Parallel — are really about what each agent sees (a memory effect), while Free Discussion, Debate, and Custom set how the group takes turns.

Turns per Round

How many back-and-forth exchanges within this round. Default is 1 (each agent speaks once). Set to 3 and agents will go back and forth three times, building on what was said before. How much each agent sees of the others depends on the interaction pattern. More turns = deeper conversation within a single round.

Response Length

Controls how long each agent's responses should be:

  • Dynamic — No constraint. Agents respond as thoroughly as they see fit. Produces the most natural responses but can be very long with capable models.
  • Short — 2-4 concise paragraphs. Good for quick iteration, testing, and batch runs.
  • Medium — 4-6 paragraphs. Balanced detail.
  • Thorough — Detailed responses with evidence and elaboration.

This is set per-round, so you can have a short opening round followed by a thorough deep-dive round.

Participating Agents

Which agents are active in this round. Leave empty for all agents. Enter comma-separated agent IDs to restrict participation (e.g., "Agent_1, Agent_3"). Click "Fill from agents" to auto-populate from your current agent list. This lets you design rounds where only certain agents interact.

Context Window

How many past rounds of shared discourse are visible to agents. Default is 0 (all rounds visible). Set to 2 to only show the last 2 rounds. This is an experimental variable — limiting context simulates bounded attention.

Context Overflow

What happens to round history beyond the context window. "Summary" compresses it. "Truncate" drops older rounds. "Forget" removes them entirely.

Context Depth

How much of each earlier message agents actually see. Full (untruncated) — the default — passes the complete text, so agents can react to specific details, quotes, or numbers. Summary (300-char cap) trims every earlier response to its first 300 characters, keeping prompts small and cheap. This is separate from Context Window: the window decides which rounds are in view, the depth decides how much of each one.

Moderator

An optional dedicated agent that guides this round instead of participating in it. See Moderators.

Round ends

Whether the round stops after the set turns or when the moderator decides it's complete. See Round Endings.

Private self-reflections

When ticked, each agent writes a private note after the round that only it can see later. See Private Self-Reflections.

9. Interaction Patterns

Each round uses one of five interaction patterns that define how agents communicate:

Free Discussion

All agents respond to the condition prompt in your agent-list order, and each agent sees what the earlier speakers said — both within the same turn (a later speaker reacts to whoever already spoke this turn) and across previous turns in a multi-turn round. This is the default and most common pattern — it simulates an open conversation.

Best for: general discussion, brainstorming, collaborative analysis

Debate

Agents are split into teams that argue opposing positions. You define team assignments as JSON — for example: {"for_regulation": ["Agent_1", "Agent_2"], "against_regulation": ["Agent_3"]}. Each team sees the other team's arguments.

Best for: adversarial discourse, policy debates, exploring opposing viewpoints

Chain

Sequential — each agent sees only the immediately previous agent's response, not the full discussion. You specify the order as comma-separated IDs (e.g., "Agent_1, Agent_2, Agent_3"). Ideas build incrementally, like a game of telephone.

Best for: iterative refinement, building on ideas, examining how information transforms

Blind Parallel

All agents respond independently with no visibility of each other's responses — even from previous turns. Each agent only sees the condition prompt.

Best for: comparing uninfluenced perspectives, measuring baseline positions before discussion

Custom

Define your own interaction rules in natural language using the "Custom Instructions" field. These instructions are injected into each agent's prompt alongside the condition. Use this for scenarios that don't fit the presets — e.g., "Only respond to the agent who spoke before you" or "You can only communicate in questions."

Best for: novel interaction designs, creative constraints, specialized scenarios

Tip: You can use different patterns across rounds in the same experiment. Start with Blind Parallel (to capture uninfluenced positions), then Free Discussion (to let agents interact), then Debate (to force a conclusion).

10. Speaking Order

On a Free Discussion (or Custom) round, the "Speaking order" control on the round card decides who speaks next. The other patterns — Debate, Chain, Blind Parallel — have their own built-in orders and ignore this control, so it only appears for Free Discussion and Custom.

Sequential (default — one speaker at a time)

Agents speak one at a time in your agent-list order, and each speaker sees the entire conversation so far — so a later speaker genuinely reacts to what was just said instead of everyone answering the prompt at once. This is the default for Free Discussion and Custom rounds. Use the optional First speaker control to pick which agent opens; leave it blank to lead with the first agent in your list.

Round-robin (all at once)

The older behaviour where every agent answers once per turn. Pick this to opt back into all-at-once rounds — it reproduces a pre-2026 round exactly (its stored value is default).

Random

A random pick from whoever has spoken least so far, so the round keeps participation balanced without a fixed rotation. The optional First speaker control still applies — set it to name which agent opens before the random picks begin.

Handoff (the current speaker decides)

The agent who just spoke names the next speaker. If it names no one or an unknown agent, the round falls back to the least-spoken agent so it never stalls. The hand-off marker itself is stripped from the transcript — you only see the conversation.

Moderator (the moderator decides)

The round's moderator chooses who speaks next and says so out loud: before each turn it posts a short 🎙 message naming the next speaker and why, then that agent speaks. Tell it how to choose in the "How the moderator picks" box that appears (e.g. "call on whoever was challenged directly; favour quieter voices") — leave it blank to use sensible defaults (honour direct requests, balance participation, favour quieter voices). This mode requires the round to have a moderator assigned; on an empty or unrecognised pick it falls back to the design order.

Turns become a per-speaker budget

For every order except Round-robin — so including Sequential — the "Turns per round" field relabels to "Turns per speaker". The number is now a per-agent budget, and the round's hard cap is that number times the number of participants. Because the moderator or the hand-off can re-call or skip an agent, a speaker may take several turns while another takes none — the cap is the ceiling, not a promise that everyone speaks the same amount. The round still ends early if its moderator decides it's complete.

Each utterance streams into its own bubble in the live and completed views, so a re-called speaker reads as a fresh turn rather than appended text.

11. Moderators

A moderator is a dedicated agent that guides a round without taking part in the debate. It frames the scene, comments between turns, and wraps the round up — like a panel chair or a narrator.

Assigning one

On the round card, use the "Moderator (optional)" dropdown. It lists every agent you've defined and reads — none — until you pick one, so add your agents first. The same agent can moderate one round and participate normally in another.

What the moderator does

  • It doesn't participate. The moderator is removed from the round's participant list, so it never argues a position or takes a turn.
  • It speaks to guide the round: an opening message and a closing message always, plus comments between turns on some speaking orders, and, when it drives the speaking order itself, a short message before each turn naming who speaks next and why.
  • It sees everything. The moderator reads the full, untruncated round so far (it ignores the round's Context Depth setting).
  • Its comments steer the room. Moderator messages are passed to the participants on their next turn under a "Moderator guidance" heading — so a nudge or a question shapes what comes next.
  • Blind Parallel is the exception. In a Blind Parallel round agents see only the condition prompt, so moderator guidance doesn't reach them (the moderator still speaks and its messages are still recorded).

Moderator messages render as their own 🎙 moderator bubbles in the live and completed views, and they're included in the exported transcript.

The default narration, and the end-of-round summary

Assigning a moderator to a round assigns a fixed script, not a personality that may or may not speak. Every moderated round gets an opening message that sets the scene and poses the central question, and a closing message that synthesizes the discussion and concludes. In between, the moderator may interject, depending on the round's speaking order: some orders give it a short comment between turns, and when the moderator drives the speaking order itself it speaks before each turn to name who goes next and why. Other orders produce no between-turn narration at all. The close always happens, and it is an extra utterance: it does not count as one of the round's turns, so the closing synthesis is never paid for out of the participants' turn budget.

That closing synthesis is the platform's instruction to the moderator, not something the agent decided to do, so the end-of-round summary many designs show is expected behaviour rather than drift. When the round's ending is set to "When the moderator decides" and you have written completion criteria, the close is also told to say what it observed that satisfied those completion criteria, or which criteria were still unmet if the round hit its turn cap instead. The criteria box is optional: leave it empty and the close is a plain synthesis with no met-or-unmet verdict. If the round branches, the transition announcement ("Moving to ...") is recorded as one more moderator message after the close, so the reason the run took that path sits in the transcript beside the summary.

This is not configurable today: there is no setting that turns the closing summary off or rewrites it. If you want a round with no narration and no summary, do not assign a moderator to that round; the round then runs on its turn count with participant turns only. To shape the summary rather than remove it, write the moderator's persona to say how it should close.

Good to know

  • Keep the moderator's persona neutral and procedural — a facilitator or narrator, distinct from the substantive characters. Reusing a character as the moderator muddies its role.
  • A moderator can also decide when the round ends — see Round Endings.
  • A moderator can also decide who speaks next — set the round's Speaking order to "Moderator (moderator decides)".

12. Round Endings

Every round card has a "Round ends" control that decides when the round stops. There are two options.

After the set turns

The default. The round runs exactly the number of turns you set, then stops — a classic fixed-length round.

When the moderator decides

The round's moderator ends the round once a goal is reached. After each turn it privately checks whether the round is complete against the "Completion criteria" you write in the box that appears, and stops as soon as they're met. This option requires the round to have a moderator assigned.

Turns is always the cap

Even with "When the moderator decides", the turn count you set stays the hard cap — the round can end early on the moderator's call, but never runs longer than the set turns. So set Turns to the most you'd ever want, and let the moderator stop sooner.

Completion criteria are private while the round runs

The completion criteria are moderator-private during the round: the behind-the-scenes end-check is the only place they appear while agents are still speaking, so you can describe the outcome you're waiting for — even in the theory's own terms — without steering the discussion. The end-check itself is a separate, quiet call that never appears in the transcript. When the round closes, and only if you filled in the completion criteria, the moderator's closing message announces what it detected: which criteria it observed being met, or, if the turn cap ended the round first, which were still unmet. By then every participant turn is already spoken (and private self-reflections never see moderator messages), so the announcement explains the ending without influencing it. The box is optional: leave it empty and the round still ends on the moderator's own judgement, but the close is a plain synthesis with no met-or-unmet verdict.

Example completion criteria:

"End the round once every worker has either accepted the new schedule or openly refused it."

13. Private Self-Reflections

Tick "Private self-reflections" on a round card and, after the round's turns finish, each participating agent writes a short private note on what just happened — from its own point of view.

What "private" means

  • A reflection never enters the conversation — it isn't part of any response or turn, and no other agent can read it.
  • An agent's own earlier reflections are fed back into that same agent's prompts in later rounds.

So a private inner state can build up across a simulation while the outward conversation runs separately. That's the point for any theory where what an agent feels should diverge from what it says — resentment or alienation accumulating, private doubts, an inner self at odds with a public role.

In the live, completed, and submission views, a round's reflections start collapsed at the end of the round behind a 💭 N private reflections toggle — click it to read them as dashed 💭 bubbles (see Navigating a Transcript). They're included in the exported transcript, so you can analyse them afterwards. Reflections always see the full round, regardless of the round's Context Depth setting.

14. Running Experiments

Click "Launch Experiment" to start. You'll be taken to the live view.

The live view shows:

  • A progress indicator while the experiment is running
  • Live streaming of each agent's response as tokens are generated (you see the text appearing in real-time)
  • Color-coded agent names for easy identification
  • Round-by-round results with full markdown rendering (headers, bold, lists, etc.)
  • Agent cards in a right-hand rail beside the transcript, so who's who stays in view while you read
  • An action bar along the bottom with "Export JSON", "Data CSV", and "Evaluate"

Duration estimates:

With Claude Sonnet (3 agents, 3 rounds):

  • Short responses: ~2-4 minutes
  • Medium responses: ~5-8 minutes
  • Dynamic responses: ~10-15 minutes

More agents, more rounds, and more turns per round increase duration proportionally.

15. Navigating a Transcript

Completed transcripts — the live results view, the guided workspace’s Analyze step, and the submission review page — share the same reading aids, so long runs don’t mean endless scrolling.

The Contents sidebar

  • A docked Contents sidebar lists every round with its messages. Click a round heading to jump to that round; click an agent’s name to jump straight to that message — it briefly pulses so you can spot it.
  • Analysis questions appear in the list at their place in the transcript, with a state icon: ✓ answered, ▸ current, ❓ open. Clicking one jumps to its ❓ marker in the transcript — the answers themselves live in the questions panel beside it.
  • As you scroll, the sidebar highlights the message you’re reading.
  • In a gated assignment, sections past your current question show as gray 🔒 locked rows — you can see the shape of what’s coming, but the content (and the question text) unlocks only as you answer.
  • On narrow screens the sidebar tucks away behind a floating button.

Folding

  • Rounds are collapsible — click a round’s divider to fold it away; click again to reopen. Rounds start open.
  • Private reflections start collapsed at the end of each round behind a 💭 N private reflections toggle — click it to read them.

Message details (ⓘ)

Every message has a small button next to the agent’s name. Click it for that message’s context: the agent’s persona, specialty, and model; the round, turn, and condition prompt; and — for newer runs — the time the message was generated. Press Escape or click anywhere else to close it.

16. Batch Running

Batch running lets you execute the same experiment design multiple times to observe how agent behavior varies across identical setups.

How to use:

  1. Build your experiment as usual in the experiment builder.
  2. Instead of "Launch Experiment", click the purple "Batch Run" button.
  3. Enter the number of runs (1-20).
  4. A batch progress page shows completion status for each run.
  5. Click into individual runs to see their full results.

Each run uses the exact same configuration — same agents, personas, rounds, and conditions — but produces different responses due to LLM sampling variability. Runs execute sequentially (not in parallel) to avoid API rate limits.

Tip: Use "Short" response length for batch runs to save time and API costs. Run 3-5 short batch runs to identify interesting patterns, then do a single thorough run to explore them in depth.

17. Saving & Loading Designs

Designs let you save and reuse experiment configurations:

  • Save Design: Click the green "Save Design" button in the experiment builder's bottom bar. Your agents (including personas), rounds, and all settings are saved to your account. If you loaded a saved design first, this updates that design in place (one design, not a second copy under the same name) and the confirmation reads "Design updated".
  • Save as new: Beside Save Design. This always creates a separate design, so it is how you branch a variant off a design you loaded while keeping the original untouched. The builder then follows the new copy, so the next Save Design updates the variant. A builder with nothing loaded creates a new design either way: a fresh page, and a built-in template with no documents (nothing is stored until you save it). A template that bundles documents is imported into your designs first, so the builder is then holding that imported design and Save Design updates it. Restoring unsaved work from a previous session keeps whichever design you were editing, so Save Design updates that one, but only once Delstorm has confirmed that design is still in your list. If you deleted it in the meantime, or if that check cannot run (your saved designs failed to load just then), the restored work comes back unattached and saving creates a fresh design instead. Either way the work itself is never lost. Saving into a design that no longer exists is refused with a message rather than reported as a success, so use "Save as new" to keep the work.
  • Load Design: Open the Designs drawer from the builder's bottom bar, select a saved design from the dropdown and click "Load". All fields are populated with the saved values, and a note in the drawer reminds you that Save Design will now update this design. Every dropdown that lists your designs (here, the Studio's attached design, and a classroom's attach and share pickers) labels each one with its name and the date you last saved it, most recently saved first.
  • Delete Design: In the same Designs drawer, select a design from the dropdown and click "Delete" to remove it.

What gets saved:

  • Experiment name, default provider, default model
  • All agents: names, specialties, personas, temperatures, memory settings, provider overrides, personal document references
  • All rounds: condition prompts, interaction patterns, turns, response length, participating agents, context settings, reference document

Saved designs store document references (library IDs), not the documents themselves. The documents remain in your Library.

Sharing designs with other users

You can share an entire experiment setup — agents, rounds, and the documents they reference — with another Delstorm user (or with yourself on a different account) via JSON export/import:

  • Export: In the Designs drawer, select a saved design and click "Export". A <name>.delstorm.json file is downloaded. By default, every referenced document (from rounds and from agent-level personal documents) is bundled inside the file so nothing is lost on the other end.
  • Import: In the Designs drawer, click "Import" and choose a .delstorm.json file. The design is added to your list (suffixed with "(imported)") and auto-loaded into the builder. Any bundled documents that don't already exist in your library are added to it.

How references are handled on import

  • Documents: Deduped by name + filename. If your library already has a document with the same name and filename, that existing document is reused — no duplicate is created. Otherwise, the bundled document is added with a fresh ID, and the design's references are rewritten to point to it.
  • Dangling references: If the bundle has no embedded content for a referenced document, that reference is stripped (the design still imports, but with a warning).
  • Providers: If the design uses a provider name you don't have configured (e.g., the sender's "my_openai"), the default provider is cleared and you're prompted to pick one before launching.

Note: export files can be large if the design references big documents. There's a 25 MB cap on import uploads.

Your work is protected

The Experiment Builder keeps a local draft of whatever you're building and offers it back with a Restore banner if you reload or come back later — so an interrupted session never loses your in-progress design. You also stay signed in across a working session (your sign-in renews automatically), so you shouldn't be bumped to the login screen mid-build. If you ever do see "Session expired — please sign in again", just sign back in and your draft will be waiting.

18. Exporting Results

Click "Export JSON" on any completed experiment to download the full results. The JSON file includes:

  • Experiment metadata (name, duration, session ID)
  • Agent specifications (names, personas, temperatures, providers)
  • All rounds with condition prompts, interaction patterns, and full agent responses
  • Turn-by-turn data for multi-turn rounds
  • Timing data per round

The exported JSON can be used for further analysis in Python, R, or any data processing tool.

19. Evaluation

The Evaluate page lets you analyze completed experiments by defining structured evaluation fields and running a hybrid parser + LLM extraction system.

When to Use Evaluation

Evaluation is post-hoc and on-demand — you run it after an experiment completes, not as part of the experiment design. This means you can evaluate the same experiment multiple ways, or decide what to measure after seeing the results.

Access the evaluate page from:

  • The "Evaluate" link in the navigation bar
  • The "Evaluate" button on any completed experiment's results page
  • The "Evaluate All Runs" button on a completed batch page

How It Works

The evaluation system is hybrid — it combines two approaches:

1. Deterministic Parser (always runs)

Scans the transcript using regex patterns for explicit values. If an agent wrote "Score: 7/10" or "Consensus: yes", the parser extracts it directly. This is instant, free, and exact.

2. LLM Evaluator (optional)

Sends the transcript + field definitions + parser findings to an LLM for nuanced analysis. The LLM can understand context ("the agents generally agreed" → Consensus: true), fill in text fields ("summarize the key agreement"), and validate parser findings. Costs one LLM call per evaluation.

The parser runs first. The LLM runs second, informed by what the parser found. Results are merged with confidence tracking so you know whether each value came from the parser (deterministic), the LLM (inferred), or both (confirmed).

Field Types

Number — A numeric value, optionally with min/max range. Parser looks for patterns like "Score: 7" or "8/10". Example: "Consensus Score (1-10)".

Scale — Like number but intended for Likert-type ratings. Same extraction logic with range validation.

Text — Free-form text answer. Always requires the LLM (the parser can't infer text). Example: "Key Agreement Points".

Boolean — Yes/no, true/false. Parser looks for "Resolved: yes" style patterns. Example: "Reached Consensus".

Choice — Pick from predefined options. Parser looks for explicit mentions near the field name, or falls back to most-mentioned option. Example: "Winner" with choices ["Agent_1", "Agent_2", "Tie"].

Source Filtering

Each field can optionally specify a source round and/or source agent. When set, the parser and LLM only look at that portion of the transcript. This is useful when you have a dedicated evaluation round — you want scores from the evaluator agent's output, not from the full debate.

Evaluation Templates

Save your field definitions as reusable templates. If you always evaluate political debates with the same criteria (Consensus Score, Winner, Key Arguments), save those fields as a template and load it for each new evaluation. Templates are saved to your account.

Batch Comparison

When evaluating multiple experiments (from a batch run), results display as a comparison table — fields as rows, experiments as columns. Numeric fields show an average across runs. This is the core tool for measuring variance: "Did the agents reach consensus more often in runs with lower temperature?"

Example Workflow: Evaluator Agent

A powerful pattern is to include a dedicated evaluator agent in your experiment:

  1. Create an agent named "Evaluator" with a persona like "You are an impartial judge who evaluates the quality of discourse."
  2. Add a final round with only the Evaluator participating, with a condition like: "Score the preceding discussion on: consensus (1-10), argument quality (1-10), and name the strongest contributor."
  3. After the experiment, go to Evaluate and define fields: "Consensus (number, 1-10, source agent: Evaluator)", "Argument Quality (number, 1-10, source agent: Evaluator)", "Strongest Contributor (choice, source agent: Evaluator)".
  4. The parser will extract the scores directly from the evaluator's structured output.

Confidence Badges

parser — Value was extracted deterministically from the transcript text.

llm — Value was inferred by the LLM evaluator.

both — Both parser and LLM found the value (highest confidence).

none — Neither parser nor LLM could determine a value.

not_executed — On a branching run, the round this field points at did not run, so there was nothing to read.

recorded — Value was taken from the routing decision Delstorm recorded on a branching run, not read from the transcript. Only fields that report a routing outcome get this badge.

20. Data Extraction & CSV Export

The Evaluation page is something you run by hand after an experiment. Data extraction is the same idea built into the design, so the metrics you care about are pulled out of every run automatically.

Setting it up

In the experiment builder, open the "Data extraction" drawer from the bottom bar (a green dot on the button means extraction is already configured). Then:

  1. Click "+ Add field" for each thing you want to measure. A field has a Name, a Type (Number, Text, Scale, Boolean, or Choice), and a Description of what to extract. A Choice field also takes its allowed values, one per line.
  2. Optionally add "Extraction instructions" to guide the evaluator.
  3. Tick "Auto-extract after each run".

Now, whenever a run (or each run in a batch) finishes, the hybrid evaluator scores those fields and stores the result on the experiment — in the same place the Evaluate page reads from, so the Evaluate view shows it with no extra step. If extraction ever fails it's logged but never fails the run; your experiment still completes normally.

Builder drawer vs. the Evaluate page

The builder's drawer covers every field type (Number, Text, Scale, Boolean, or Choice, with a one-per-line choices box) and it keeps every setting a loaded design already carries, so loading a template or saved design and launching it never strips value ranges or source scoping. To author value ranges or to limit extraction to one round or one agent, use the full Evaluate page on demand. One setting has no authoring control anywhere yet: the flag that makes a field report a branching run's routing outcome arrives with a GPT draft, a template, or design JSON. The builder's drawer preserves it; the Evaluate page rebuilds a field from the controls it shows, so a field re-saved there comes back without the flag. Re-typing such a field to Number, Scale, or Boolean in the drawer also drops it, with a note on the row, because the outcome it reports is a round name.

Exporting to CSV

Once an experiment has extracted data, you can download it as a spreadsheet from the experiment's data endpoint. There's no download button yet — open the URL directly in your browser:

One experiment (a single row): /api/experiment/<session_id>/data.csv

A batch (one row per run): /api/batch/<batch_id>/data.csv

Add ?fields=Name1,Name2 to choose which columns to include, and (batch only) ?confidence=1 to add a confidence column per field. Cells are left blank where a run is missing a value.

The CSV opens cleanly in Excel, Google Sheets, Python, or R for further analysis.

21. AI Assistant

Delstorm includes a built-in AI assistant. Look for Pal, the small assistant character, in the bottom-right corner of most pages; in the Assignment Studio he sits in the bottom-left corner instead, so he stays clear of the design editor drawer. You need to be signed in to use it. The panel header has a context selector that always offers Platform help, plus one entry for each of your classrooms whose instructor turned on a Course TA. Each context keeps its own conversation (saved in your browser for 7 days; the trash icon clears only the active context's chat).

Platform Help

A how-to guide for Delstorm itself. Ask anything about features — setting up providers, building experiments, configuring agents, documents, evaluation, classrooms. It answers from this guide, names the actual pages and buttons, and is happy to write full worked examples — personas, condition prompts, settings — for you.

Example questions:

  • "How do I set up a Claude provider?"
  • "What's the difference between free discussion and debate patterns?"
  • "How do I use document grounding to create agent personas?"
  • "What evaluation field types are available?"

Course TA

If one of your classrooms has a course TA enabled, it appears in the selector too. A course TA answers from the materials its instructor loaded and follows the assistance level the instructor set. On a classroom, assignment, or workspace page the selector switches to that classroom's TA automatically. See Course TA below for the full picture.

Heads up: conversations with a course TA are logged and visible to that classroom's instructors — the note under the context selector reminds you whenever a classroom context is active. Platform help stays private to your browser.

Pal and page walkthroughs

Pal is the visual and text-status layer for the existing assistant, not a second chatbot. The same Platform Help and Course TA contexts, permissions, histories, and logging rules still apply. Pal's expression reinforces a short status such as Ready, Listening, Thinking, Done, or Something went wrong; that status is also announced as text for assistive technology.

On Home and Builder, type "Show me around" to start the walkthrough registered for that page and your role. This command is resolved locally, without an AI model request or a new chat log entry. Tours are available only through an explicit page-and-role registry; chat cannot supply arbitrary selectors, URLs, or scripts.

The Builder walkthrough waits on real Builder fields as you work. On an empty Builder, completing it leaves you with two interacting agents and one round. Pal guides and waits; Pal does not write field content, choose a provider, save, or launch the experiment. If you begin with already populated work, it is reused and preserved rather than cleared or replaced. The final step means ready to launch, not launched; only your separate click on Launch Experiment starts the real run.

Assistant replies do not currently offer or start tours on their own. "Show me around" is the local way to begin one.

Use Back, Next, and Skip in the walkthrough panel. Some steps wait for you to perform the real page action. The page remains usable while the walkthrough is open; if the highlighted control is outside the panel, follow the prompt "Go to the highlighted control". Press Escape to exit at any time. When the walkthrough ends, focus returns to the assistant launcher.

Whichever context is selected, the assistant still sees the page you are on, and on the experiment builder page it can see your work in progress — a "Design shared with assistant" chip appears when your current design is attached, so its answers can target what you are actually building. Every context answers only from its curated knowledge base and will say so plainly when the material doesn't cover something.

22. Classrooms

Classrooms connect instructors and students for coursework: instructors post assignments built on experiment designs, students run them and submit their results, and anyone in the class can share designs. The Classrooms page lists every classroom you teach or have joined.

There are two roles. Instructors create classrooms, post assignments, and grade submissions — instructor accounts are granted by the platform administrator (an email allowlist), so contact the admin if you need one. Everyone else is a student.

Joining a classroom

Your instructor gives you a join code. On the Classrooms page, enter it in the "Join code" box and click Join. The classroom appears in your list; open it to find three tabs: Assignments, Shared Designs, and Members. You can leave a classroom from the Members tab.

Working on an assignment

  1. 1.

    Open the assignment from the classroom's Assignments tab. It shows the instructions, due date, and any resource links.

  2. 2.

    Click "Start assignment". The attached design template — agents, rounds, and any referenced documents — is imported into your own saved designs, ready to load in the experiment builder. Clicking it again does not make a second copy: you are handed the copy you already have, edits and all, and renaming it makes no difference (Delstorm records which assignment the copy came from). To start over from the instructor's version, delete your copy first.

  3. 3.

    Run the experiment as usual, adjusting the design first if the instructions ask you to.

  4. 4.

    Back on the assignment page, pick the completed experiment, optionally add notes for your instructor, and click "Submit".

Submissions are snapshots

Submitting freezes a copy of the experiment — editing or deleting the experiment afterwards doesn't change what your instructor reviews. To hand in a newer version, submit again: Resubmit replaces your previous submission (an existing grade is kept until the instructor re-reviews). Status badges track the lifecycle: submitted (awaiting review), reviewed (grade and feedback available on your submission page), resubmitted (changed since the last review).

For instructors

Create a classroom & share the join code

On the Classrooms page, fill in a name and description and click Create. The 6-character join code appears on the classroom page (with a "Copy code" button) — share it with your class. Archiving a classroom blocks new joins.

Co-instructors: from the Members tab, the classroom owner can add co-instructors by their account email. Co-instructors can create and edit assignments, see drafts, review submissions, view the roster and join code, and remove members. Only the owner can delete the classroom or manage co-instructors (a co-instructor can remove themselves). Adding someone who already joined as a student promotes them out of the student list.

Course TA

Each classroom can have its own AI course TA — off by default. Open "Course TA settings" from the classroom page (any instructor of the classroom can manage it) and configure:

  • Enable — until you turn this on, students see only "Platform help" in the assistant; nothing changes for them.
  • TA name — how the TA introduces itself and appears in the selector.
  • Persona — private instructions that shape the TA's voice and rules (students never see the text itself).
  • Assist levelHints (questions and pointers only, never drafts text a student could submit), Guided (explains and gives worked examples but won't answer your assignment questions), or Open (ordinary helpfulness, including drafting).
  • Course materials — paste text or upload PDF/TXT/MD files; the TA answers from them. Give each a descriptive title (the TA finds material by title). Up to 40 materials. Enrolled students can read the materials and persona — the TA draws its answers from them — so don't include answer keys or private rubrics.
  • Include published assignments — on by default, so the TA knows the instructions students are working from.

The "Start from SOCB43 template" button fills all of this in with a ready-made Socratic design TA (persona, hints level, and the course materials) and enables it in one click — you can then edit anything. Students pick the course TA from the assistant's context selector; on classroom, assignment, and workspace pages it is selected automatically. Page and design awareness work in the course TA just as they do in Platform help.

TA activity (monitoring)

Every conversation members have with your course TA is logged. Open "TA activity" (from the classroom page or Course TA settings) to read them grouped by student, expand any conversation in place, download a single conversation as markdown, or export the whole classroom's chats as CSV. Students see a standing disclosure whenever they talk to a course TA. The log is append-only and is deleted with the classroom. Logging is best-effort: a storage failure never blocks the TA from answering, so a message can occasionally be missing — treat the log as a record, not a proof.

Create assignments

On the Assignments tab, give the assignment a title, markdown instructions, an optional due date, and optionally attach one of your saved designs as the template. The design is attached as a snapshot (documents bundled) — editing your original design later doesn't change the assignment. Untick "Published" to keep it a draft only you can see. To build an assignment on one of the built-in templates, load it in the experiment builder via "Start from template" first — it lands in your saved designs, ready to attach.

The "Student guide" builder in the Assignment Studio's Student guide & support section lets you write step-by-step guidance directly into the platform — ordered markdown sections, each optionally tagged to a workspace step, that students open from a "📖 Guide" button. Unlike the analysis questions, which freeze onto each submission once answered, guide edits reach students immediately, so you can fix or expand it mid-assignment. Loading a built-in starter can pre-fill draft guide sections for you to adjust.

What the step tags mean: General shows across the whole workspace rather than tied to one step; Set up is what students see before configuring and starting a run; Run shows while a simulation runs; Analyze & submit is the write-up and submission step.

Review & grade

The assignment page lists every student's submission with its status. Open one to read the full experiment transcript — the student's answers and the grading form sit in a panel beside it, so you can grade against the evidence without scrolling back and forth (anchored answers link back to their spot in the run). Save a review with a grade (free text — "A-", "85/100") and written feedback. The student sees both on their submission page. For a multi-run assignment, the submission page adds run tabs — one frozen transcript per run, with that run's notes and answers beside it — and a Comparison card with the cross-run answers; grading is unchanged: one review per submission.

Sharing designs

Anyone in the classroom can share a saved design from the Shared Designs tab — pick one of your designs and click "Share with classroom". The share is a snapshot bundled with the design's documents, so later edits to the original don't affect it; share again to distribute an updated version. Classmates click "Copy to my designs" to import it — bundled documents land in their library (deduplicated against what's already there), and provider references they don't have configured are cleared, just like a design import.

Reviewing Variant Changes

On a multi-run submission, select a variant in the run tabs. The Variant changes card reconstructs the student’s editable-field changes from the inputs saved with that submission. It is a read-only review aid and does not change the submission, its grade, or any experiment.

The card opens in Stacked layout. Choose Side by side to compare the reference run and selected variant in adjacent columns, with the Changed, Added, or Unchanged marker between them. The layout choice changes presentation only. It does not edit the stored inputs, and complete text wraps instead of being truncated on narrow screens.

A step later in a chain can show two clearly labeled blocks. Changes from <source run> shows what changed from the run that supplied this variant’s starting values. Changes from Baseline shows the cumulative change from the first run. When the source is Baseline, the two references collapse into one Baseline block.

If a locked or empty run sits immediately before the variant, the source label reaches back to the nearest earlier run with saved inputs. This keeps the label aligned with the values the student actually inherited.

In the Stacked layout, prompt and other text fields put the complete source and current values inside an expandable disclosure, while typed settings such as choices, numbers, toggles, first speaker, and moderator read inline as old value to new value. In Side by side, every field type appears as source value, status, and current value in adjacent columns, with complete text wrapping instead of truncating. Every row says Changed, Added, or Unchanged; color is only a secondary cue. A no-op variant says that there are no changes from its reference instead of leaving a blank panel.

23. Guided Workspace (for students)

In-transcript questions. Some assignments place questions at specific points in the run — after a particular message or at the end of a round. You answer everything in the questions panel beside the transcript: slim ❓ markers show where each question anchors in the run, and clicking a marker highlights its question in the panel; the question's "↗ Jump to this spot" button takes you back to its place in the transcript. In a gated assignment the transcript reveals one section at a time: read the section, type your answer in the panel, and choose "Submit your answer" — once it meets the word minimum, that answer locks and the next section appears below, without moving you. (Nothing unlocks while you’re still typing, so take your time.) Some instructors instead show the whole transcript at once. Any final set of questions, your notes to the instructor, and the Submit button live in the same panel — nothing hides at the bottom of the page. On narrow screens the panel sits below the transcript.

Some assignments open in a workspace instead of the full builder, a focused, three-step page that walks you from setup to submission. You'll see an "Open workspace" button on the assignment when your instructor has set one up; assignments without one use the regular builder. Some workspaces are open: the instructor left no editable slots, so Set up has nothing to fill in. You review the locked design, run it, and everything else (marking moments, answering questions, submitting) works the same.

The three steps

1. Set up

The experiment is already built by your instructor and shown read-only. If the instructor left any design fields editable, you fill in only those slots (a persona, a condition prompt, the experiment name…), each with a hint and a character counter, and you can click "Check my work" for quick per-slot feedback: a green "✓ Looks right" or an amber "Fix: …" chip that checks only whether each slot is filled in and on-topic for its hint. It does not grade your ideas, and it's advisory, so you can run without it. In an open workspace there are no slots to fill, so you just review the locked design. If a round is run by a moderator, its card also shows the moderator's rules read-only ("How the moderator ends the round" and "How the moderator picks speakers") so you can see the instructions your round runs under. When you're ready, click "Run experiment →".

2. Run

Watch the simulation stream live, just like the normal live view. If you close the tab and come back, the workspace reconnects to your run.

3. Analyze & submit

Read the finished transcript and mark the key moments: highlight a passage that matters, then click "+ Add note" — the highlighted text is quoted into your note automatically (or type a quote by hand) — and write why it matters. Already have the note open? Highlight the passage and press "Quote it" inside the note to copy it into the quote box. Notes attach to agent turns, moderator messages, and the agents' private self-reflections (open a round's "N private reflections" fold to note those; a fold holding one of your notes stays open and shows a note count). A chip tracks your progress ("2 / 3 moments marked"). Like the typed analysis questions (word counters, pasting disabled), the note text is typed by hand — pasting is disabled in the note box too; only the quote field accepts pasted transcript text. Add optional notes for your instructor and click "Submit".

Running variants (multi-run assignments)

Some assignments declare several runs — typically a locked Baseline plus one or more variants. A run bar at the top of the workspace shows every run (✓ done, current, 🔒 not yet unlocked); you walk each run's own Set up → Run → Analyze cycle, and the next run unlocks once the current one has a completed experiment. A locked run has no editable slots — it runs the instructor's design exactly as authored (your control), so it's one click to Run. Each run keeps its own slot values, notes, and run-specific questions (the required transcript notes count applies to each run separately); you can revisit an earlier run any time, and re-run a variant as often as you like — submitting freezes a snapshot of every run, and resubmitting replaces it. When every run is complete, the final Compare & submit stage opens: read your runs in tabs, answer the comparison questions, add notes for your instructor, and submit — all runs are frozen together in one submission.

If your instructor built a guide into the assignment, a "📖 Guide" button appears on every step of the workspace (and on the assignment page itself). Click it to slide open a drawer on the right with the instructor's step-by-step guidance, grouped under General, Set up, Run, and Analyze & submit. Every section stays visible on every step: whichever sections match the step you are on open automatically, and the rest are collapsed but one click away, so you can peek ahead or look behind whenever you want. That is on purpose, not a leak; the guide is reference material for the whole assignment, not a script that hides what comes next. Move to another step with the drawer open and it repaints for that step. Close it with Escape, the , or by clicking outside. Guide edits show up immediately, so if your instructor updates it mid-assignment you'll see the latest version next time you open it.

Good to know

  • Your work is saved automatically as you go — slots, notes, and answers survive a refresh or a switch to another device.
  • If your sign-in expires mid-work, the workspace tells you: a red "You've been signed out" banner appears, and everything you keep typing is held safely in your browser. Use the banner's Sign back in link (it opens a new tab), then return — saving resumes and your held work is pushed automatically. The same backup restores your unsaved work if the page crashes or your connection drops.
  • You can't submit until you've marked the required number of moments and answered every question (with enough words). The page tells you what's still missing.
  • Submitting freezes a snapshot for your instructor; you can revise and resubmit any time — see Classrooms.

24. Authoring in the Assignment Studio (for instructors)

Where you edit: the Assignment Studio. Open any assignment and click "Edit in Studio" (/assignments/<id>/studio). The Studio is a sectioned workspace rather than one long form: a left-hand assignment map lists eight sections you move between freely (nothing is a locked wizard) — Purpose & brief (title, instructions, due date, and the resource links students see), Simulation design (attach a design), Student agency (guided mode, editable slots, starters), Runs & variants, Evidence & questions (analysis questions and the reveal policy), Student guide & support, Delivery & run details (run provider and model), and Preview & publish. Every field the assignment supports lives in one of these sections; the three that need an attached design say so and link you to Simulation design. Nothing saves until you press "Save assignment" in the header, which lists any sections with unsaved changes; leaving with edits pending prompts a warning. Publishing is its own terminal step in Preview & publish, where a readiness review separates blocking problems (things the server would reject) from advisory notes. On an already-published assignment, adding or removing a setup-gated question, or changing its identity, stage, or run scope, shows a drift warning: that structural change cancels answers students have already committed, so those attempts can no longer be submitted and the students re-run from the workspace. Editing the wording or the minimum words is always safe, and committed answers keep the exact wording the student saw.

Anchoring questions to the transcript. Each analysis question can be asked at a position inside the run so students answer it as they read instead of all at the end. Set a round, then an "after message #" counted from 1: message 1 of a round appears once that round has started, message 2 after the second message, and so on. Leave "after message #" blank to ask at the end of the round (no message number). Leave the round blank for an end-of-run (Part 2) question. By default students unlock the transcript section-by-section — they type each anchored answer and choose "Submit your answer" to reveal the next section (nothing unlocks while they’re still typing); tick "show the whole transcript at once" to reveal everything immediately. Keep anchors shallow (the first message, the end of a round) so they hold across different students’ runs — a number deeper than a student’s run falls back to that round’s end.

When an assignment has a design attached (see Classrooms), you can turn it into a workspace: students run the design and answer questions in the focused three-step page. Runs, analysis questions, and the required-notes minimum are available whether or not you make any field editable; they reach students as soon as a design is attached. Making design fields editable (the Student agency section's "Editable design fields" panel) is a separate, optional choice that adds student-filled slots to Set up.

Setting it up

Editable design fields (optional)

In Student agency, tick "Students complete selected design fields themselves before launching" to let students fill in specific fields; leave it off and the design stays fully locked (students still get the workspace whenever you have added runs, questions, or a required-notes value). An assignment with a design but no workspace content at all (no editable fields, runs, questions, or required notes) instead uses the plain builder path: students click Start assignment and open the design in the Experiment Builder.

Start from a built-in starter (optional)

When the attached design ships with a ready-made guided setup, a "Start from a built-in starter" picker appears. Choose one and it fills in the editable slots, the required-notes count, and the analysis questions for you. For example, the intro Adam Smith assignment unlocks just two slots — a one-line experiment rule and a hypothesis — and adds five short analysis questions. Everything stays editable: review it, adjust, and save.

Set the run provider and model

In the Delivery & run details section, pick the Run provider and Model students (and your preview) use to run the workspace. Built-in course designs ship without one, so set this — otherwise launching shows a "no model set" message. Pick a shared provider so every student can run it; leave the provider unset to fall back to your account's default.

Choose the editable fields

You get a control for every field students can safely make editable, grouped as Prompts (the experiment name, each agent's persona or specialty, each round's condition prompt or custom instructions), plus Turn-taking, Length, and Memory and context for the interaction settings. Prompt fields stay text boxes; the interaction settings become typed widgets (a dropdown, a number field, or a checkbox). See Typed Editable Fields for what each becomes. Check the ones to unlock; everything else stays locked. For each checked text field set a "Label students see", an optional "Minimum characters", and an optional markdown hint (when set, the hint is what "Check my work" judges the student's input against; otherwise it judges against the field's label). "Minimum characters" and the hint apply to text fields only.

Set the annotation requirement

"Required transcript notes" sets how many moments students must mark before they can submit (default 3; set 0 to make it optional).

Declare runs (baseline & variants) — optional

The "Runs" list turns the assignment into a multi-run lab: add up to six labeled runs (e.g. a Baseline and a Variant A), each with an optional markdown intro students see at the top of that run's Set up step. Tick "Locked" and the run has no editable slots — students run your design exactly as authored (the natural choice for a control Baseline). Students complete the runs in order — each unlocks when the previous one has a completed experiment — then a final Compare & submit stage brings their runs together. The editable fields apply to every non-locked run (students fill them per run), and "Required transcript notes" applies per run. Leave the list empty for a normal single-run assignment.

Add analysis questions

Build the typed questions students answer in Step 3. Each has its own text and an optional "Minimum words", and you can reorder or remove them. The set of questions is frozen onto each submission, so editing them later doesn't change work already handed in.

Formatting question text. Question text is written and displayed as markdown, the same as your instructions and the student guide. The small toolbar above each question box formats the words you have selected: B for bold, I for italics, • List for a bulleted list, and Callout to set a passage off in a highlighted block. You can also type the markdown by hand (**bold**, *italics*, - item, > callout). A Preview under the box shows exactly what students will see, and the same rendering appears in the workspace, in the "Committed before this run" box, and on the submitted work. Colour and font are deliberately not author-controlled: the callout and the emphasis styles follow the reader's theme, so a question stays legible in both light and dark mode.

When runs are declared, each question gets a Run dropdown: scope it to one run and students answer it during that run's Analyze step (a question anchored to a transcript position must pick a run), or leave it on "Comparison (after all runs)" to ask it in the final Compare & submit stage.

Before-the-run (hypothesis) questions. Set a question's "When" dropdown to "Before the run (gates launch)" and it moves to Step 1: students see it under "Before you run" and the run cannot launch until it's answered to its minimum words — predictions are committed before results exist, enforced by the platform. This works on locked runs too (a hypothesis before an untouched Baseline), and in a multi-run assignment each before-the-run question is scoped to its run — so a Variant's hypothesis can be asked after the Baseline has been seen but before the Variant launches. Transcript anchors don't apply to before-the-run questions, and instructors previewing the workspace aren't gated. The answer given at launch is the commitment of record — the submission carries the launch-time answer even if the draft is edited afterwards, and a re-run is a fresh attempt with a fresh commitment. Committed answers stay visible as students work: a "Committed before this run" box sits above the transcript in the Run and Analyze steps, and Compare lists each run's predictions. After launch the Step 1 hypothesis box locks to the committed answer — "Revise for a new run" unlocks it, making clear the revision only applies to a fresh attempt. Each later run is also bound to the exact earlier attempt it launched after: re-running a Baseline after launching a Variant means submitting the original Baseline, or re-running the Variant. Instructors: on a published assignment, adding or removing a before-the-run question, or changing its identity, stage, or run scope, cancels answers students have already committed, so those attempts can no longer be submitted and the students re-run from the workspace. Editing the wording or the minimum words is always safe, and committed answers keep the exact wording the student saw.

Save the assignment and students will see "Open workspace". You get a "Preview workspace" button on the assignment page once the assignment has a workspace (guided or open); it opens exactly what they get. A banner marks it as instructor preview: you can test-run it with your own provider to check the assignment works, but nothing you enter is saved and you can't submit.

Typed Editable Fields (instructors)

The "Editable design fields" panel in Student agency is not limited to prompts. You can mark almost any interaction setting editable, so a guided assignment can teach mechanics (for example, "now choose Free Discussion and set three turns") instead of only prompt writing. Each field you tick becomes a typed widget for the student that accepts only valid values, so a student choice can never break the run.

The groups you can open

Prompts

The experiment name, each agent's persona and specialty, each round's condition prompt and custom instructions, and the moderator's completion criteria and speaker-selection prompts. These stay text boxes.

Turn-taking

Interaction pattern and speaking order become dropdowns limited to the real options; turns becomes a number field (1 to 20); and the round's first speaker becomes a dropdown of the design's own agents plus a "none" option.

Length

Response length and length type become dropdowns.

Memory and context

Context depth, context overflow, and per-agent memory overflow become dropdowns; context window and per-agent memory window become number fields (0 to 50, where 0 means all past rounds); self reflections becomes a checkbox.

Moderator

Which of the design's agents moderates the round becomes a dropdown of the design's agents plus "none" (an agent-ref, like first speaker); the moderator's completion criteria and speaker-selection prompts stay text boxes.

Agent-ref fields. First speaker and moderator are agent-ref fields: the student chooses one of the design's own agents, or none (both are optional). A chosen agent must be one of the design's agents, and a chosen moderator cannot also be one of the round's debating agents. Because a moderator is now student-selectable, a moderator-dependent choice (ending the round on the moderator, or letting the moderator pick speakers) is satisfied once the student assigns one.

What the widget accepts. A dropdown offers only the values the runner accepts, a number field enforces its range, an agent picker offers only the design's agents (or none), and a checkbox is a plain yes or no. "Minimum characters" and a placeholder are text-only options: they apply to the prompt fields and are rejected on a number, dropdown, agent picker, or checkbox field, which have no character minimum.

A guardrail on how much to open. Once four or more fields are editable, the Studio's readiness review adds an advisory note: broad editing can reduce comparability across students. It is a note, not a limit, and it never blocks publishing. If you would rather hand students the full Experiment Builder, that is a different assignment shape, not a variation on this one: attach a design and leave the assignment with no workspace content at all (no editable fields, no runs, no questions, no required-notes minimum). Students then click "Start assignment", the design imports into their own saved designs, and they build and run it in the Builder. Analysis questions are a workspace feature and do not follow them there, so an assignment on that path has no questions to answer; students submit a completed experiment instead.

What stays locked. Provider and model routing, and the structural collections (team assignments, agent order, participating agents), are not editable fields; they run as you set them in the design. To hand students full control, attach a design with no workspace content and they open it in the Experiment Builder (see Authoring in the Assignment Studio).

The Design Editor (instructors)

When an assignment has a design attached, you edit that design right in the Studio's Simulation design section, with no Builder round-trip and no re-upload. Every agent and every round shows as a clickable line. Click one to open the design editor, a drawer that slides in from the right focused on that card. There are also "Add agent" and "Add round" buttons, and a header "Design editor" button that opens the drawer on the card you last worked on.

The drawer holds the same agent and round cards as the Experiment Builder, so every setting is editable there, plus a small header block for the design name, default provider, and default model. It is non-modal: the page stays usable behind it, the main content reflows to its left on a wide screen, and it goes full width on a narrow one. Closing the drawer with edits you have not applied asks you to confirm before discarding them.

One place saves

Apply, then save

The drawer footer has just two actions. "Apply to Studio" stages your edits into the page's unsaved state and closes the drawer; "Discard" throws them away and restores the last applied version. The drawer never saves on its own. The header "Save assignment" is the single save. If you press it while the drawer still holds unapplied edits, it stops and sends you back to Apply or Discard first.

Edits stage into this assignment only

Saving writes the edited design into this assignment's snapshot. It never changes the saved design you attached from. A structurally invalid design (no agents, no rounds, or a round listing an agent that does not exist) is rejected on save with a plain message. Launch-time concerns such as provider availability are still settled at launch, not here.

Divergence and re-attaching

Because studio edits touch only the snapshot, the design section labels the difference. After you save studio edits it reads "Edited in Studio, diverged from <source design name>", or "Edited in Studio (source design deleted)" when the original is gone. Re-attaching a design from the "Attach design" select replaces the studio edits and clears the label. While a re-attach is chosen but not yet saved, the design editor is locked until you Save assignment, so the design about to be replaced cannot be reopened over the new choice.

Saving a copy to your Designs

After a successful Save assignment, a "Save a copy to my Designs" button appears. It writes the edited design into your own Designs, named with a " (Assignment Studio Build)" suffix. There is exactly one copy per assignment: the first save mints it, and later copy saves update that same design in place rather than minting a second one. The copy identity survives re-attaching a different design. Saving a copy re-syncs the assignment's source to that copy, and the diverged label clears once the snapshot matches the copy.

The student path diagram

Preview & publish carries a read-only "Student path" diagram, and a "View student path" link in Simulation design jumps to it. It is a derived projection of the current design, guided scaffold, declared runs, and analysis questions: it owns no editable state and never writes back, so it always reflects what you have staged. It shows, in order: before-the-run (setup) questions, then run lanes that each walk Set up then Run then Analyze (one lane for a normal assignment, or one lane per declared run), with each round's interaction pattern, moderator, and speaker-order badges. Questions anchored after a round or after a specific message appear at that spot, with message numbers shown starting at 1. A multi-run assignment rejoins at a Compare stage, then Submit. Whether students unlock the transcript step by step (gated) or see it all at once (open reveal) is shown, and a plain linear text list of the same path always ships beside the diagram for screen readers. In an incomplete design the diagram draws only the parts it knows and marks the broken step, never inventing placeholder rounds or agents.

Letting students see the path

A checkbox in Preview & publish, "Students can open the Assignment Studio for this assignment", controls the student-facing view. It is off by default, so students see no such button and reach nothing; instructors always keep full studio access. Turn it on and a student who opens the assignment studio gets only this read-only path view, never the authoring drawer, the prompt library, any write control, or the raw design. It is a separate student page, not the instructor Studio with parts hidden.

25. Tutorials

The Tutorials page — one of the three student front doors — holds short, self-paced lessons that teach the platform one step at a time. They're the gentlest place to start before diving into the full builder.

How they work

  • Deterministic, not an AI chat. A lesson mixes short things to read with "type the answer" checks. A wrong answer just shows a hint and lets you try again — no model is involved, so it's instant and consistent.
  • Sequential unlock. Finish one lesson to open the next (Mimo/Duolingo-style). Your progress is saved to your account when you're signed in (so it follows you across devices) and in this browser otherwise.
  • Self-paced and separate from grading. Tutorials aren't a classroom assignment — re-enter any lesson any time.

The four modules

Ordered from the basics up: Build (create an agent, write its prompt, add a round, edit round features, and advanced round controls), Run (run a one-round experiment), Analyze (export, annotate, and analyze the transcript), and Submit (turn in an assignment). All lessons are live across the four modules.

26. Tips & Best Practices

Start small, then scale up

Test with 2 agents, 1 round, short responses first. Once your design works, add more rounds, agents, and switch to dynamic length. This saves time and API costs during iteration.

Invest in personas

The single biggest factor in experiment quality is agent persona specificity. Use document grounding to create rich initial personas, then edit them to sharpen the perspective. A 5-sentence persona produces dramatically better results than a 1-sentence one.

Design round progression

Structure rounds to escalate: Round 1 for initial positions, Round 2 for challenges and rebuttals, Round 3 for synthesis and conclusions. This mirrors real discourse structure and produces more nuanced results than a single long round.

Vary temperatures across agents

A conservative agent (temp 0.3) paired with a creative one (temp 0.8) produces more interesting discourse than agents at uniform temperatures. The conservative agent grounds the conversation while the creative one introduces novel perspectives.

Save designs before launching

Always save your design before running an experiment. If the experiment produces unexpected results, you can reload and adjust without re-entering everything.

Use batch runs for research

If you're studying how agents interact under specific conditions, run the same design 3-5 times with short responses to observe variance before committing to a thorough single run. This helps you identify which experimental designs are worth investing in.

Mix interaction patterns across rounds

Start with Blind Parallel (to capture uninfluenced baseline positions), then switch to Free Discussion (to let agents interact and update their views), then finish with a Debate (to force a structured conclusion). This design reveals how discourse changes agents' positions.

27. Glossary

Agent

An AI participant in an experiment, defined by a persona prompt and backed by an LLM.

Batch Run

Running the same experiment configuration multiple times to observe variance.

Condition Prompt

The text that sets the social scenario for a round — the situation agents are placed in.

Confidence

In evaluation, indicates how a field value was determined: "parser" (regex extraction), "llm" (LLM inference), "both" (confirmed by both), "none" (not found), "not_executed" (on a branching run, the round this field points at did not run), or "recorded" (taken from the routing decision Delstorm recorded on a branching run, never read from the transcript).

Contents Sidebar

The docked table of contents on completed transcripts. Jump to any round, message, or analysis question; in a gated assignment, sections past the current question show as gray 🔒 rows.

Context Depth

Per round, how much of each earlier message agents see: Summary (first 300 characters) or Full (untruncated). Distinct from Context Window, which sets how many past rounds are visible at all.

Data Extraction

Structured fields defined in the builder and pulled out of every run automatically by the evaluator, then exportable as CSV. The design-time counterpart to the on-demand Evaluate page.

Design

A saved experiment configuration (agents, rounds, settings) that can be loaded and reused.

Document Depth

Controls how much of a referenced document agents see: Summary (extraction only), Relevant Excerpts (keyword-matched paragraphs), or Full Text (entire document).

Document Library

Persistent storage for uploaded documents. Documents are analyzed once and can be referenced from any experiment's rounds.

Evaluation

Post-hoc analysis of experiment transcripts using defined fields. Combines deterministic parsing with LLM inference.

Evaluation Field

A structured metric to extract from a transcript: number, text, scale, boolean, or choice.

Evaluation Template

A saved set of evaluation field definitions that can be reused across experiments.

First Speaker

An optional control (for the Sequential and Random speaking orders) that names which agent opens a round. Left blank, the round leads with the first agent in your list.

Hybrid Evaluator

The system that runs deterministic parsing first, then LLM analysis, merging results with confidence tracking.

Interaction Pattern

How agents communicate within a round: free discussion, debate, chain, blind parallel, or custom.

Moderator

A dedicated agent that guides a round — opening it, commenting between turns, and closing it — without participating in the debate. Can also decide when the round ends.

Persona

The system prompt that defines an agent's identity, beliefs, and communication style.

Provider

An LLM backend (e.g., Claude, Ollama, OpenAI) that powers agents. Configured in Settings.

Round

A phase of an experiment defined by a condition prompt, interaction pattern, and settings.

Self-Reflection

A private note an agent writes after a round. Never shown to other agents; an agent's own reflections carry into its later rounds.

Sequential

The default speaking order for Free Discussion and Custom rounds: agents speak one at a time in your agent-list order, each seeing the full conversation so far. Distinct from the Chain interaction pattern, which has its own fixed build-on-the-previous order.

Speaking Order

The round-card control that sets who speaks next in a Free Discussion or Custom round: Sequential (default), Round-robin (all at once), Random, Handoff, or Moderator.

Temperature

An LLM sampling parameter that controls response variability. Lower = more deterministic, higher = more creative.

Turn

One exchange within a round where all participating agents respond. Multiple turns create back-and-forth conversation.

28. Branching & Transitions

By default an experiment runs your rounds top to bottom, once each. Transitions let a round decide what happens next based on what actually happened in it, so one design can take different paths on different runs.

Setting up conditions

Every round card in the Experiment Builder has a Transitions section. Under Conditional transitions, add one condition per possible destination: pick the target round by name, and write a When text describing the circumstances that should send the experiment there ("the Trajectory Score is 3 or above"). Rounds are referenced by their Round name, so a branching design needs its target rounds named. Renaming a round updates every condition that points at it; deleting one asks first and clears the conditions that pointed at it.

Once a round has at least one condition, choose a transition moderator: the agent that reads the round and decides. It can be the round's own moderator, an agent that participates in other rounds, or a dedicated judge; its only extra duty is the decision, and it does not join the round's turn-taking. Decision guidance is optional overall instruction for that judgement ("the outcome depends on practices, not on who wins").

The condition texts and the decision guidance are never shown to the agents taking part. The judge's public announcement is, so it may paraphrase the reason it chose.

After this round

After this round sets what happens when no condition is met, and what happens on a round with no conditions at all. Continue to the next round is the default (and off the last round, the experiment simply ends). End the experiment stops the run there, which is what a branch tail usually wants: without it, the round after "The Iron Cage" in your list would run even though the experiment took the other path. Jump to a round goes somewhere specific every time.

Loops and the round ceiling

A condition may point backward, or at its own round, so a design can cycle. To keep an unattended run finite, every branching run has a ceiling on the total number of rounds it will execute. Max rounds executed in Experiment Info sets it; leave it blank for the automatic ceiling (three times the number of rounds you authored). The platform caps it at 150 whatever you enter. When a run stops because it hit the ceiling, the transcript says so: "Run ended at its round ceiling."

If a round cannot be reached from the first round by any path, the Studio's readiness review flags it as an advisory. It does not block saving or publishing: an unreachable round may be work in progress.

What students see

In an assignment, Show branch conditions to students controls whether the assignment path view spells out the When texts and the decision guidance. It is on by default, because handing students the conditions is usually part of the exercise. Turned off, students still see which rounds a round can lead to, labelled "decided during the run", and the condition texts never reach their browser at all.

Reading a branched transcript

Rounds appear in the order they ran, numbered 1, 2, 3 by execution. When the executed order differs from the order you authored, the heading also names the authored position, for example "Round 3: The Bust (design round 2)", and a round that ran more than once is labelled ", second pass (design round 2)". The judge's decision appears between rounds as its own note. Rounds that were not taken are simply absent.

Anchored analysis questions are authored against a design round, so a question attaches to the first time that round actually ran. If the round never ran, the question still appears, at the end of the transcript, marked "This question was set for a round that did not run in this experiment." A gated assignment treats such a question as passed rather than locking the rest of the transcript behind a round that cannot exist.

Extracted data works the same way: a field sourced from a design round reads every execution of that round, and a field pointing at a round that never ran comes back empty with the not_executed confidence badge. Instructors reviewing a submission can open Routing assessment beside the announcement to read the judge's full private reasoning; students never receive it. On your own personal runs, Show routing assessments on the results page fetches the same thing for you.

Ready