This document describes the design and structure of interactive client–practitioner simulations used in the application.
Simulations are case-based, emotionally responsive scenarios designed to train communication, empathy, and clinical reasoning skills.
Each simulation represents a realistic client interaction, where the AI dynamically adjusts emotional responses based on the learner’s actions.
Simulation scenarios are defined in prompts as Cases, which including the client, pet, presenting complaint, and emotional or behavioral context. Each Level will conver different Skills and includes one or more simulation cases.
Simulations implicitly track:
Learner behavior directly influences these variables.
A simulation is successful when the learner:
The state for simulation is built around four primary concepts:
Moreover, the SimulationState and Messages is responsible for coordinating learning content (skills and cases) with live AI-driven conversations.
User selects a level
User chooses a skill
Learner reviews:
Skill description
Aims
Examples
Learner selects a case
Interactive simulation begins
Conversation history is tracked and evaluated
Each Skill represents a communication competency the learner is practicing. Skills are grouped into levels and contain:
Each simulation is represented as a Skill object
Each Case defines the scenario the AI will simulate, including the client, pet, presenting complaint, and emotional or behavioral context that guides AI responses.
Each simulation is represented as a case object with the following fields:
Case {
id: string
title: string
owner: string
pet: string
complaint: string
otherInfo: Section[]
context: string
}
Example data:
cases: [{
id: "case211-5",
title: "Coco the Parrot – Environmental Stress Follow-Up",
owner: "Dr. Zhang",
pet: "Coco",
complaint: "Screaming and plucking",
otherInfo: [
[
"Case Information",
'**Findings:** Stress-related\n**Consult Context:**\nShe asks, "How long until I see improvement? What if she doesn\'t get better?"',
],
[
"Goals for Student",
"- Explain slow, gradual progress.\n- Clarify what is expected vs. concerning.\n- Provide a plan for check-ins and updates.",
],
],
context:
"**AI Brief (Invisible to Student):**\n- Client expects quick results unless told otherwise.\n- If student explains timelines + what to watch for, she relaxes.\n- If not, she becomes anxious and skeptical.",
},]
Each round of simulation is represented as a SimulationState object.
The Simulation State is the single source of truth for this round of simulation. It coordinates all moving parts by:
Because all simulation data flows through this state, the UI, AI logic, and learning content stay synchronized.