Note about the URL:

We did not deploy our final site to the URL, but the URL we reserved is www.youtubestudyplan.co

Challenges Attempted

  • Best use of MongoDB We believe that our MongoDB usage is top-notch. Every course is stored in MongoDB as quizzes, questions, syllabi, and lessons. The user has a syllabus pointer, the syllabus has a lesson pointer, the lesson has a pointer to a quiz, and the quiz points to each question. This hierarchical tree structure using simple dictionaries allows lots of data to be stored concisely. We can also make pulls for individual files very small. We also use MongoDB for credential storage and confirmation, so each user has their own login in order to have their own personalized course list.
  • Best domain name Our domain name truly captures the essence of the app. After all, it is a study plan based on YouTube videos! So, what better name is there than YoutubeStudyPlan for such an app?

Inspiration

With the dawn of the internet came the promise that information would become widely available. With knowledge at the tips of everyone's fingers, surely our society would advance at rates never seen before. The rise of misinformation threatens this promise. Algorithmic search and recommended feeds do not help this fact. "What if", we thought, "we could use this new tool, generative AI, for good? What if we could use AI to bring back this promise of the dawn of the information age?" And so that is what we set out to do.

What it does

YouTubeStudyPlan is a webapp that allows you to simply enter what you want to learn. Google's Gemini AI will then create a syllabus for you, with topics that build on the last in order to create a true study plan. We then use Playwright to scrape Google search results based on those topics in order to get YouTube videos from which to learn. These videos will be listed to you in a clean, concise format. With each video comes a quiz, also generated by Google Gemini based on the transcript of the video. These quizzes ensure that you truly learned from the video, and that your YouTubeStudyPlan is as informative as possible!

How we built it

We used Next.js for our frontend, and FastAPI with Python and MongoDB for our backend. We make calls to Gemini for generating syllabi and quizzes, and use Playwright to scrape the Google search page.

Challenges we ran into

Initially we planned on using YouTube Data API v3 to get video information, as this would allow us much finer control over our searches, such as ensuring that we only get videos that have Closed Captions. Unfortunately, YouTube Data API v3 has a cost limit of 10,000/day. One search takes 100 cost units. So we would only be able to run 100 searches. Each syllabus has about 10-15 topics so each syllabus would use 10-15 search calls. Our only option would have been to keep switching API keys between google accounts. Obviously this was not feasible, so we switched to Playwright. API quota issues were a common theme throughout this project. But nevertheless we persevered and found hacky workarounds, in true hackathon fashion!

Accomplishments that we're proud of

We are genuinely impressed with the quality of the course plans Gemini generates. In fact, it generates everything in a JSON format. Of course we did have some issues with properly-formatted JSON generation, but that's nothing that a little re-run can't solve!

What we learned

We learned so much about how to fine-tune generative AI to produce proper results, how to set up user authentication with MongoDB, and how to set up a proper tech stack with Next.js, FastAPI, and MongoDB.

What's next for YoutubeStudyPlan

Honestly, this application does not scale well in its current form. Just running tests we burned through $50 of the $300 credit given for free by Google Gemini. Although there are some ideas we have for properly scaling, we will leave that as a future problem.

Built With

Share this project:

Updates