Kwi: the B2C tutor persona¶
Kwi is a small saffron spark with eyes. It is the face of the AI tutor for B2C learners: it runs the greeting on /learn, fronts the chat empty state, recommends one next action, and celebrates completions. One identity, three renderings by class band, so a class 2 kid and a class 11 JEE aspirant meet the same character at different volumes.
Why this exists¶
Young learners (classes 1 to 10) finish the onboarding wizard and land on a dashboard that assumes they know what to do. The chat is a blank canvas. We collect class level, subjects, exam intent, and goal during onboarding, then use none of it outside the JEE/NEET Study Plan (classes 11 to 12 only). Classes 1 to 10 get generic tiles and silence.
- Who asked: self-initiated hypothesis (Bhanu, 2026-07-16), triggered by comparing against persona-run onboarding products (Jack & Jill runs its entire job-search onboarding as a conversation with a named agent "Jack").
- User pain: a class 4 learner lands on
/learn, sees four intent tiles and a subject scroller, and has no idea what to tap. Nothing on the screen knows their grade or greets them as a person. Not yet confirmed with a named real user; kid tests planned. - Cost of not doing: grades 1 to 10 signups churn silently. The only cohort with a guided path today is 11 to 12 JEE/NEET.
- Validated or guess: guess, flagged. Research backs the pattern direction (mascot-guided first runs are the dominant pattern in kids' learning products: Duolingo's Duo, Sesame Street narration, Khanmigo's structured activity modes instead of free chat). Category demand for prebuilt content is unvalidated; parent survey planned before content packs ship.
- How we know it worked: new grade 1 to 10 learners complete at least one guided activity in their first session. Sean Ellis test: remove Kwi a week after shipping and kids ask where it went, by name.
The mechanic: one persona, three renderings¶
NN/g research: kids reject content even one grade off their level, and tweens reject anything babyish. So Kwi does not get younger or older art styles per cohort. It gets quieter.
| Class band | Rendering | Behavior |
|---|---|---|
| 1 to 5 | Full character | Large, animated, waves, celebrates loudly |
| 6 to 8 | Avatar chip | Head only, lives in greetings and streaks |
| 9 to 12 | Glyph mark | Quiet spark, study-partner tone, no cartoon body |
Class level comes from profile.preferences['onboarding'].class_level, captured in the existing onboarding wizard. Band mapping is a const lookup, not conditionals.
Where Kwi shows up¶
Four moments, all existing surfaces:
/learngreeting (AI Tutor Home renders via B2CemptyStateSlotinChatEngine): the time-of-day greeting becomes Kwi's greeting, plus one recommended action derived from class level, subjects, and goal. The four intent tiles stay.- Chat empty state (
ChatEmptyStategreetingSlot): Kwi fronts the suggestions instead of a generic prompt. - Completion celebration: finishing a practice session or guided activity gets a Kwi celebration moment (scaled by class band).
- Onboarding dialogue (phase 2): the existing 5-step wizard reskins as a conversation with Kwi. Same data contract, same steps, chat-bubble framing.
Voice is grade-banded through i18n: class 3 gets "Hi Aarav! I found a number game for you. It takes 3 minutes. Want to play?", class 9 gets "Back to thermodynamics? You stopped at heat transfer yesterday."
Non-goals¶
- No new mascot art pipeline. Kwi is a flat SVG component in
@kwilo/ui, animated with CSS. No Lottie, no sprite sheets, until kid tests justify it. - No B2B surfaces. Institutional students and trainers never see Kwi in this phase.
- No ML recommendations. The "one next action" is a rule-based const map. Personalization depth comes later.
- No voice/audio narration in phase 1.
- No content packs yet. That is a separate feature gated on parent-survey validation.
Rejected alternatives¶
- Peacock mascot (Mor): stronger Indian identity and a tail-feather collection mechanic, but higher art cost and needs a separate glyph mode for teens. Owner picked the spark for cost and age-uniformity. The feather-unlock idea can return with content packs.
- Human mentor character (Tara/didi): most relatable for 9 to 12, but a human face raises empathy expectations the model can't always meet, illustration style dates fast, and it needs an expression library. Its conversational-onboarding pattern is adopted anyway.
- Separate mascots per age band: triple the asset cost and breaks identity continuity as a child grows.
Metrics¶
- North star: % of new grade 1 to 10 B2C learners who complete at least one guided activity in their first session.
- Guardrail: D7 return rate and chat depth per session must not drop.
- Instrumented via
@kwilo/analytics:kwi_greeting_shown,kwi_action_clicked,kwi_celebration_shown.
Rollout¶
- Phase 1: Kwi avatar (3 renderings) +
/learngreeting + chat empty state + celebration. Frontend only, no backend change. - Phase 2 (shipped): onboarding as a Kwi conversation. Kwi asks each step as a chat bubble, answers stack as a transcript, back truncates, wider card with contained content. Frontend only; the save contract is unchanged.
- Phase 3 (shipped): grade-aware chat. The onboarding class level seeds the chat form so suggestions and prompts carry grade_level. Onboarding preferences are already editable after signup: Settings has a Learning preferences section covering stage, class, subjects, exam, and goal through the same save endpoint. Deferred from this phase: larger touch targets for the 1 to 5 band (needs an IntentTile lg variant and kid-test evidence).
- Phase 4 (gated): Quick-Start content packs for grades 1 to 10, after parent survey and kid tests.
- Phases 5+: the learner model behind Kwi. Staged separately in B2C adaptive learning; stage 1 (signal capture) starts right after Phase 1 ships.