What it does
QuizMe for Amazon Echo allows you to import flashcard sets from Quizlet.com and use them on your Amazon Echo.
It can be done in three simple steps:
- Export your flashcard set from Quizlet.com using the built-in export function.
- Paste and submit the copied text (flashcards) into our website, QuizMe.study
- Tell your Amazon Echo: "Alexa, open flash cards"
It will automatically convert your flashcards into questions. It will then convert your terms and definitions into well-phrased questions and acceptable answers using Google Gemini, and begin asking the user questions. You then answer these to the best of your ability and the Echo will reply with whether the answer was correct or not and keep track of your score.
How we built it
The tech stack we used for QuizMe was quite varied and took significant effort to implement. We began with an HTML/CSS website to take in Quizlet imports from users. This website then feeds the Quizlet imports through a JavaScript program that converts the Quizlet imports to JSON. From here, this information is uploaded in JSON format to a Flask-CORS server that is written in Python and hosted using Render.
On the Alexa side, we created an Alexa skill using AWS Lambda and the Alexa Developer Console. The skill was created in three primary files, one to handle the JSON import from our server, one to communicate with Gemini (via their REST API), and one to handle answer verification to ensure the users’ response is handled properly. Each of these files is written in JavaScript. In addition to these, we also wrote various intent handlers and invocation words for each command and stored them in a JSON file within the Alexa skill.
The skill communicates with Gemini each time a question is asked and also each time a user responds. For example, a quizlet may have a definition as “Washington D.C.” and a term as “United States of America”. Gemini is then used in multiple ways. First, to convert the definition into a question, such as by rephrasing it into “Which country’s capital is Washington D.C.?” Gemini is then also used to interpret the user’s answer. For example, if the user says “It is the U.S. I think.”, Gemini is able to understand that the U.S. is the United States of America and mark the answer as correct, despite it not matching exactly.
Challenges we ran into
We wanted to be able to provide our website with a link to a Quizlet flashcard set and a script would automatically grab the data from Quizlet. This would be much more user-friendly than the current method of having the user export their flashcard set and paste it into our website. Unfortunately, Quizlet does not have an API and it also has very capable bot detection. We created a program that uses Python’s Stealth Selenium and can reliably grab data given a Quizlet url, but after 4-5 attempts within an hour, the website will display a captcha that we couldn’t bypass.
Amazon Alexa Skills are also very proprietary which caused various issues for us. Their structure does not work well with external input, such as that from Gemini which we attempted to connect to for quite a long time before succeeding. We also ran into significant issues with formatting the JSON and hosting it correctly such that the Alexa skill could properly read it in clear English and relay it to the user. We wanted to ensure the user could input a Quizlet’s export text into our frontend and have it instantly available for use on the Alexa Skill, which proved to be a difficult challenge. We ultimately settled on hosting our server dynamically on Render, which was a brand new experience for everyone on the team, though it was ultimately a successful one.
Accomplishments that we're proud of
Our dynamic website was successfully deployed on the Render Cloud Application Platform for our backend and GitHub pages for our frontend. The website has a custom URL, QuizMe.study, which was acquired through GoDaddy and managed on Porkbun.
The Amazon Alexa Skills can grab the data from our backend server and use them for our users. We have a Google Gemini API call for every question that can reformat the definition to a question because most flashcards are not formatted that way. We also made another API call to evaluate the semantic similarity between the user’s answer and the expected answer, which was a major improvement to the default Alexa speech interpretation, making our solution more human-like and flexible.
What we learned
In order to build QuizMe, we learned about the Amazon Alexa Developer Console, how to utilize AWS Lambda functions in tandem with Alexa Skills, and how the Amazon Echo interfaces with code, speech, and users. For the backend, we were required to utilize a server management program none of us had used before, Render, and to connect it with our Alexa skill such that the server would instantly update with the skill. We also learned how to use Gemini’s REST API to connect with our Alexa skills and provide a better user experience by interpreting terms, definitions, and user answers in real-time.
What's next for QuizMe for Amazon Echo
The main goal for us with this product is to easily allow anyone in the world with an Amazon Alexa to download QuizMe. We can do this by publishing the Alexa Skill and submitting it to Amazon for review. This process should take roughly two days.
For better scalability and performance, we plan to move away from a server and instead introduce a dataset to host the user’s Quizlet data. Supporting multiple datasets will allow users to access a wider range of subjects and topics. For example, users will be able to request specific datasets by saying commands like “Open Biology Flashcards.”
In terms of flashcard functionality, we want to introduce a shuffle mode that randomizes the question order, making study sessions more dynamic and effective. Additionally, we will implement a flip card feature to allow users to hear the answer first and guess the question, providing a more interactive learning experience.
Built With
- alexa-skills
- aws-lambda
- css
- figma
- github
- google-gemini
- html
- javascript
- porkbun
- python
- render-cloud

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