Inspiration
Whenever I wanted to go out, my parents always made me compile of list of places we would go to for vacation. I would research for a day, but would eventually get exhausted and stop, and as a result, I would never get to go on vacation/out in general to the places that I actually liked. So, I decided to build a entertainment app recommender to make the process easier for myself, and to also locate places near me according to my preferences. This would allow me to effectively complete my research without burning myself out, and would also help me get details on each specific place that I was researching about.
What it does
My entertainment app recommender takes into account the user's preferences, options, style of entertainment, and location in order to provide them with a list of places that align with their interests, and are nearby. The app also includes an AI chatbot that the user can chat to in order to obtain more information about the place, and answer any questions that they have about the place. In order to save their preferences, the user creates a profile with all their preferences, and then chooses the button 'use this profile' if they want to use it. If the user wants to reset their preferences, they can delete their profile, and then create a new one. If they want to have two separate profiles, they can choose to log out of one, and log in to the other.
How we built it
I built the frontend using streamlit, folium, and python with some components of HTML and CSS. The backend was fully using python, a JSON storage, and a session state. For the APIs, I used Qloo's Taste AI, Google Places API, and OpenWeatherMap API.
Challenges we ran into
The first challenge was integrating the Google Places API. I didn't have the authorization to use the Google Places API, which made me debug for a lot of time. The second issue was that I didn't have the correct endpoint for the Qloo recommendation. This proved to be a difficult task, as I spent a lot of time configuring this. The last problem was integrating the LLM chatbot. I had a specific design/feature in mind for the LLM, but every time I tried coding it, it didn't fit the aesthetic/position that I wanted it to be. It took alot of trial and error for the LLM to finally be positioned and designed the way I wanted it to be.
Accomplishments that we're proud of
I'm proud that I was able to use streamlit for the first time in the frontend, and that I was able to integrate the GooglePlaces API. I was also proud of using Qloo, as I have never used the API before. Although it took a lot of time and effort, I was finally able to use the API to fuel the recommendations for the places. I was also proud of using Bedrock API. I previously tried using OpenAI for the chatbot, but it was buggy(the API key wasn't working because it said that I didn't have enough credits, but I didn't even use a single credit). This was very frustrating, but I then transitioned to Bedrock API, and using Claude Haiku, I was finally able to finish completing the chatbot.
What we learned
I learned how to use Qloo API for projects, and integrating it with several other APIs including OpenWeatherAPI, Bedrock API, and Google Places API. This was also my first time using streamlit to run the frontend, as previously, I had only used Flask.
What's next for ELocate
I'm also thinking of creating a feature in which the user can find the quickest route to their place of destination(by using Google Maps API, it would show them the quickest route there). I'm also thinking of adding a preference/feature in which the user can choose if they are solo, in a small group, or in a large group, and filter places based on how many people they can accommodate.
Built With
- bedrockapi
- css
- folium
- google-places
- html
- jsonstorage
- openweathermapapi
- plotly
- python
- qlootasteapi
- streamlit
Log in or sign up for Devpost to join the conversation.