Inspiration

One of the hardest tasks for students is to actually learn and memorize content for classes. However, we found that, while using flash cards can be effective for memorizing, it wasn't effective for actively learning nor was it engaging in content. To change this, we decided to create MemoTech so that students can have a guide that can help them as they learn and, at the same time, actively engage with the material.

What it does

MemoTech is designed to accommodate both custom and imported flash card sets. For example, it can take flash cards from Anki, let users edit it, and then learn through the flash cards. After each question, users will know if they got the correct answer, receive feedback for how they can improve, and be recommended other sets that they can try out.

How we built it

To build this, our project uses:

  1. MongoDB Atlas (Database and Vector Search) - To store a large set of flashcards from databases like AnkiWeb, we used MongoDB to create a collection of flashcards, represented as jsons. Then, we utilized MongoDB Atlas Vector Search to find relevant flashcard decks when providing feedback to the user.
  2. OpenAI API (API Endpoint) - The API was used for providing feedback from a user's input. Using the API, we used a prompt to 1) help us determine if the answer was correct and 2) provide feedback for the user.
  3. Hugging Face (Pre-trained LLM) - To perform a vector search in MongoDB, the query input needed to be a vector embedding; thus, we used a sentence transformer model (link) for this conversion.
  4. Flask (Backend) - All of our endpoints were defined in Flask. This includes the endpoint to get feedback from the OpenAI API and to perform a vector search to find relevant flashcards for further study.
  5. React (Frontend) - We used react for our frontend to create a dynamic UI and to route to our different pages (including our home page, import/input flashcards, and study pages).
  6. Axios (Frontend) - This was used to post the flashcard json to the MongoDB database.
  7. Scrappy (Web Scraper) - To get information from flashcards from AnkiWeb, we made a Scrappy web scraping algorithm to automate this process.

Challenges we ran into

  1. Vector Search - This was the first time we used MongoDB's Vector Search, so we ran into several problems during the process. For example, we had to reformat the flashcard jsons we put into our database to match what was required for the vector search. Also, there was some uncertainty when it came to how we should format the queries (e.g. as embeddings or text).
  2. Frontend Backend Communication - Our project had two means of frontend-backend communication. First, the flash card set had to be transferred to the MongoDB database. Second, the user's answer used MongoDB's Vector Search, and then sent a response back to the frontend. This was challenging since it required the frontend to have two endpoints, and the backend to have two different uses.

Accomplishments that we're proud of

I am proud to have collaborated as a team to finish the project, especially since everyone had different levels of experience and different expertise. In the beginning, we had a difficult time coming up with ideas, but as we bounced ideas of each other and defined our own roles, we found ourselves becoming a team.

What we learned

  1. Importance of High-level Planning - We learned how important defining the scope of the project, while making it interesting! For our project, there was so many things we wanted to do, so planning out the project beforehand made sure that we were doing things that could be done in the timeframe but, at the same time, keeping it exciting to work on.
  2. MongoDB Atlas - It was interesting to learn more about new methods like the Atlas Vector Search, especially in an ever-evolving field like AI and NLP.

What's next for MemoTech

We have several ideas for the next steps:

  1. Personalized feedback for users
  2. Larger database for the flashcard suggestion system
  3. Accommodation of different flashcard file types
  4. Improving the design of the website
  5. Creating a user-login system to allow users to store flashcards

Opting in for AI in Education by Schmidt Future, MongoDB Atlas, Best .Tech Domain Name

Share this project:

Updates