Inspiration
We’ve all been there, staring blankly at a math concept that just won’t click. Then you watch a 3Blue1Brown video, and suddenly the idea makes sense. His visuals don’t just teach math, they make it come alive. After experimenting with Manim, his animation library, we realized how powerful code-driven visuals can be in transforming how people learn.
But not every student learns the same way. Some think best in motion, others through sound or text, yet most lessons treat everyone the same. Our vision is to change that with personalized, AI-driven learning videos that adapt to each student’s style. By combining Manim-style animations, narrated explanations, and dynamic text, we aim to make complex ideas beautifully intuitive for everyone.
What it does
A student or teacher craving curated lessons enters a math related question or topic. Our AI animates a video and writes a detailed narration script. The user is presented with a math lesson with Khan Academy level quality. Additionally, there are dynamic quiz questions to test understanding on the requested topic, and allow for further exploration into the subject. User's can tag their videos and add them to a community page, so students can find relevant lessons on any topic they need.
How we built it
The user's initial query with a math topic is sent to the Gemini which generates Manim code, quiz questions, and a narration script. The narration script is sent to ElevenLabs to create audio. These separate generation tasks are multi-threaded for efficiency. The Manim code is rendered into animations using Ffmpeg. Once each task has finished, we splice together audio and video for the final lesson.
Challenges we ran into
Generating quiz questions, then a script, then audio, then rendering a video in sequence took a lot of time. Our solution was multithreading separate processes to make the entire process ~20 seconds faster per query. By default the LLM would often create videos with errors, or the video would be messy. Our solution was fine-tuning the system prompts, and giving the LLM numerous examples of code from the Manim library to improve the output. Synching audio from the narration and the animation video was difficult. Our solution was to use timestamps from the mp3 file to help make the audio synch with the video down to one-hundredth of a second.
Accomplishments that we're proud of
We optimized the efficiency of the video generation process by 2x per user query. We synchronized video and audio nearly perfectly. The quality of our animations were vastly improved over Gemini's default capabilities.
What we learned
We learned how to create multi-threaded processes to increase computational efficiency. We worked a lot with fine-tuning system prompts to improve LLM output. We learned how to use the Ffmpeg library to work with video rendering.
What's next for Canopus
We want to make the learning experience even more personalized with the ability to ask questions at specific points of the video. This way students can dive into the specific portions they want more help on. We will also host the website and integrate a database and user authentication.

Log in or sign up for Devpost to join the conversation.