A lesson you can act on, not a video you watch
1The agent writes it in our own TypeScript DSL (LessonEngine)
explorable({
id: "aim",
viz: { name: "frog" },
controls: [{ key: "angle", kind: "slider",
min: 5, max: 85 }],
goal: { key: "angle", equals: 45 }, 1
ask: true, next: "twins", 2
}),
mcq({
id: "twins",
prompt: md("30° or 60°: which lands farther?"),
choices: [
{ text: "60°",
misconception: "steeper-is-farther" },
{ text: "They tie", correct: true },
],
onWrong: "compare", next: "why", 3
}),
// the re-teach: show both hops, then ask again
explain({
id: "compare",
text: md(
"$30° + 60° = 90°$, so they share a landing."),
viz: { name: "frog", props: { angle: 30, ghost: 60 } },
next: "twins",
}),
2LessonEngine runs it as an interactive lesson
3The lesson adapts to what each learner does
A TypeScript DSL and runtime. A lesson is a state machine of typed beats; the engine supplies narration, grading, branching, replay and the tutor.
up to 2× fewer output tokens than writing the app directly See the DSL above ↑ LessonAgentA multi-agent pipeline: a planner fixes the structure, figure and act agents work in parallel, deterministic checks gate every step, and a review agent watches the result.
91.0% automatic win rate against 6 prior systems and a coding agent See the pipeline → LessonBench250 interactive-figure tasks and 20 full lessons across physics, chemistry, math and computer science, covering 11 interaction types, judged by humans and a VLM.
2,050 blind human figure comparisons, 120 lessons and videos rated Results →Generated lessons
The 20 lesson-level benchmark topics. Pick one to play it here, or open it full screen. Each lesson was generated from the textbook figure shown beside it and a written brief.
Select a lesson
Side-by-side with prior systems
Every system received the same brief and textbook figure. The others produce a fixed video, slide deck or page; LessonAgent produces a lesson the learner acts on.
How LessonAgent writes a lesson
Structure first, content in parallel, and checks at every step.
- Plan. A planner fixes the lesson's acts, beats, transitions and remediation paths before any content is written.
- Build in parallel. A Page or Figure Agent builds the interactive figure while writers draft each act. They may change content, never structure.
- Check and repair. Deterministic checks catch broken mechanics, structure and pacing; a failing act is regenerated from its failure signal alone.
- Polish. An editor, a tutor stage and a review agent that watches the rendered lesson fix what only shows up once it is assembled.
Interactive figures
The standalone interactive figure behind each lesson, with its raw controls exposed. Hover a card to see it move; click to try it yourself.
Storyboards
Four states of the same figure, as a learner moves through each lesson: from the opening question to the finished construction.
Results
- ≥ 97%head-to-head wins against every video system: NotebookLM, Code2Video, Manimator, PPTAgent and Paper2Video
- 73%head-to-head wins against EduVisAgent, the strongest prior system
- 6 of 6human-rated dimensions where LessonAgent leads the strongest prior system
- 72.1%figure-level win rate against prior figure generators, first in every domain
Human evaluation
Two blind studies. In the lesson study, 10 participants worked through all four versions of a topic (30 answer sheets over all 20 topics) without knowing which system made which. In the figure study, 12 participants made 2,050 side-by-side choices.
Automatic evaluation
A VLM judge (Gemini 3.1 Pro) compares outputs for the same prompt blind, with left and right counterbalanced. Win rate is against an average competitor; ± is bootstrap standard error over 10,000 resamples.