Why I built Reverse Travel Planner
I’m a travelaholic. I love landing somewhere new — learning the culture, tasting the food, catching pieces of the language, and wandering until a place starts to feel alive. Trips to Hong Kong, Singapore, Bali, and Bhutan weren’t just checklists for me; they were absolute gems. Each one left me with that rare feeling of “I needed this, and I didn’t even know how to ask for it.”
I wanted to build something that helps other people find those kinds of places — not only the famous postcard cities, but destinations that fit their budget, time, energy, and vibe — so they can feel the same joy those trips gave me.
That’s when the idea clicked: most travel tools start with a destination. Real travelers often start with constraints and feelings:
I have ₹40k. I have 5 days. I don’t want visa stress. I want cafés, cool weather, and fewer crowds.
So the destination should be the output, not the input.
What inspired the product
The inspiration wasn’t “build another itinerary generator.” There are already plenty of those. The inspiration was personal:
- I’ve felt how transformative the right place at the right time can be.
- I’ve also felt how overwhelming planning is when you don’t already know where to go.
- I wanted a tool that recommends hidden-feeling matches with a clear why — like a travel friend who knows you, not a brochure.
That became Reverse Travel Planner: choose the experience; let the system find the place.
How I built it
I used Codex agentically (with GPT-5.6 for product judgment) to go from idea → architecture → working product quickly:
- Product framing — validated that reverse matching is the novel wedge, not day-by-day itinerary writing.
- Architecture — hybrid system:
- hard/soft constraints (budget, flight time, visa, weather)
- a Destination Genome (feature vectors for cafés, crowds, nature, walkability, etc.)
- LLM only for explanations, experience search, and itineraries
- Implementation
- Backend: FastAPI + ranking engine (
matcher.py) - Sample data: curated global destinations in
destinations.json - Frontend: React (Vite) product flow — form, matches, What If, compare, itinerary, Travel Twin
- Backend: FastAPI + ranking engine (
- Reliability — offline fallbacks so the demo works even without an LLM key
At a high level, a match score combines preference fit and constraint fit:
[ S = w_s S_{\text{style}} + w_b S_{\text{budget}} + w_v S_{\text{visa}} + w_f S_{\text{flight}} + w_w S_{\text{weather}} - P_{\text{avoid}} ]
where each (S) term is normalized and (P_{\text{avoid}}) penalizes things the traveler wants to skip (like crowds). The point isn’t fancy math — it’s that ranking stays inspectable in code, while the model explains it in plain language.
Accomplishments that I am proud of
- Reversed the travel funnel. I didn’t ship another “itinerary for Paris” tool — I built a system where constraints and feelings choose the destination.
- A real recommendation engine, not a prompt wrapper. Destination Genome + hybrid ranking in code, with clear ✅/❌ explainability for every match.
- A complete product loop in Build Week time. Experience search → ranked matches → What If → compare → itinerary / Concierge → Travel Twin + saved trips.
- Demo-reliable AI. Groq enriches explanations and itineraries, but offline fallbacks mean the product still works if the model is unavailable.
- Personal mission, shipped. The same joy from gems like Hong Kong, Singapore, Bali, and Bhutan — packaged into something others can actually use.
What I learned
- Novelty matters more than feature count. A beautiful itinerary for Paris is common. Helping someone discover where to go from constraints is rarer — and more useful.
- Explainability builds trust. People don’t just want a % match; they want ✅/❌ reasons they can argue with.
- LLMs are best as narrators, not oracles. If the model invents destinations, you get confident nonsense. If code ranks and the model explains, you get a product you can demo under pressure.
- Scope is a feature. Cutting live booking APIs let us finish a coherent experience: matching → why → What If → itinerary → learning profile.
- Agentic Codex is a multiplier when the problem is clear. Vertical slices (API + data + UI) moved faster than bolting AI onto a vague idea.
Challenges I faced
Avoiding “yet another travel GPT wrapper.”
Early on it was tempting to prompt an LLM for city names. I reworked the core into a genome + constraint engine so the idea stayed technically real.Making recommendations feel personal without real booking APIs.
I curated a Destination Genome dataset (costs, flights, visa, weather, attributes, hidden gems) so the demo is credible without Amadeus/Skyscanner wiring.Balancing magic with reliability.
Groq powers richer explanations and itineraries, but Build Week demos fail if the network blinks. Fallback explanations/itineraries were essential.Product completeness under time pressure.
Matching alone felt like a prototype. Adding What If, compare, itinerary/Concierge, and Travel Twin made it feel like a product people could actually use.
What's next for Travelling Tom
Travelling Tom is the next chapter of this idea — a travel companion that doesn’t just plan once, but grows with you.
Near term
- Expand the Destination Genome (more cities, seasons, local events)
- Deeper Travel Twin learning from ratings, saved places, and past trips
- Richer experience search (“Switzerland but cheaper,” “walkable autumn towns”)
- Shareable trip links and exportable itineraries
Medium term
- Live flight / hotel price signals (Amadeus, Skyscanner, Booking-style APIs)
- On-trip Concierge that rewrites the day when weather or energy changes
- Multi-traveler planning (friends, family, different budgets in one trip)
Long term
- A true travel twin: the more you wander, the better Tom knows whether you’ll love a misty hill town or a café-heavy city
- Helping more people discover personal gems — the way Hong Kong, Singapore, Bali, and Bhutan felt for me
Closing
I built Reverse Travel Planner (and the path toward Travelling Tom) because great trips changed me — and I want more people to find their own gems without needing to already know the destination.
If this helps even one person discover a place that feels as special as Bhutan or Bali felt to me, that’s the win.
Built With
- codex``
- fastapi
- javascript
- llm
- pydantic
- python
- react
- vite
Log in or sign up for Devpost to join the conversation.