Skip to content

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:

  1. /learn greeting (AI Tutor Home renders via B2C emptyStateSlot in ChatEngine): 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.
  2. Chat empty state (ChatEmptyState greetingSlot): Kwi fronts the suggestions instead of a generic prompt.
  3. Completion celebration: finishing a practice session or guided activity gets a Kwi celebration moment (scaled by class band).
  4. 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) + /learn greeting + 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.