Concepts
In the workspace, a review is a run of feedback from AI reviewers. The API calls this a debate. A saved panel is an Assembly, and the chairman is the model that writes the final conclusion. These technical names appear in the editor, transcript, and API.
This is the mental model behind the platform. Read this once and the rest of the docs will make more sense.
The vocabulary
Panel. The set of models on a debate. You define it in an assembly and the platform freezes it at debate start. A 3-model Refinement assembly always runs as a 3-model Refinement debate.
Model. A specific LLM, identified by its model ID, for example openai/gpt-5.5. The same orchestrator invokes all models in a panel. They see the same prompt and, after R1, the same history.
Slot. A position in the panel. In Refinement, slot 0 speaks first in round 1, slot 1 speaks second, etc. In round 2, the order rotates. The model from slot 0 now speaks in slot 1's position, and so on. The rotation prevents the first-listed model from anchoring the rest.
Round. A single pass through every model. A debate has 1..N rounds, where N is the assembly's maxRounds. Convergence ends the debate early.
Turn. A single model's response in a single round. Each turn is JSON: { disagreements, improvements, refinedAnswer, citedSources? }. The disagreements and improvements arrays power the persuasion graph.
Chairman. A separate model, by default deepseek/deepseek-v4-pro, that reads the full transcript and writes the final finalAnswer. The chairman is not part of the panel. It never speaks during rounds. It only synthesizes at the end.
Consensus score (panelScore). A 0 to 100 number representing the panel's pairwise agreement after a round. An independent evaluator computes it as the mean of all N choose 2 pairwise scores. See consensus scoring.
Agreement limit. The agreementLimit field on the assembly. When panelScore >= agreementLimit, the debate ends early. It defaults to 75.
Conviction curve. The panel's panelScore over rounds. The share page and the transcript plot it as a line chart.
Dissent preserved. The strongest counter-argument that survived the debate, with model attribution. The platform surfaces it alongside the verdict so you can see what the panel didn't converge on.
Persuasion graph. The per-round delta tracking. It shows how much each model moved between rounds and which prior-round model most influenced that movement. See persuasion graph.
The lifecycle
A typical debate:
- Assembly defined. You create the panel once via
POST /v1/assemblies. The platform freezes it at creation. - Debate started. You call
POST /v1/debateswithprompt+assemblyId. The API returns 202 plus a session id. The orchestrator pre-creates rounds 1..N. - Round 1. Every model speaks in slot order. The orchestrator collects their turns.
- End-of-round consensus. An independent evaluator scores every pair of turns. The orchestrator uses the mean as the round's
panelScore.converged = panelScore >= agreementLimit. - Round 2..N. If not converged, models speak again, this time seeing the R1 history. The order rotates so the first-listed model isn't always the first to see the history.
- Convergence or max-rounds. Convergence or hitting max-rounds ends the round loop.
- Chairman synthesis. The chairman model reads the full transcript, including all consensus scores, and writes the verdict. The platform also scores the chairman on per-claim confidence if the chairman model supports that.
- Final session. The orchestrator sets
status: COMPLETED, populatesfinalAnswer, and records per-turn costs.
If something goes wrong at any step, such as model failure, budget exhaustion, or cancellation, the session goes to status: FAILED. The platform attaches the failure reason.
The relationship between assembly and debate
This is the most important concept to internalize:
ASSEMBLY (the panel definition, frozen) DEBATE (a single run)
name = "Code Review Panel" prompt = "Refactor this function"
models = [gpt-5.5, opus-4.8, gemini-3.1-pro] assemblyId = (the one above)
maxRounds = 3 createdAt = ...
agreementLimit = 80 rounds[] = ...
createdAt = ... finalAnswer = ...
isPublic = false totalCost = $0.42
isPublic = true
shareSlug = "..."
The same assembly can run thousands of debates. Each debate is independent. They share the panel config but not the runtime state. This is the whole point of the two-step API. Define once, run many.
The formats are orthogonal to the lifecycle
All 7 formats (overview) use the same lifecycle above. The only things that change are:
- The per-turn system prompt. DA is adversarial, while Refinement is collaborative.
- The role/side assignment in
formatMetafor Oxford Union, Socratic, and Red Team - Whether R1 is silent, as in Delphi
- How many models are required. Socratic needs 2, Red Team needs 3, others are flexible.
The orchestrator, the consensus evaluator, the chairman, and the output shape are the same.
Deeper dives
- Consensus scoring, how the orchestrator computes
panelScore - The chairman, how the chairman writes the verdict
- Persuasion graph, how the platform tracks per-round deltas
