Inspiration

When developing Berri, our goal was to find a solution to assisting lower socioeconomic classes with a tool of personalized education. We took the challenges we faced ourselves from not having a tutor to help with specific questions at any time and personalized test prep and focused on developing those. Through this past week, we have focused on getting rid of technical debt and establishing a base idea of what Berri can eventually become. To ensure that our users did not feel disheartened by the time required to learn, we provided a constantly changing time of mastery-based on variables we collected throughout their experience

User Stories:

  • I would first be in testing mode, performing the questions based on the subject I chose and rating my confidence on each question through 1-5 rating system
  • If I did not get any question correct then I can flag it and connect with an online tutor who can go over the question with me in thorough detail
  • Based on my accuracy within the test, my time spent taking the test, my average confidence rating, and the total amount of questions stored for that subject, I would be given a starting mastery date. This mastery date would be shown to me along with the total time spent on that subject and the total number of correct questions
  • I could also contact a tutor directly based on the subject that requires assistance

What it does

Berri in a sense is a personalized memory-retention tool for mathematical problem-solving, or in other words, the missing half of Brainscape. Berri focuses on providing students with the most up to date problem sets and providing each and everyone with a gateway to a personalized and affordable tutor. By basing the payment model for tutors on a 10 by 10-minute model, we also make the idea of paying in large bundles rendered useless, since for most lower socioeconomic classes those bundles are unaffordable. Over time Berri will advance in its abilities to gamify the educative process to allow for more interest in learning by yourself and allow for more mobility for both the tutor and student to have the most adaptable educational experience.

How I built it

The process of every coding journey is one of the constant changes, we embraced that realization as we worked towards developing all that we could within the time limit provided. Our test questions were brought in using StudyCounts API, which enabled us to access nested JSON files with data on questions, difficulty, and answer choices which we later formatted into a Pandas Dataframe. Our equation to determine the time for mastery of a subject was based on, test accuracy, time to take an individual test, and confidence rating. Once an individual finished testing their correct answers would be used to divide from the total number of problems in the subject and multiplied by their time to finish one test. However, we understood that as time went on that the subject would get harder, and that’s why we included the confidence rating. For each integer between 1-5 in the rating, there is a multiplier attached, 1 being 1.25 and 5 being 3.25 which multiples by the time found previously. This time for mastery is subject to change as the user progresses as external factors would be in play as well. Below you can find the Components within our program and the system architecture:

Components

  • /tutors = render tutor profiles in grid, filter by category & availability, view tutor_profiles --> link to their profiles with - socials metadata (zoom, youtube, link for personal website)
  • /modules = store modules for categories => store units => store problem_sets, store confidence_scores to compute metrics at end of user session of problem_set, store in db for graphs / charts (data visualization)
  • /users = store Users, superUser, admin
  • /modules/training = math training gateway for problem_sets
  • /dashboard = render graphs, charts (data visualization) from performance metrics / user analytics
  • /login && /signup = user authentication with firebase backend

System Architecture

  • Standard MVC (Model-View-Controller)
  • Confidence-Based Repetition Algorithm
  • Object-Relational Mapping
  • User Authentication
  • Dataframe for Reading / Adding Insertions to Database

Challenges I ran into

During the development of this project, we ran into an issue with time management. As we planned for many features, we found in time that we were wrong in believing we could code all of the features into the end product, within the given time. We had planned to use the Zoom API to connect to tutors on a video conference with a clean interface and provide them with a template to display their personal qualifications and social links. We also found that the use of Django was difficult since we found a better understanding of Java rather than Python. The challenges we faced helped us realize the crucial components of software development and the versatility that various languages posses.

Accomplishments that I'm proud of

We as a duo were astonished by the amount of time we were able to commit to this project and learn in a short amount of time. As we went through the project, especially the last 18 hours we found that working away at problems in a systematic manner with rests was the best method. We also learned how to work with Django in an efficient manner and develop a front end using React. As a whole, we are very proud of our end product as, neither of us are amazing programmers, but are still learning and were able to program a well-attuned educational platform.

What I learned

When looking into programming this software we were advised to use Django as it is a fast method of developing a backend. Being that we were inexperienced with using Django, the learning process behind it was very informative and led to a lot of conceptual realizations. When bringing in problem sets from StudyCounts we also found the JSON files to be nested which we learned how to put into a pandas data frame and eventually render the equations with latex. Overall, however, we learned that making too many commitments towards what the program can begin in a short period of time can depreciate the value of the end product. We had a lot of goals in mind and even though we accomplished many of them, we still have a lot on the plate still to finish.

What's next for Berri

As any software is developed, the end is never near and we understood that when building Berri. Although for this submission we have worked hard to present a base model of the future of Berri, there is still much to do. One of the leading concepts being gamifying the whole process by adding an XP leaderboard and coin system for avatars. Similar to Duolingo’s monthly leaderboard which entices users to work harder on learning languages to provide their bird with new costumes, we too would incorporate such ideas. By adding a leaderboard and a possible multiplayer testing system, we can enable not just internal competition but also external to appeal to a wider audience and provide more reason to learn. This would also allow for individuals to practice daily so that their ranking doesn’t deteriorate. We also plan to build upon tutor profiling and inauguration process as we currently have developed the student interface to a much larger extent than for tutors. The idea of an ML testing to allow for more customized question difficulty would also allow for the tests to be adaptable while taking the test rather than changing the difficulty only after the test has been taken. We also plan to build a whole tutor profile. We plan to utilize Zoom to be able to link tutors to students with a clean interface. Originally we had our own video conference platform, however, we found that the tools provided by Zoom and the support behind the API to be convincing enough to use the API instead. The tutors can also link back to their own youtube channels or personal websites if need be. All in all, there are many different ideas we would like to incorporate into Berri, which we will continue to work towards. Some of the ideas we plan to integrate soon include:

  • Randomization for problems imported from OCR or direct user input to automatically simulate test conditions
  • Public/private matches with keys generated from invite codes
  • Simulating test conditions for users via CRUD setup for problem sets (OCR trained model to identify a question to prevent friction, the user manually adds in multiple-choice answers

Built With

Share this project:

Updates