Inspiration

We were all first-time visitors to California for the CalHacks 12.0 hackathon at UC Berkeley. Even though our time was tight, we still wanted to explore the nearby area. With no prior knowledge of the local attractions or geography, planning a sensible trip (without retracing our steps) quickly became frustrating. That inspired us to build a tool that could help plan an efficient travel route automatically—just by specifying where you’re going and when.

What it does

WanderMind is an AI-powered travel planning app that transforms your destination and available time into a full itinerary. You input your location and dates, and it handles: selecting personalized attractions, optimizing the visiting order to reduce back-tracking, and visualizing the route on an interactive map. The result: you spend less time planning and more time enjoying the trip.

How we built it

We built WanderMind using a Next.js 14 frontend (React 18, Tailwind CSS, Framer Motion, React Leaflet) and a FastAPI backend in Python. We integrate with Claude 3.5 (from Anthropic) for natural-language understanding and itinerary generation. Geocoding and mapping rely on OpenStreetMap/Nominatim (via Geopy). We structure user inputs into JSON so Claude can output consistent, optimized routes, which the frontend then visualizes and allows you to refine via chat.

Challenges we ran into

While building the prototype in 24 hours, we faced several real world issues:

  • Session and data persistence: our initial version couldn’t save multiple planning sessions, so we had to redesign backend state handling.
  • Unreliable route numbering: the AI occasionally returned duplicated order values (like “1,2,1,2”), forcing us to build a validation & reindexing layer.
  • Limited input flexibility: our first version accepted only a single city; multi-city or loosely described trips would break, so we enhanced prompt logic and input parsing.
  • Route realism: for regions like China the ordering didn’t always reflect geography, so we added distance-based filtering and validation to ensure logical routes.
  • Fixed number of attractions: early tests always returned eight spots regardless of trip length; we adapted the logic so attraction count scales with duration and area.
  • UI/UX refinements: users needed a “Back to Start” button and clearer attraction previews before clicking, prompting us to enhance navigation and map interface.
  • Time pressure: integrating real APIs, debugging prompt JSON outputs, and polishing UX within a hackathon window was a major challenge—but also an extreme learning opportunity.

Accomplishments that we're proud of

  • Built a full stack prototype (frontend + backend + AI integration) in a single weekend.
  • Created a system that goes beyond static maps—it actually plans your trip by optimizing route and user preferences.
  • Seamlessly connected Claude’s reasoning with live map visualization and interactive UI.
  • Designed a clean, modern UI that makes travel planning feel conversational and enjoyable.

What we learned

  • How to craft effective prompts for an LLM (Claude) so that responses come in structured JSON form.
  • The value of combining natural language interfaces with spatial and temporal data for a truly conversational planning experience.
  • Techniques for managing asynchronous API calls (Python backend ↔ React frontend) and ensuring UI feels responsive.
  • Collaboration and rapid iteration under tight deadlines—prioritizing features, UI/UX, and stability.

What’s next for WanderMind

  • Support multi-city travel planning (e.g., LA → SF → Yosemite).
  • Add real-time data like weather, opening hours, and events to enrich itinerary relevance.
  • Implement user authentication and preference learning, so the system adapts to your travel style.
  • Enable group trip planning, combining multiple users’ interests into one shared route.
  • Deploy publicly via Vercel (frontend) + Render (backend) so everyone can try WanderMind online.

Built With

Share this project:

Updates