Authoring
Scenario authoring
Define assistant behavior through scenario JSON, including personas, tool schemas, goals, and stopping rules.
Core scenario fields
A scenario definition describes domain behavior in data. The important fields are:
assistantRolebusinesspersonaSourcetoolInventoryconversationGoalsstoppingRules- optional
systemPrompt - optional
metadata
The bundled examples in examples/receptionist/scenario.json and examples/retail-support/scenario.json are the best starting points.
Persona source
personaSource controls how user personas are supplied:
- deterministic bundled personas for offline generation
- requested persona counts
- optional generator prompts for model-backed persona generation
- source metadata for downstream context
Use generate-personas when you want a standalone persona file, or let simulate-dataset derive personas as part of dataset creation.
Tool inventory
toolInventory should remain provider-neutral. Define tool schemas in terms of names, descriptions, and JSON-schema-like parameters, then let the export and provider layers map them to the necessary wire format.
That keeps:
- scenario definitions reusable across providers
- validation focused on a single canonical internal shape
- tool-calling exports stable for OpenAI JSONL output
Goals and stopping rules
conversationGoals describe what the assistant and persona are trying to accomplish. stoppingRules constrain turn limits, exit conditions, and escalation behavior.
Those fields matter because they shape:
- the number of turns produced
- whether tool use is expected
- whether a conversation should stop at a tool decision or continue to a final answer
Authoring guidelines
- keep business context concrete enough to support realistic user requests
- keep tool names stable and descriptive
- keep parameter schemas narrow enough that validation can catch malformed arguments
- avoid encoding provider-specific behavior directly in the scenario
- keep secrets, API keys, and environment-specific runtime config out of scenario JSON
For advanced provider-backed runs, use Provider config instead of extending the scenario shape with runtime secrets or model selections.