Inspiration
When we first sat down to brainstorm hackathon ideas, as university students, we somehow ended up talking about how broke we were. Oddly enough this is what our team closer together. We specifically talked about how confusing and stressful personal finance often feels. We joked about how our bank apps keep throwing charts and numbers at us, but rarely explain what those numbers actually mean. And then it hit us: this isn’t just something we experience, it’s everywhere. In Canada, 76% of Canadians say they struggle with saving consistently, and Millennials & Gen Z overspend by an average of 15% per month compared to their budgets. That’s not only big numbers, but it’s expensive for people, and it has huge long-term consequences on financial security as well. As children we are told practice makes perfect. Bad habits on spending, bad habits on financial awareness can snowball into a lifetime of stress, debt, and missed opportunities if we don’t start addressing them early. And that's wh
That casual conversation between us turned into something bigger. We realized this was a problem worth solving (not just for our wellbeing), but for peers our age. Now, discussing the idea got us excited about the potential, but all of us, as programmers, believe that technology should be used for more than just novelty. It should solve real problems and make people say: “That actually helped me understand and want to save my money better.” That’s when we started thinking how do us as Gen Z's succeed in retaining information for a longer period of time. That's when it hit us. Reading a 3-page essay can feel like years for us, and we probably won’t even remember it. But we’ll happily watch a 3-minute TikTok or Reel about the history of Mount Rushmore or something just as random. Quick, easy-to-digest videos are our bread and butter, and that’s the medium we knew we could trust to actually make financial literacy stick
And just like that… your spending app, something you check every month when that gruesome statement email hits your inbox, got a whole lot funner, less scary, and educational, thanks to InvestEd.
🤖 What it does
InvestEd transforms an ordinary banking experience into something engaging and educational, without the stress of reading endless charts or jargon-filled statements. Instead of overwhelming you with numbers, we enhance your finances using a combination of AI, video rendering, and clean design to give your money a voice.
Paired with a sleek web app, InvestEd’s AI assistant, Portfolius, explains your spending habits and things your overspending on, as well as short, personalized explainer videos on anything your confused about. Whether you’re overspending on food, shopping, or subscriptions, the app highlights your habits and shows exactly how that money could have been saved or invested. Each video also breaks things down in simple, visual terms that anyone can understand, so you know how to invest it further.
But we didn’t stop there.
InvestEd doesn’t just tell you where you went wrong, it encourages better habits. By framing overspending as an opportunity, it shows how small changes today can unlock smarter savings and long-term investments. Trying to figure out how to start investing? Want to see how your choices affect your future wealth? InvestED’s got your back.
🛠️ How we built it
💻 Frontend with Next.js + Tailwind: We built a clean, banking-inspired interface where users can view spending insights and generate personalized videos with a single click.
⚡ Backend with FastAPI: Our Python backend orchestrates the workflow — taking the user’s context, generating a script, rendering the video, and returning a playable URL.
📝 Cohere LLM: We used Cohere’s API to generate short, easy-to-understand scripts that explain overspending, savings opportunities, and investment tips in plain language.
🎬 Manim Renderer: Manim converts the generated script into short explainer videos with text animations, optimized in Quick Mode (720p/30fps) to keep generation under 30 seconds.
☁️ Supabase Storage: Heavy video files are uploaded to Supabase and returned via public or signed URLs, ensuring smooth playback in the frontend without weighing down the backend.
🚀 ElevenLabs Audio: Scripts generated by the AI are spoken by Portfolius (ElevenLabs) that bring each financial explainer video to life.
🧗 Challenges we ran into
Not sleeping for 36 hours...
Other than that.
Rishi
Connecting the frontend to the backend was harder than expected. Dealing with CORS issues, API rewrites, and environment variables across different setups slowed us down, but it taught me a lot about building portable full-stack apps.
Hreem
Working with the frontend and integrating each component (buttons, pointers, animations) was a challenge for me. Along with using ElevenLabs audio sync up and voiceover the video (rendering the video on the front end as well) were all challenging concepts too.
Hetarth
Handling video storage and creating an analytics overview for the frontend after the onboarding was a challenge to integrate. Large MP4s and stored data to display quickly became unmanageable until I integrated Supabase Storage. Understanding public vs. signed URLs and configuring bucket access was tough at first, but very rewarding.
Ayman
Manim was a challenge. Rendering speed was a big bottleneck at first, and optimizing animations to run in under 30 seconds meant stripping things down and experimenting a lot. In the end, Quick Mode worked, and I learned a ton about performance trade-offs.
As a team
With each of us working on different components (frontend, backend, AI, rendering, storage), integration was intense. Broken endpoints caused us to stress eat and long render times made us go grey. All in all it pushed us to communicate constantly. But when everything finally clicked, seeing the entire app work from end to end Cohere → Manim → Supabase → frontend felt like magic.
🏆 Accomplishments that we're proud of
Hreem
Designed the frontend in Figma and implemented it with Next.js + Tailwind. Created Portfolius. Rendered video on frontend, retrieving it from Supabase. Designing Focused on creating a clean, banking-style interface and connected it reliably to the backend.
Rishi
Integrated Cohere into the backend and fine-tuned prompts and backend API's until they generated scripts and backend data collection for the banking details of our user's integrated perfectly with our app.
Ayman
Optimized the Manim rendering pipeline for speed. Achieved sub-30 second turnaround by experimenting with resolution, fps, and animation style. It was challenging, but incredibly rewarding to see a video appear in seconds.
Hetarth
Created and designed the analytics and dashboard pages to show users monthly statements based on their data. Also developed the onboarding process along with email notifcation pop up to remind/pester students about investing.
As a team
We built a full end-to-end pipeline that transforms raw financial data into a playable video in less than 30 seconds. Seeing everything connect, from spending data → Cohere script → Manim video → Supabase → frontend playback, was our proudest moment.
💡What we learned
⚡ FastAPI (Backend): Orchestrating a multi-stage process, Cohere → Manim → Supabase — showed us the importance of background tasks, status polling, and error handling. We learned to break the pipeline into clear stages (generating, rendering, uploading, ready) so the frontend always knows what’s happening.
📝 Cohere LLM: We discovered that prompt engineering was half the battle. Cohere sometimes produced overly long or technical scripts, and we had to iterate on prompt design to make the narration short for syncing with animations.
🎬 Manim Video Rendering: This was where we learned the most. At first, rendering times were far too long for a hackathon demo. By optimizing resolution (720p), fps (30), and using simpler animation primitives (fade in/out instead of complex scenes), we brought generation down to under 30 seconds. We also learned how Manim’s config options (tempconfig) can radically change performance.
🔗 Integration (Cohere + Manim): Getting LLM output to flow cleanly into Manim wasn’t trivial. Sentences had to be split, timed, and displayed in sync. We learned how to preprocess LLM text, chunk it into lines, and assign display times so the video feels natural and doesn’t overlap each other either.
🔮What's next for InvestED
Gamified learning: Rewarding users with streaks or milestones when they reduce overspending, making financial literacy habit-forming. Maybe some sort of points redemption system.
Scalability & performance: Offloading heavy rendering jobs to cloud workers, enabling InvestED to handle thousands of video generations in parallel without delays.
Cross-platform reach: Expanding beyond web into full mobile apps, so financial insights can be accessed anytime, anywhere.
Built With
- cohere-api
- express.js
- github
- manim
- next.js
- node.js
- postgresql
- python
- react
- supabase
- tailwind-css
- vercel



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