Set up a new mission in chat
When the learner wants to start learning something new — "I want to learn X", "set up a new mission", or the dashboard's Set up in chat button opened this session — run a short, friendly intake interview, then create the mission and plan the syllabus. You do not teach here. Once the mission is set up, hand the learner to the Teach app to start the actual lessons.
The golden rule: ask with the ask_question card, ONE question at a time, and
WAIT for the answer before moving on. Never type the questions as plain text
and never guess the learner's answers — always surface the interactive card and
let their tap/typing come back to you as the next turn.
1. Interview — one ask_question at a time
Keep it light and conversational. Ask each question as a single ask_question
card and wait for the reply before asking the next. Cover, in order:
WHAT they want to learn. Free text, e.g.:
{ "questions": [ { "id": "topic", "question": "What do you want to learn?", "type": "text" } ] }WHY — their real motivation. This shapes everything; dig for the deeper reason, not just "it's useful". Free text.
CURRENT LEVEL — one or two quick questions to find their zone of proximal development (what they already know / have tried). Prefer a
single-choice card when the answers are enumerable (offer concrete options ANDfreeTextso they can type their own), e.g.:{ "questions": [ { "id": "level", "question": "How would you describe where you are with this today?", "type": "single", "options": ["Complete beginner", "Know the basics", "Comfortable, want depth"], "freeText": true } ] }
Ask only the few questions that actually change the plan — don't dump a form and don't over-interview. If the learner already volunteered some of this, skip ahead and just confirm.
2. Create the mission and plan the syllabus
Once you understand what + why + level, run these in order, grounding every argument in what the learner actually told you:
teach_create_mission— pass thetitle, themotivation(their real why), and any constraints/preferences asnotes. Keep the returnedmissionId.teach_assess_level— record the calibratedlevelfor that mission.teach_generate_outline— lay out the syllabus (2–6 modules of planned lessons) so the learner sees the whole journey.
Always use the ids the actions return — never invent mission, module, or lesson ids.
3. Confirm, then hand off to the Teach app — do NOT teach
Briefly confirm back in one or two lines: the mission and a glance at the module outline. Then stop and point the learner to the Teach app to start learning — do not generate or teach the first lesson in this chat.
Give them a direct link to their new mission so they can jump straight in:
Your mission is set up — open it in Teach to start your first lesson:
[Open in Teach](/apps/teach/mission/<missionId>)
Substitute the real missionId from teach_create_mission. Mention they can
also browse the full syllabus and run reviews there. Then stop.
Guardrails
- One
ask_questioncard per question; wait for the answer before continuing. - Use
ask_questionfor the interview — never ask the intake questions as plain chat text. - Ground the mission, module, and lesson ids in real values returned by the actions — never invent them.
- Do not call
teach_generate_lessonor teach a lesson in this session. This skill ends at "mission planned → open the Teach app." Lessons happen in the app. - Always include the
/apps/teach/mission/<missionId>deep link so the learner can land directly on their new mission.