Inspiration

We've all had the issue where you're looking for something super specific on a website with ctrl+f but you either can't remember the exact word or you happened to misspell it. Instead of spending extra time tracing your thoughts back to the precise phrasing, we wanted a way to be able to think in ideas so they can spend more time where they really want-- learning!

What it does

When users want to search for a term or concept, they can trigger the ctrl++ Chrome extension and use it like they'd normally use the ctrl+f search function. No worries if the user forgot the exact word or misspelled it, our application will highlight relevant and semantically similar terms and even search for relevant images to their query. Arrow buttons allow users to quickly jump through each highlighted result. In addition, ctrl++ lets users save links to the current webpage into folders for future reference so they can organize their workspace without cluttered tabs. Through our companion web app, users can view their saved folders along with AI-generated summaries of each link, making future research faster and easier.

How we built it

We started by defining the MVP: a Chrome extension that accepts natural language queries, provides "next" and "previous" jump buttons, and highlights relevant text. On the backend, we built a Python server that uses embedding models to semantically identify and return related words.

The team split into two groups: frontend focused on building the Chrome extension UI and highlighting mechanism, while backend worked on API endpoints for semantic search. After the MVP, we added the ability to include relevant images in search results.

We then decided to allow users to save webpages for future research. Using MongoDB, we stored links in user-created folders and added a feature to the extension to save pages with one click. The backend generates summaries for each saved link, which users can view on a web app alongside their folders.

Challenges we ran into

We ran into several challenges, especially during the development of the Chrome extension. From the start, we encountered numerous bugs, particularly with the manifest and content.js, which caused issues when injecting results into the page. Working in parallel added its own hurdles, as small fluctuations in these key files led to frequent merge conflicts, slowing down our progress.

Connecting the backend to the frontend also proved more difficult than anticipated. Additionally, we were integrating MongoDB for storing saved links and implementing OAuth for user authentication. Many of these technologies were new to us, and using them together was an entirely new experience, making it more complex to integrate all our work seamlessly.

Ultimately, the combination of bugs, integration challenges, and the need to rapidly learn new tools and frameworks put our teamwork and communication to the test. However, these obstacles also pushed us to adapt and grow, leaving us with a much stronger understanding of the technologies we used for the project than when we'd entered.

Accomplishments that we're proud of

We’re proud of how efficiently we managed our time throughout the project. We finished the MVP on schedule, which gave us the opportunity to implement additional functionalities like highlighting images and saving links — features that added significant value to the project.

Another accomplishment we’re proud of is how well we worked as a team, always helping each other overcome challenges. Our successful integration of semantic search for both text and images was a major milestone. We were able to create a tool that genuinely addresses real-world research needs, making it easier to find relevant information across webpages in a meaningful way.

What we learned

Before this project, none of us had built a Chrome extension, let alone integrated it with a full-stack application. We also hadn’t worked with OAuth and MongoDB Atlas within a Chrome extension before, especially while integrating AI models for semantic search. This project taught us how to connect all these technologies — from frontend to backend — and how to manage complex integrations effectively. We learned how to handle real-time data processing, improve our collaboration skills, and adapt quickly to new tools and frameworks.

What's next for ctrl++

In the future, we plan to make the folder of saved links collaborative, allowing multiple users to contribute and share resources. We also aim to expand the extension’s capabilities to support PDFs and videos, enabling semantic searches across a wider range of content. Additionally, we’re considering creating a customized search engine that prioritizes results from specific webpages, further tailoring the user experience for research purposes.

Share this project:

Updates