Inspiration

Both of us are very passionate about math, and naturally we used many different tools to keep learning and improving. Tools like KhanAcademy have great explanations but you can't ask follow-up questions or use any generative AI enabled features like generating new practice problems. Other AI-based tools like Gauth, Mathway, Answers.ai are mostly focused on solving specific problems a user enters however they don't provide an interactive tutoring platform for the user to learn. We wanted to try to fill this gap by creating Adda.

What it does

Adda is a personalized, interactive AI math tutor. When the user onboards, the user is asked about what math courses they are confident in, what topics in the most recently taken course they are most and least confident in, and what they hope to learn. After onboarding there are multiple modes for the user. The first is learning mode. In learning mode the user can select a course and topic they want to learn about and they will receive a step-by-step guided mini lecture on the topic. The depth of the explanations will adapt to the users prior knowledge and confidence levels. The next mode is sets. After looking over a topic in learning mode the user can create flashcard sets to review the topic. With Adda, the user in incentivized to learn with practicing streaks and percent completion for different topics.

How we built it

We used the GPT API for generating mini lessons in learn mode and practice flashcard sets. When testing base GPT we found that the explanations weren't very easy to understand explanations and its explanations weren't conceptually rigorous and didn't delve into applications. So we decided to use the Assistants API and make two assistants one for learn mode and one for sets mode. We gave both of them system instructions and a custom knowledge base via attaching a vector store. The vector store consisted of 100's of articles from Khan Academy which we scraped using Puppeteer. The front end was expo react-native and the backend was node.js/express.js. We used Firebase for our database because we wanted it to be lightweight and client-side worked for our use case. We spent a lot of time planning out our UI and design as well as features since UX was our first priority.

Challenges we ran into

A main challenge we ran into was Google Authentication since we were using react-native it would block us repeatedly. In the end we opted for Microsoft and Apple Authentication as well as an email password option.

Accomplishments that we're proud of

We're proud of the fact that we created an app that keeps learning engaging for the user with its emphasis on UI&UX. We're also proud of the level of accuracy our models provided as we ran into minimal issues with under/overexplaining for GPT assistant.

What we learned

We learned about Auth handling and different types of auth handling. We also learned about how to write modular integration of different components. For example, we wrote a LessonRenderer.js class which wrapped an entire lesson in one react-native component.

What's next for Adda

In learning mode we want to add the ability for the user to ask clarifying questions on any step. With our current implementation this wouldn't be too difficult because we store the chat as an array and the current step we are on so we could easily query the GPT API with all the steps up to and including the current step and the users message and get a response which would add to the chat array. This would dramatically increase interactivity and take Adda to the next level.

Share this project:

Updates