Inspiration
Many beautiful locations around the world go under the radar for travel and tourism. Sometimes, people just can't decide where to spend their vacation. This project aims to bring countries into the spotlight in a convenient and fun way.
What it does
TravelAmulet takes in a quiz from the user indicating preferences about a country. Using these preferences, the AI finds a country that best fits the user's preferences. The top 10 results are returned, allowing the user to view more information about each one, as well as an AI-generated explanation of how the country fits the preferences.
After choosing a country, top cities in the country are shown. After choosing a destination, flight prices and nearby hotels can be viewed.
How we built it
TravelAmulet uses TiDB Vector Search for picking the country based on the quiz preferences, and OpenAI's GPT-4o mini model to give an explanation of how the country fits.

Almost the entire application is powered by Next.js and hosted on Vercel, and the database is hosted on TiDB Serverless. The TiDB Vector Search is done on a separate Vercel project powered by Flask, which created the vector embeddings using LangChain, and the country results are saved using local storage. The user system uses NextAuth, the travel destinations and hotel options use Google Maps API, the flight prices use Amadeus API, and the country information is stored into TiDB Serverless from CountryWise Country API.
Challenges we ran into
Originally, we converted the quiz results into a single prompt for TiDB Vector Search to use, including every preference and the excluded continents and countries. Having so many subtle parameters confused the AI, returning countries that didn't match the quiz very well.
To fix this, we decided to use metadata filters for the vector search. Aspects of the countries that can be quantified, like tap water index, crime index, LGBTQ+ equality index, excluded countries, internet speed, etc. were made into metadata filters. The quiz preferences for quantifiable aspects filter out countries that don't pass predefined thresholds. The quiz preferences for non-quantifiable aspects are put into the vector search prompt, making it a lot shorter with less subtle instructions and returning more fitting countries. The full prompt is passed through local storage to be used by GPT-4o mini to give the explanation of how the country fits.
Accomplishments that we're proud of
By connecting to Google Maps API, we were able to create a simple way to find nearby hotels. Amadeus API also can find nearby airports to the chosen city and to your location, and find flights between these two airports to display the prices. This is very helpful for people wanting to see if trips will fit within their budgets, and to see where they can stay.
Additionally, seeing people excitedly use our web application and do the quiz, then be pleasantly surprised at the country results and its accuracy, kept us motivated to keep improving the application and its capabilities.
What we learned
This was our first time using React and Next.js, and this experience let us develop our skills in these frameworks and become more comfortable with component-based design and API calling. We also learned a lot about how vector search works, and how we can use this technology in future projects.
What's next for TravelAmulet
We have many more ideas and plans for developing TravelAmulet, such as refining the hotel system to include recommendations based on budget and preferences, pictures of the cities, pictures of the countries, more information for flights, support for more airports, and much more!
Home Page
Results Page
Hotels and Flights Page


Log in or sign up for Devpost to join the conversation.