Inspiration
"I want to throw this textbook into a bonfire"
Amidst finals week, we’ve all had this thought. You know you need to study, and research has indeed shown that from medical examinations to learning to read, flashcards are a highly effective method to retain information.
But between referencing the book, identifying the important terms, formulating questions, and manually writing each card, creating a deck of flashcards is a difficult and tedious process. You begin to embrace the fiery NC on your transcript when suddenly…
What It Does
Introducing QuickFlash, an educational software designed to streamline the studying process by automating the creation of flashcards.
All the user has to do is paste in a body of text, and the result is a ready-to-use deck of flashcards on the key information in the source. From there, there’s the option to manually edit the deck— adding, editing, or deleting cards— or to save and download for future use. Resume a study session by uploading a deck on the landing page and enjoy all the same features. With so many students taking notes on their computers and having digital copies of textbooks, having an easy-to-use tool that integrates with information students already can help them be more efficient and productive during their studying.
How It Works
The primary function is to “Create New” decks of flashcards. Upon receiving the user input, QuickFlash’s backend Python uses the RAKE and PyATE algorithm to determine the essential information in the text. Basically, we search through the input that our user gave us and try to find the phrases and words that make the most sense as answers for a flashcard. Once we identify the keyword, we generate a card that has that keyword replaced with a blank.
Once we generate the content of those cards, we then use our Flask API to send the deck to our frontend, which was built using Javascript with React. Once the text input is passed to the Python backend, our frontend processes the output and returns a card deck. The deck is then stored as an array state variable and may be modified in the add, edit, and delete functions. Various buttons on the webpage are used to navigate between the different screens and interact with the newly created flashcards.
QuickFlash also employs a proprietary card-reading interpreter, which takes in a JSON file of question and answer objects and formats them into the animated, mutable deck displayed on the interface. This allows our students to carry their notes with them digitally and pick up studying where they left off.
Challenges We Ran Into
Given that studying is already a frustrating task, we invested a lot of time into designing a seamless UI/UX, allowing for a pleasant and accessible learning session:
For the interface, our key consideration was to make the program erudite, playful, and easy on the eyes. To that end, we had to consolidate functionality into fewer pages to protect our namesake “quickness” while preventing the screen from becoming cluttered with buttons. Color scheme also played a role, with the original blue (chosen for its bright mood) becoming straining on the eyes over long periods of time.
On the UX side, we focused on the accuracy and customization of the cards according to the unique preference of each user. The goal was to emulate the flexibility of paper flashcards, refining core features including flipping, editing, and adding/deleting cards, as well as managing separate decks, again simultaneously seeking minimalism.
During the backend development, we encountered some formatting issues with the regular expressions, since different in-text citation styles interfered with RAKE/PYATE’s innate sentence parser.
Finally, due to concerns regarding data privacy, we decided not to store the flashcards on a server and instead had them stacked up and put in a drawer (downloaded as JSON).
Accomplishments That We're Proud Of
Richard: I’m extremely pleased with how the final product turned out. With this being my final year at Hack@Brown, it feels great to have gone from silly joke projects to fully-functional productivity software (alongside my 4-year hacking partner Hari). Graphic design is my passion, so shout out to Mike as well for bringing my PNG files to life.
Hari: I was super excited to be able to work with such talented teammates and learn so much from them about software development and design. I learned so much during Hack@Brown, and I am really looking forward to putting these learnings to good use.
Michael: As this was essentially my first hackathon, I was very excited to work with my friends on a project we were all interested in. Brainstorming various features and improvements and seeing them work is always super satisfying, but it was even better to be able to share the feeling with my good friends!
What We Learned
We learned first-hand about the entrepreneurship process: identifying a need in the community, figuring out if it is one we can reasonably expect to address, brainstorming possible solutions, conducting preliminary research to verify the effectiveness of the idea, and finally the traditional “hacking” part of producing a product through code.
As previously discussed, we also came to better appreciate the importance of the user interface. While a proof of concept is certainly helpful, the key determinant of the success of this program will ultimately be whether students find the design and implementation palatable to work with. Seemingly insignificant items such as color schemes, button placements, and animations revealed themselves to be essential during the testing phase.
Finally, we thought it was cool to investigate the RAKE/PyATE algorithm from the perspective of computer science students whose familiarity with regular expressions and natural language processing is largely theoretical (shoutout to Prof. De Stefani). Getting intimate with the RAKE/PyATE process with respect to real-world sources with potentially messy and inconsistent formatting.helped us further our computer science knowledge.
What's Next For QuickFlash
Some improvements to the software include features that would benefit people who have different studying styles or accessibility needs. For example, we believe that adding an option to print out your flashcards from QuickFlash could help those who have an easier time studying with physical objects rather than digitally. We would also like to increase accessibility through tailored text-to-speech reading of the questions, complete with voice input answer detection. Adding more communicative languages to our keyword extraction algorithm processing would also be amazing!
Lastly, we’d like to improve the accuracy of our backend question writer. We experimented with a few open source keyword extractors and found them to operate with varying degrees of success. Given more time and resource, we would be excited to develop a proprietary deep learning algorithm on, for example, textbook glossaries/indices.
On the business development side, a preliminary survey of Brown undergraduates indicated that 100% of students in all concentrations would be more likely to study with flashcards if they could skip the step of writing them manually. Thus we would like to increase our volume to meet the needs of 20 million university students nationwide.
Turning to younger demographics, we would like to partner with underperforming school districts to deliver individualized academic support without placing additional workload on teachers or financial burden on households. As children of immigrant parents, we are proud to offer a free educational experience that can be used in the absence of an instructor who already understands the reference material.
A shorter-term exit opportunity could be to integrate with existing companies such as Quizlet, who recently raised $30M and announced their intention to acquire ML and AI education software, making QuickFlash a worthwhile investment at its present early stage.
README
QuickFlash
Quickly generate flashcards from your notes!
About QuickFlash
QuickFlash is our innovative flashcard software that allows students to generate flashcards from their notes or textbooks just by simply pasting them in! Using rapid automatic keyword extraction (RAKE) and python automated term extraction (PyATE), we are able to find the most important parts of the notes for review via flashcards. We hope that QuickFlash will enable students to spend more time reviewing their notes and textbooks in a more fun and more efficient manner compared to traditional methods of just studying the text.
Features
Users can:
- Paste in a block of text and have it converted to a set of flashcards where our RAKE/PyATE algorithm has converted the text blob into usable flashcards.
- Download their flashcards for use in another study session.
- Upload previously-downloaded flashcards to use in a current study session.
- Create, modify, and delete flashcards.
Local Installation
QuickFlash requires Node.js and Python to run locally.
Starting the frontend (React) server:
cd frontend
npm i
npm start
Starting the backend (python) server:
pip3 install -r requirements.txt
flask run
TODO
- [ ] add more accessibility features, e.g. screen-reading and printing capabilities
- [ ] add integration with existing online study software, e.g. Quizlet, Anki
Log in or sign up for Devpost to join the conversation.