Inspiration
Imagine you had Richard Feynman as your private tutor to coach you through every exam.
The Nobel laureate famously developed one of the most effective learning methods ever conceived: Just explain it to somebody! So we imagined, just before a major exam, we would be using AI to engage with our study material and be prepared for any question ahead of exams. What if we could combine spaced repetition with interactive voice-based learning to create a truly personalized study experience? And so, Feynman AI was born—an AI tutor designed to make learning more engaging, effective, and seamless. Our mission is simple: Learning anything; forever.
What It Does
Feynman AI is an AI-powered tutor that blends the proven techniques of spaced repetition and interleaving with interactive voice quizzes. It predicts when users are likely to forget information and engages them in discussions about the topics, allowing for deep, conversational learning and reinforcement. Beyond that, it offers automated flashcard creation: users simply upload their lecture slides or study material, and Feynman AI extracts key concepts and generates personalized flashcards. The system uses Firebase for real-time syncing across devices, making it easy for users to learn anytime, anywhere.
We re-implemented the Anki FSRS (Free Spaced Repetition Scheduler) algorithm to make our spaced repetition as effective as possible. Additionally, we leverage Mathpix to convert PDFs into markdown, simplifying flashcard generation, and we use the Realtime API by OpenAI to facilitate seamless voice interaction with the tutor. For creating comprehensive topic overviews, we utilize the Completion API by OpenAI.
How We Built It
We started building Feynman AI with Flutter but quickly ran into limitations regarding support for real-time APIs. This led us to pivot to a web-based solution using a combination of Flask and FastAPI for the backend—Flask for templating and FastAPI for handling asynchrony and providing the ability to interrupt the tutor for real-time interactions, much like a real-world conversation. We paired this with Jinja for templating and a robust database solution for real-time data synchronization. The final product is a robust web app that can grow into multiple platforms, leveraging Python's backend capabilities and seamless device syncing.
Challenges We Faced
The biggest challenge was overcoming Flutter's lack of real-time API support, which forced us to change directions and develop a completely new solution. This required us to quickly adapt, learn new tools, and pivot our technology stack in a short timeframe. Ensuring smooth and real-time data syncing across devices using a sophisticated database solution was another complex hurdle, but we managed to overcome it to create a truly integrated learning experience.
Accomplishments We're Proud Of
We are particularly proud of the seamless integration of spaced repetition and interleaving techniques with voice interaction, creating a dynamic learning experience. Additionally, we successfully automated flashcard generation from lecture slides—a feature that cuts down on tedious manual entry, allowing users to focus on learning rather than data prep. Achieving smooth cross-device synchronization was also a significant technical accomplishment that ensures learning can happen without interruption.
What We Learned
This project taught us the importance of adaptability. Encountering Flutter's limitations could have derailed our timeline, but instead, it pushed us to explore new technologies like Flask, FastAPI, Jinja, and robust database solutions. We also learned how crucial it is to prioritize user experience—both in terms of technology choice and in designing a product that truly makes learning easier.
What's Next for Feynman AI
Our vision is to take Feynman AI to the next level by enhancing the voice interaction capabilities to make the tutor feel more natural and intuitive. We also plan to expand to native mobile apps, making learning even more accessible. On top of that, we want to further improve our flashcard generation engine to handle more diverse input formats, from handwritten notes to PDF textbooks, and allow users to customize their learning sessions for a more tailored experience.
Tech Stack
- Flask
- Jinja
- Python
- Firebase
- FSRS
- OpenAI Real-time API
- FastAPI
- Mathpix
- OpenAI Completion API
Log in or sign up for Devpost to join the conversation.