About Our Project
Inspiration
Every website today has its own siloed recommendation system, but there’s nothing that connects user interests across the vast resources available on the internet. We wanted to change that. Our goal was to give users the full experience of the internet, making it easier for them to discover content that aligns with their passions and curiosities, no matter where it’s hosted.
What We Learned
Working on this project gave us a deeper understanding of how web extensions function and how to effectively use user history for personalised recommendations. We explored the IRIS database systems for efficient vector search and realised the significance of balancing user privacy with a seamless content discovery experience. One of our most eye-opening revelations was just how vast and untapped the internet's content is—there is so much valuable information that remains unseen by a large portion of users.
How We Built It
Our project is built upon a modular and flexible architecture, consisting of three core components: the frontend, backend, and a data handling layer that leverages advanced search and recommendation techniques.
Frontend: The user interface was developed using SvelteKit, chosen for its efficient and fast rendering capabilities. We focused on making the user experience as smooth as possible, with TailwindCSS providing a clean and responsive design. The frontend handles interactions, settings, and displays the content recommendations in a user-friendly manner.
Backend: We built the backend using Flask, a lightweight yet powerful framework that allowed us to handle API requests, manage user sessions, and coordinate with our recommendation engine. The backend is also responsible for securely transmitting user data, while maintaining a clear separation between the extension’s operations and the data processing components.
Database and Vector Search: Our recommendation engine relies heavily on the IRIS database system for storing and searching user history data. IRIS excels at vector-based search, which is crucial for identifying patterns in user behaviour and matching content from the web. Setting up IRIS involved careful configuration to optimise query speeds and ensure accurate content matching.
Content Discovery and Models: To scour the internet and find relevant content, we employed multiple Large Language Models (LLMs) and custom-built algorithms. These models analyse content trends and user preferences, refining the recommendations over time. This required integrating our models with real-time data processing, ensuring our system could handle the scale and complexity of web content.
Challenges We Faced
During this project, we faced numerous challenges, each of which required significant time and effort to overcome:
User Data Access: Although Chrome extensions provide a way to monitor user activity, accessing and using this data comes with strict restrictions from Google. We had to navigate complex privacy guidelines and restrictions, finding ways to access necessary data while fully respecting user privacy. Understanding and resolving these limitations took considerable time and required innovative workarounds to ensure compliance without compromising functionality.
IRIS Database: None of our team members had prior experience with the IRIS database system, which made it difficult to implement efficiently. We had to dive deep into IRIS’s documentation, troubleshoot performance issues, and experiment with different data indexing methods. It was a steep learning curve, and optimising IRIS to support our use case was one of our most time-consuming tasks.
System Integration: The project had many moving parts, from the SvelteKit frontend to the Flask backend, the IRIS database, and the multiple LLMs used for recommendations. Each team member worked on different parts independently, which made integration challenging. Coordinating these components into a cohesive and efficient system required significant effort, from synchronising APIs to debugging data flow and ensuring all parts communicated seamlessly. The complexity of managing and merging these modules highlighted the importance of clear communication and collaborative troubleshooting within our team.
Despite the hurdles, this project has been an incredible learning experience, allowing us to push our technical boundaries and deliver a robust, privacy-conscious recommendation tool.
Log in or sign up for Devpost to join the conversation.