Inspiration

With today's AI, anyone can generate a single great-looking video clip. But to teach something, you don't need one clip — you need a hundred that match. The moment you need shot 2 to feel like it belongs with shot 1 — same presenter, same room, same story — generative video falls apart. Models are stateless: every clip is a fresh roll of the dice, so faces drift, locations change, and continuity dies. LessonForge exists to solve that.

What it does

LessonForge is an AI showrunner for education. You give it one brief — a topic, an audience, a learning objective — and it produces a complete, multi-shot video lesson with a consistent presenter, consistent locations, and a coherent narrative from start to finish.

  • One brief in. Pick a presenter and a lesson topic.
  • An AI planner writes the shot plan. Qwen breaks the lesson into a sequence of shots, each with its own scene and narration.
  • Preview before you spend. Still images are generated first and put up for human approval — you only pay for video on shots you've signed off.
  • The same face, every shot. An identity-lock step keeps the presenter looking like themselves across the whole lesson.
  • It speaks for itself. Wan renders each shot with native, in-video narration.
  • Export & teach. Download the finished lesson and a printable handout.

How we built it

  • Frontend: React + Vite + Tailwind, deployed on Cloudflare Pages.
  • Backend: a lightweight Node service proxying Alibaba Cloud's DashScope for chat (Qwen) and image/video generation (Wan), keeping API keys server-side.
  • Pipeline: brief → Qwen (qwen-plus) shot plan → still preview (human approval gate) → identity-locked stills (qwen-image / qwen-image-edit) → Wan video render with native narration → export.
  • The Lesson Action Framework (LAF): an agentic continuity layer over stateless video models that locks presenter identity, reuses locations across shots, and manages prompt engineering so every shot stays on-model and on-story.
  • Cost discipline: a model allow-list guards spend, defaulting to free-tier preview models for iteration and reserving paid models for final export.
  • Everything runs against DashScope (https://dashscope-intl.aliyuncs.com/compatible-mode/v1).

Challenges we ran into

  • Statelessness / continuity — the whole reason LAF exists. Keeping a presenter the same person across eight shots meant building a reference-portrait identity lock instead of re-describing faces in text.
  • On-frame text — video models render garbled captions if narration is quoted in the prompt, so we describe narration as heard audio and keep prompt expansion off.
  • Cost control — video generation is the expensive step, so we gate it behind a still-preview approval and an allow-list of affordable models.
  • Accent — "I" ended up with a German accent but leaned into it anyway !

Accomplishments that we're proud of

  • A working, end-to-end pipeline that turns a single brief into a coherent multi-shot lesson — planned, previewed, approved, and rendered.
  • Solving presenter identity-lock so the same face carries across every shot without manual re-work.
  • A human-in-the-loop approval gate that keeps quality high and render costs low.
  • Running the whole thing on Qwen + Wan via Alibaba Cloud.

What we learned

Continuity, not raw generation quality, is the real bottleneck for AI-authored video. The leverage is in an agentic layer that manages state around stateless models — that's what turns disconnected clips into a real lesson.

What's next for LessonForge

More presenters and locations, longer lessons, and a template library so educators can go from idea to finished lesson in minutes. I think also that students could generate their wn content with more focus on the things they don't understand

Built With

Share this project:

Updates