🧠 Inspiration

Most travel apps rely on filters and generic “top 10” lists that ignore personal taste. We wanted to close the gap between what people say they want and what they instinctively react to. TravelDNA was built to capture travel preferences through gut reactions, not forms.

✨ What it does

TravelDNA is a travel personality engine that learns your travel style from swiping on images. Users swipe through curated travel photos, and the system builds a curated profile that outputs:

  • A travel archetype

  • A personality description

  • 3 personalized destination recommendations along with their reasonings

⚙️ How we built it

We built the system in 24 hours using:

  • Next.js for the frontend swipe experience and ease of MVP creation

  • FastAPI in Python for backend processing APIs

  • OpenAI CLIP and Hugging Face Model here for image embeddings and preference scoring

  • Google Gemini for generating archetypes and recommendations

  • Vercel & Ngrok for deploying and hosting

  • Firebase for authentication and Firestore for our NoSQL database

Each swipe is converted into embeddings, mapped across five dimensions (Energy, Nature vs Urban, Nightlife, Luxury, Social Density), and aggregated into a user preference vector that powers final recommendations.

🚧 Challenges we ran into

  • Firestore schema complexity We had to understand Firestore’s non-relational structure and figure out how to properly map our user trips and swipe data into a flexible schema. This took time due to the nested and document-based design, but was critical for making the system scalable.

  • Designing the image-to-dimension workflow A major challenge was defining and implementing a reliable pipeline to convert raw image reactions into measurable preference dimensions. We had to carefully design how CLIP embeddings would map onto our five travel personality axes without oversimplifying user behavior.

🏆 Accomplishments that we’re proud of

  • Built a full end-to-end AI system in 24 hours

  • Successfully combined embeddings + LLM reasoning into one pipeline

  • Created a swipe-based UX that meaningfully captures preference data

  • Generated personalized, explainable travel recommendations

📚 What we learned

We learned that implicit feedback (like swipes) often produces richer data than explicit forms. We also learned how powerful embedding models like CLIP are for mapping subjective human preferences into structured vectors, especially when combined with LLM reasoning on top.

🚀 What’s next for TravelDNA

We’re expanding from destination discovery to full itinerary generation. Users will soon be able to swipe on activities (restaurants, tours, nightlife, etc.), allowing the system to build a complete day-by-day travel plan based on their travel DNA from where to go to exactly what to do there so that users can travel smarter.

Official Git Repository

Built With

Share this project:

Updates