Inspiration
Have you ever found yourself drowning in a sea of browser tabs while planning a trip, feeling overwhelmed by the paradox of choice? Our app aims to solve this - we aimed to simplify and humanize the process of trip planning. Imagine having a conversation with a knowledgeable friend who can effortlessly guide you through the maze of options. That's the experience our app offers. It's designed to make gathering information about potential destinations as natural and stress-free as chatting with a person.
What it does
Our browser extension transforms your trip planning experience in Chrome by smartly managing the multitude of tabs you have open. It values the user’s privacy by only accessing whitelisted tabs. The extension intelligently parses the HTML information from these tabs and injects it into an AI assistant powered by GPT-3.5. This creates a virtual travel advisor who is happy to help you out with planning your trip. Additionally, it organizes your tabs into easy-to-navigate groups, so you can swiftly access the information you need. With our extension, planning your trip becomes as simple and interactive as having a conversation.
How we built it
We built the frontend using React - it is a robust and powerful framework and was a great fit for the UI we were going for. It also helped that most of us were familiar with it, which streamlined our development process and allowed us to focus on innovation and design. We also used flask to build the backend API which integrated nicely with the python code that was used to manage the language models. Finally, we used firebase for user authentication and permanent data storage.
The language models were programmed using langchain, an open source framework for working with llms. The framework was crucial to our project because it did the heavy lifting for creating embeddings and a vectorstore that our assistant could access quickly, accurately, and swiftly. We also used a language model as an HTML parser to produce the structured JSON objects to inject into the assistant, which worked really well with langchain output parsers.
Challenges we ran into
The first challenge we had was extracting data from the websites that were currently open, the HTML format was wildly inconsistent. We tried a few solutions, like stripping away all html syntax, however, what worked best was using a separate language model to parse through the html and structure the extracted data in a json.
We also had a problem with parsing html files quickly, the api calls to openAI were really slow and it could take up to a few minutes to get all the tabs ready to go. This was a challenge because the basic API calls didn’t support concurrency, however, chains in the langchain framework were inherently asynchronous, which allowed us to make more calls faster.
Lastly, we had an issue with integrating firebase into our hack. Not much documentation is written for it in python, so we opted to implement it in javascript. We solved this by implementing an extra rest api using express to communicate with the database.
What we learned
How to use language models and communicate with them effectively, enhancing their power even more.
We also learned modularity in teamwork and how effective it can be. We divided tasks very well and only had 1 merge conflict.
What’s next for Tabventure
- Generalize our extension outside of travel and make it a general web assistant.
- Migrate our services to the cloud, including the model deployment, embeddings, and data storage
- Make the model be able to recognize patterns and improve its embeddings
Built With
- firebase
- flask
- javascript
- langchain
- python
- react
Log in or sign up for Devpost to join the conversation.