Inspiration
I was trying to make some videos for a training platform but I didn't wanted to be on camera or go through the whole recording process, I don't have skills to edit videos or things like that so my first approach was to create the videos with AI, I give it a test and found out that it was really expensive. So I started to look for another options I was decided to do the videos myself so I asked codex to create the visual support for the video, I gave him the context and after some iterations I got something good visually, but now I had to record the voice and my idea it was to just put the visual support, record my screen and add the voice, and so it hit me... what if codex does all of that ? creating audios is immensely cheaper compared to create videos. So I started to work in what is now lessoncraft, I made it independent so I can create videos for anything and on any format.
What it does
Lessoncraft turns an idea into a reviewed, reproducible and exportable browser-rendered video. It works on three levels:
- Course: defines the audience, narration language and visual identity.
- Lesson: it defines the video content.
- Engine: It turns the lesson into an exportable video by rendering on browser the visual support and recording it into an HD video.
How we built it
- Node.js production engine with a command-line workflow for validation, narration synthesis, captions, synchronized preview, approval, production, and verification.
- The visual support can use HTML, SVG, Canvas, WebGL, or another browser-compatible technology. The engine does not need to understand that implementation; it only asks the lesson to render a specific timestamp and frame deterministically.
- Narration is equally decoupled. I'm using OpenAI speech adapter but this can change as needed.
- Each lesson exposes a small browser contract:
js window.__LESSON_READY__ = true; window.__LESSON_PLAYER__.renderAt(timeMilliseconds, frameIndex);
Playwright asks the browser for every frame at an exact timestamp. FFmpeg encodes those frames once into a video-only master. The engine masters narration to a consistent WAV contract, creates WebVTT captions, and muxes audio and video.
Codex and GPT-5.6 helped reason through the architecture, challenge hidden coupling and implement the engine.
Challenges we ran into
- Keeping the engine neutral. It was easy for the first lesson's visual style to become an accidental global default so I made course isolation an explicit contract.
- Making browser visuals deterministic. Normal web animation depends on wall-clock time. Production instead renders every frame from a requested timestamp and frame index.
- Treating narration as replaceable without losing reproducibility.
- Keeping preview and production equivalent.
- Proving that final muxing did not damage media. We hash the encoded video and mastered audio streams before and after muxing and require bit-for-bit matches.
Accomplishments that we're proud of
- A working course-independent engine rather than a single hard-coded video template.
- A provider adapter boundary that can replace OpenAI without changing the rest of the narration pipeline.
- Deterministic browser rendering that remains independent from any lesson's visual technology.
- A Build Week demonstration video and demos created with Lessoncraft.
- Create a way to review, test, iterate and preview AI videos in a cheap easy way.
What we learned
AI is not idempotent, running the same prompt twice will create different results, while testing creating videos this was specially hard, if a section of the video was wrong asking for a fix will probably end up in a whole new video. So we need to find a deterministic way to work with AI and for this the best is always code, because code will always produce the same result.
Even if we create a video for an english audience switching to spanish is a really hard process because each language has its own time, what in english can take you 5 seconds to say in spanish maybe is 7s, this change starts to add while creating a video so you need to have a way to handle this type of issues. on Lessoncraft we have the flexibility to create the same videos but with maybe a little longer efects to match the voice rhythm.
What's next for Lessoncraft
Video is the working proof today. Next, we want to add more narration providers and let the same contract-first foundation produce audio, reports, blogs to better support the education goal of each course and lesson.
The larger educational opportunity is controlled experimentation. One concept could be rendered as several teaching approaches—V1, V2, and V3—reviewed with different audiences, and compared using appropriate learning evidence. The version that teaches most effectively could then be promoted through the same governed production pipeline.
Built With
- chromium
- codex
- css3
- ffmpeg
- ffprobe
- gpt-5.6
- html5
- javascript
- node.js
- openai
- playwright
- webvtt
Log in or sign up for Devpost to join the conversation.