Inspiration
Every student has experienced this: you spend hours reading articles, documentation, blog posts, and tutorials online and you understand everything in the moment, but weeks later, when you actually need that knowledge, it’s gone. The internet is full of information, but it doesn’t help with retention. We bookmark pages, open dozens of tabs, and save links, but we rarely revisit them effectively.
We were inspired by the concept of active recall - the scientifically proven learning method where testing yourself strengthens memory far more than passive rereading. However, there isn’t a tool that automatically converts the content you casually consume online into personalized recall practice, especially in a way that also helps you articulate what you’ve learned.
That’s when we asked: What if your browsing history could become your personal revision tutor?
Instead of relying on generic AI-generated questions, we built a system that generates practice questions based on what you actually read in the past. Users can answer by marking in MCQs or by recording their voice, and receive scores and feedback.
By combining webpage scraping, vector embeddings, AI-powered question generation, and speech analysis, we created a personalized knowledge refresh system.
Our goal is simple: Turn passive browsing into active learning and help students and professionals retain knowledge and communicate it with confidence.
What it does
Recall turns the content you read online into a personalized practice and revision system.
Using a Chrome extension, users can scrape webpages they’ve read. The content is processed into vector embeddings and stored in MongoDB Atlas, creating a searchable personal knowledge base.
On the web app, users can chat with their knowledge base and enter prompts like “Quiz me on Python” The system performs similarity search on the stored embeddings to retrieve relevant content and uses the Gemini API to generate questions based on what the user has previously read.
Recall offers two practice modes:
Text Mode: Users receive multiple-choice quiz questions one by one and get a final score after completing the set.
Voice Mode: Users answer questions verbally by recording their audio. ElevenLabs is used for speech-to-text conversion. The system then evaluates the response and provides two types of feedback:
Speaking Feedback - how you spoke, including clarity, pace, and pauses.
Overall Articulation Score - an assessment of your overall delivery and communication effectiveness, with suggestions for improvement.
By combining retrieval-based AI, active recall, and communication feedback, Recall helps users strengthen both their knowledge retention and their ability to confidently explain what they’ve learned.
How we built it
We built Recall as a system that combines browser automation, vector search, and AI-powered evaluation.
First, we developed a Chrome extension that scrapes webpage content as users browse. The extracted text, as paragraph chunks, is processed into vector embeddings and stored in our vector database, MongoDB Atlas, allowing us to create a personalized, searchable knowledge base for each user.
On the web application side, we built a Next.js frontend with a clean chat and practice interface. When a user enters a query such as “Quiz me on JavaScript,” the fastAPI backend performs cosine similarity search on the stored embeddings to retrieve the most relevant content. This retrieved content is then sent to the Gemini API, which generates grounded practice questions based on what the user has previously read.
For Text-mode practice, The Gemini API generates practice questions in the form of MCQs and True/False based on what the user asks and the user is given a score after he answers all the questions. For voice-mode practice, we integrated ElevenLabs to convert recorded speech into text. The transcribed response is evaluated using 2 methods, one for analyzing the flow of speech of the user. ElevenLabs returns transcripts and timestamps of each word and then we calculate pause length or gaps between words, which is then compared with a threshold value like 1.5 seconds. If the pause exceeds this value, the user gets feedback that he is hesitating and flow of speech is not good. Another method to analyze both conceptual correctness and communication quality, where Gemini generates a structured feedback across content accuracy and speaking performance.
By combining Chrome extension scraping, MongoDB Atlas vector search, Gemini for question generation and grading, and ElevenLabs for speech processing, we created a seamless end-to-end system that transforms passive reading into active recall and communication training.
Challenges we ran into
One of the bigger challenges we faced was deciding how to evaluate voice responses in a way that felt fair and transparent.
We knew that ElevenLabs could provide useful speech data such as the transcript, total speaking time, and pause duration. We also knew that Gemini could evaluate the conceptual correctness of the answer and provide detailed feedback.
Initially, we struggled with questions like: How much should pauses affect the score? Should clarity matter more than correctness? We didn’t want to blindly combine everything into a single AI-generated score, and we didn’t want the evaluation to feel random or unclear to the user.
So instead of merging everything into one number, we designed the system to provide separate feedback. One part focuses on how you spoke, including measurable insights like pauses and pacing, clearly explained to the user. The other part focuses on the content of your answer, where Gemini provides an evaluation and detailed explanation of strengths and gaps.
By separating these feedback streams, we made the evaluation more transparent and easier to understand, while still leveraging AI effectively.
Accomplishments that we're proud of
One accomplishment we’re especially proud of is successfully building a reliable end-to-end knowledge pipeline. We were able to accurately scrape full webpages, extract meaningful paragraph-level content, and convert it into structured vector embeddings stored in MongoDB Atlas.
Instead of sending entire pages to the AI, we implemented cosine similarity search to retrieve only the most relevant chunks based on the user’s query. For each request, we currently select the top three most relevant chunks and use them as context for question generation.
This ensured that the AI responses were grounded in the user’s actual browsing history, making the generated questions more accurate, personalized, and context-aware rather than generic.
Building this focused retrieval system was a key milestone because it allowed us to control the quality of AI output and maintain relevance throughout the experience.
What we learned
One of our biggest learnings was implementing a full RAG pipeline for the first time. We understood the concept of retrieval-augmented generation before, but building it end-to-end, from scraping content, chunking it meaningfully, generating embeddings, and performing cosine similarity search, helped us truly understand how powerful and sensitive retrieval quality is. The relevance of the top chunks directly affected how accurate and grounded the AI’s output was.
We also worked with tools like ElevenLabs and MongoDB Atlas at a deeper level than we had before. While we had some prior experience with MongoDB, using Atlas for vector storage and similarity search was new to us, and it gave us hands-on experience with scalable vector databases. Integrating ElevenLabs for speech-to-text and analyzing pause patterns was also something we explored for the first time, which pushed us to think about evaluation beyond just text correctness.
Overall, this project helped us better understand how to combine multiple AI systems into one cohesive product, balancing retrieval, generation, speech processing, and user experience into a single seamless flow.
What's next for Recall
In the future, we plan to improve our web scraping system to make content extraction more reliable across different types of websites. Better scraping will lead to cleaner chunks and more accurate question generation.
We also aim to deploy Recall as a public platform where users can securely log in and manage their personal knowledge base over time.
Additionally, we want to further refine the voice feedback system to make speech analysis clearer and more helpful for users.
Our long-term goal is to evolve Recall into a scalable learning companion that supports continuous growth and retention.
Built With
- elevenlabs
- express.js
- fastapi
- gemini
- huggingface
- mongodbatlas
- next.js
- node.js
- python
- typescript
Log in or sign up for Devpost to join the conversation.