The problem: people stop studying
Adults preparing for professional licenses and certifications usually study alone, around full-time work, and many drop off long before the exam. For most of them, the material isn’t the hardest part. Staying with it is.
This project is about retention. The companion is a study partner with its own character, who studies the same material alongside the learner and reacts to what they say. The goal is to make studying feel less solitary, so learners keep coming back.
Teaching the companion, to learn more
Inside each session, the learner teaches the companion. This is a feature for learning, not the reason the companion exists: people tend to learn material more deeply when they explain it to someone else, an effect known as the protégé effect. Drawing on my research on teachable agents, the companion states what confuses it, restates ideas in new examples, and occasionally makes a believable mistake for the learner to catch.
Building it
The companion is a 3D anime-style character that runs in the browser. Its facial expressions and gestures are driven by the dialogue, so it reacts to what the learner says rather than looping idle animations.
- React
- Three.js
- @pixiv/three-vrm (VRM 1.0)
- LLM dialogue
- Inverse kinematics
Gestures that never pass through the body
Expressive gestures create a hard problem: a hand raised to the chin or crossed over the chest can clip through the character’s own body, which instantly breaks the illusion. I built an inverse-kinematics layer that adjusts each gesture in real time to avoid self-collision, with strict guarantees rather than best-effort fixes, while keeping the animation smooth enough for a browser on an ordinary laptop.