Skip to Content
Scenarios

Scenarios

Scenarios are the training situations that learners encounter — they combine personas, documents, objectives, and context into a single interactive exercise.

What is a Scenario?

A scenario defines a specific training situation. It pairs one or more Personas with contextual information — reference documents, problem statements, learning objectives, questions, and parameter values — to create a focused interaction that tests a particular skill.

A scenario contains:

  • Name — a descriptive title (e.g., “Academic Integrity Training”)
  • Description — what the scenario covers and why it matters
  • Problem Statement — the situation the learner faces (e.g., “A student was caught cheating on the CS-251 midterm exam”)
  • Personas — the AI characters the learner will interact with (linked via junction table)
  • Documents — reference materials available during the simulation (e.g., Academic Integrity Policy, FERPA Policy)
  • Objectives — specific learning goals the scenario is designed to address
  • Parameters — runtime values like class, location, intensity that fill persona {{placeholders}}
  • Parameter Fields — the parameter definitions available for this scenario
  • Questions & Options — structured prompts and multiple-choice options (for video-based or quiz-style scenarios)
  • Images & Videos — media assets used as scenario context
  • Departments — organizational groupings for access control and filtering
  • Flags — boolean configuration settings

Scenarios are added to Simulations, which are then assigned to Cohorts for learner access.

Scenarios list showing scenario cards with names, associated personas, and document counts

How Scenarios Connect to the Workflow

Scenarios are step 2 in the Glow content pipeline:

StepResourceDescription
1. Create PersonasPersonasDefine AI characters with instructions and parameter fields
2. Assign to ScenariosScenariosBuild training situations and attach personas, documents, and objectives
3. Add Scenarios to SimulationsSimulationsBundle scenarios into a complete training session with rubrics and time limits
4. Add Simulations to CohortsCohortsAssign simulations to groups of learners
5. Run AttemptsAttemptsLearners start attempts and interact with AI in Chats

Create a scenario

Via the CLI

Create an “Academic Integrity Training” scenario:

Calls below use $GLOW_INSTANCE_URL + $GLOW_TOKEN — see Authentication to export them once.

glow scenarios create --body '{ "scenarios": [{ "name": "Academic Integrity Training", "description": "Practice handling a student caught cheating on an exam", "problem_statement": "A student in CS-251 was caught cheating on the midterm exam. You are meeting with the student during office hours to discuss the incident.", "objectives": [ "Apply the academic integrity policy correctly", "Maintain a professional and empathetic tone", "Document the conversation outcome" ], "persona_ids": ["confused-student-uuid"], "document_ids": ["academic-integrity-policy-uuid"] }] }'

Via the API

curl -X POST $GLOW_INSTANCE_URL/scenario/create \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "scenarios": [{ "name": "Academic Integrity Training", "description": "Practice handling a student caught cheating on an exam", "problem_statement": "A student in CS-251 was caught cheating on the midterm exam.", "objectives": [ "Apply the academic integrity policy correctly", "Maintain a professional and empathetic tone" ], "persona_ids": ["confused-student-uuid"], "document_ids": ["academic-integrity-policy-uuid"] }] }'

Scenario creation form showing name, problem statement, persona selection, and objectives


Attaching personas, documents, and objectives

Scenario detail page showing problem statement, linked personas, documents, and objectives

Personas are linked to scenarios through a junction relationship. A single scenario can have multiple personas (e.g., an “Upset Student” and a “Professor” in the same training). The scenario determines which persona(s) the learner interacts with.

Add personas when creating or updating a scenario:

glow scenarios draft --body '{ "input_draft_id": "scenario-draft-uuid", "persona_ids": ["confused-student-uuid", "aggressive-student-uuid"] }'

Via API:

curl -X PATCH $GLOW_INSTANCE_URL/scenario/draft \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "input_draft_id": "scenario-draft-uuid", "persona_ids": ["confused-student-uuid", "aggressive-student-uuid"] }'

Example: FERPA Training scenario

glow scenarios create --body '{ "scenarios": [{ "name": "FERPA Training", "description": "Practice responding to a FERPA violation where a grade sheet was left visible", "problem_statement": "A grade sheet with student names and scores was left visible on a desk in a shared office. Another student noticed it and reported the issue.", "objectives": [ "Identify the FERPA violation", "Explain the correct procedure for handling grade information", "Reassure the reporting student" ], "persona_ids": ["concerned-student-uuid"], "document_ids": ["ferpa-policy-uuid"] }] }'

Scenario document attachment showing uploaded documents with preview

Working with Parameters

