Inspiration
Study-quiz games currently on the market (ex: kahoot, quizlets) get stale because, after enough review, students are merely memorizing the answers to each question stem. With repetitive question sets, students lose their learning and fall back to completing memorizing drills. In addition, in order to create the problem sets, each question must be entered manually, which is laborious and time-consuming. Many shareholders are at stake. Teachers and students both waste a significant amount of time setting up quizzes just for the quizzes to be overstudied in a short period of time. However, with the growing functionalities of foundation models, we were inspired to utilize AI to manage this growing issue. Our mission in this project is to improve the efficiency for quiz-making for both students and teachers. With our project, we want to implement the newest technology that is currently available to propose a state-of-the-art solution to this problem.
What it does
Aristotle is a multiple study-quiz game that utilizes an LLM to dynamically create different questions (including multiple-choice, T/F, FITB, etc.) based on lecture material uploaded to it. Quiz games could either be live multiplayer or be async multiplayer with a leaderboard system.
How we built it
Our backend is built in python with flask and boto3 (the AWS library for python). We used boto3 to interact with all of our backend cloud services such as S3, DynamoDB, and most importantly, bedrock. We utilize AWS Bedrock to power the foundational models to generate quiz questions. We constructed our frontend with NextJS to create a file-based routing system pointing to each webpage within our site. The user interface was originally designed using Figma, and then brought to life with NextJS and a main CSS styling page.
We also implemented accounts with AWS Cognito and payments with Stripe in order to implement subscriptions, pro tiers, and prepare to scale to self sufficiency down the line.
Challenges we ran into
One of the features that we wanted to implement with our quiz game is the multiplayer function. However, setting up a server, database, and websocket connection for a multiplayer session in a limited time is very challenging, therefore we explored the many services that AWS offers to make our process more structured and convenient. We first prototyped our multiplayer session with AWS DynamoDB (storing game and user information), AppSync (APIs that operate CRUD on DB), and Lambda (functions that processes more complex game logic such as scoring). We initially approached the problem this way because we learned that AppSync has a subscription feature that allows the DynamoDB to push updates to all subscribed users, which would achieve the "multiplayer session" functionality that we were seeking for. However, despite successfully setting up the DB and the Lambda functions, we faced significant challenges with constructing the schema and resolvers for the API. Our API calls dealt with different data sources and we weren't able to complete API calls successfully with our tester program. Therefore, we decided to pivot to a simpler approach, trading AppSync for Step Functions. Step Functions are serverless flowcharts that can perform actions such as running lambda functions, updating databases, and interacting with a wide range of other AWS services. We set up a step function to host a live quiz session, iterating through each question in a question set and allowing users to join asynchronously. Unfortunately, these features never made it to our final product. However, in researching and planning our multiplayer system, our team still learned a breadth of valuable information about AWS services and products. Lastly, during our prototyping process, we also faced issues with two of our student AWS accounts being blocked from using Bedrock due to sending oversized requests. We actively communicated with Amazon Tech Team, but was unfortunately not able to retrieve the access to these two accounts.
Accomplishments that we're proud
We’re proud that with a team that’s mostly new to hackathons, we were able to create a working product that met all of our original minimum viable product (MVP) goals. We’re also proud that we were able to stay resilient in the face of a multitude of tech issues in areas we were mostly unfamiliar with.
What we learned
Our experiences exploring AWS's various services and overcoming implementation challenges allowed us to learn a great amount on the AWS services themselves as well as the advantages that AWS can bring with project building. We learned that AWS is a highly flexible service that supports not only traditional servers but also serverless capabilities, which can be used in a highly scalable and configurable manner. We also learned that it’s quite difficult to connect a frontend and a backend written in entirely different frameworks and languages. We ran into issues cleanly passing data from JS into our flask APIs, often running into input validation errors and other similar problems. If we were to do a similar project again, we would make sure to thoroughly document all of our backend APIs, including what they are called for and the exact specifications of the arguments they take.
What's next for Aristotle
Next, we hope to polish Aristotle’s multiplayer feature to support real-time interactions and introduce adjustable quiz difficulty levels. We aim to implement a more robust user registration system that can track user’s study history and progress, to cater the services to each individual student. We’ll integrate features to allow users to review and retake quizzes as well, to support learning. Additionally, we also hope to improve the overall UI/UX and strengthen security measures. Also, another area of improvement lies in the prompt engineering process to the foundation models. We could feed the models with more user "context" to generate more specific and meaningful questions. This could be done utilizing Statsig's data collection and analysis feature to build a feedback algorithm to make the prompts include questions that users tend to struggle on, then the questions generated could be more tailored towards improving specific areas.
Built With
- amazon-web-services
- css
- figma
- html
- javascript
- next.js
- python
- react

Log in or sign up for Devpost to join the conversation.