🧠 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.
Built With
- clip
- fastapi
- firebase
- firestore
- gemini
- huggingface
- next.js
- ngrok
- openai
- python
- react
- tailwind
- typescript
- unsplashapi
- uvicorn
- vercel
Log in or sign up for Devpost to join the conversation.