Scenarios supply the parameter values that fill persona {{placeholders}}. If a persona’s instructions reference {{class}} and {{location}}, the scenario provides the actual values (e.g., CS-251, Lawson).

When editing a scenario draft, associate parameter fields and their values:

glow scenarios draft --body '{ "input_draft_id": "scenario-draft-uuid", "parameter_field_ids": ["class-param-uuid", "location-param-uuid", "intensity-param-uuid"] }'

This makes the scenario supply concrete values for each parameter when the simulation runs, allowing the same persona to behave differently across scenarios.


Generate scenarios from a prompt

The scenario artifact has a generate sub-operation that produces draft scenarios from a natural-language prompt — useful for bulk authoring or templating off an existing situation.

curl -X POST $GLOW_INSTANCE_URL/scenario/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "prompt": "Three office-hours scenarios with the same Confused persona, escalating intensity 3 → 6 → 9", "persona_ids": ["confused-student-uuid"] }'

The response streams generated scenario drafts that you can then edit and publish the same way as hand-authored ones.

Scenario Types in Practice

The university seed data illustrates two common patterns:

Structured training scenarios focus on a specific policy or skill:

  • Academic Integrity Training — student caught cheating on CS-251 midterm
  • FERPA Training — grade sheet left visible in shared office
  • Upset Student Training — student upset about a grade during office hours

Open practice scenarios provide general practice with a particular personality type:

  • Confused Practice — practice with a student who asks many questions
  • Happy Practice — practice with a positive, encouraging student
  • Passive Practice — practice with a disengaged, minimal-response student
  • Aggressive Practice — practice with a confrontational student
  • General Practice — open-ended practice

Working with Drafts

Scenarios use the same draft system as other Glow resources. Edit through the draft endpoint and publish when ready. The draft endpoint enforces optimistic concurrency via expected_version.

# Create or update a draft glow scenarios draft --body '{ "name": "Updated FERPA Training", "description": "Updated description with new policy references", "problem_statement": "A grade sheet was left visible...", "objectives": ["Identify the violation", "Apply correct procedure"], "persona_ids": ["concerned-student-uuid"], "document_ids": ["ferpa-policy-uuid"] }'
# Via API curl -X PATCH $GLOW_INSTANCE_URL/scenario/draft \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN" \ -d '{ "name": "Updated FERPA Training", "description": "Updated description with new policy references" }'

List your drafts:

# CLI glow scenarios list # API curl -X POST $GLOW_INSTANCE_URL/scenario/drafts \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $GLOW_TOKEN"

Search and filter

Scenario search supports full-text plus facet filters across persona, document, parameter, and department.

glow scenarios search --body '{"persona_ids": ["confused-student-uuid"]}'
curl -X POST $GLOW_INSTANCE_URL/scenario/search \ -H "Authorization: Bearer $GLOW_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "search": "FERPA", "page_size": 25 }'

Bulk operations

Bulk delete and update follow the canonical all-matching shape — pass either explicit IDs, or all: true with flat filter fields + optional excluded_ids + a patch for updates.

# Delete every scenario referencing a deprecated persona, except the canonical examples glow scenarios delete --body '{ "all": true, "persona_ids": ["deprecated-persona-uuid"], "excluded_ids": ["scenario-keep-1", "scenario-keep-2"] }' # Bulk update via patch glow scenarios update --body '{ "all": true, "filter_department_ids": ["dept-archive"], "patch": { "archived": true } }'

See the Personas guide for the canonical write-up of this pattern.

Common Operations

TaskCLIAPI
List all scenariosglow scenarios searchPOST /scenario/search
Get one scenarioglow scenarios get --body '{"scenario_id": "..."}'POST /scenario/get
Create scenariosglow scenarios create --body '{"scenarios": [...]}'POST /scenario/create
Update scenariosglow scenarios update --body '{"scenarios": [...]}'POST /scenario/update
Duplicate a scenarioPOST /scenario/duplicate
Delete scenariosglow scenarios delete --body '{"scenario_ids": [...]}'POST /scenario/delete
Bulk delete (filter)glow scenarios delete --body '{"all": true, "filter_…": "…"}'POST /scenario/delete
Generate scenariosPOST /scenario/generate
Save a draftglow scenarios draft --body '{...}'PATCH /scenario/draft
List draftsglow scenarios listPOST /scenario/drafts
Export to CSVglow scenarios exportPOST /scenario/export
Import from CSVPOST /scenario/csv
Upload mediaglow scenarios image uploadPOST /scenario/upload
Last updated on