-
-
Trip assistant
-
Recommended places with reasons
-
Recommended places with details (suggested time, opening hours, ticket, tips)
-
Ordered routes with Gemini3 power
-
Ordered routes with reasons and suggestions
-
Change departure time according to suggestions
-
Recalculated routes that can be realized
-
Estimated cost
-
Share function
-
Share to Google Calendar with routes details
-
Community function
-
Share to Google Maps to navigate
-
Recommendation function, and estimated hours function
Inspiration
Travel planning is full of "looks fine on a map" traps: a route might be short, but opening hours, realistic dwell time, and travel duration make the day impossible. Traditional planners give you a list of places—but when do you actually arrive? Will it be open? How long should you stay?
We wanted something that feels like talking to an assistant, but behaves like a planner—with explicit constraints, concrete places, and plans you can actually execute.
What it does
TripPilot transforms rough travel intent into a feasible, time-aware itinerary:
- Multimodal Input: Speak or type your travel ideas naturally ("2 days in Rome, I love museums and want to see night views")
- AI-Powered Itinerary Generation: Gemini converts free-form input into structured day-by-day plans with specific attractions
- Real-World Validation: The app fetches actual opening hours and calculates travel time between stops
- Constraint Detection: Gemini analyzes your itinerary and identifies conflicts (arriving after closing, insufficient time, etc.)
- Smart Suggestions: When issues arise, Gemini proposes actionable fixes—reorder stops, reduce stay time, or start earlier
- One-Click Export: Export directly to Google Maps navigation or Google Calendar
How we built it
- Frontend: Vite + React + TypeScript + Tailwind CSS
- AI Engine: Gemini 3 API with structured JSON output constraints
- Maps Integration: Google Maps Platform (Places API, Routes API, Maps JavaScript API)
- Cloud Backend: Firebase Authentication + Firestore for trip persistence
- Voice Processing: Gemini multimodal API for speech-to-text
- Deployment: Vercel with server-side Gemini proxy (API key protection)
Key Architecture Decision: We force Gemini to output strict JSON schemas, not free-form text. This means every AI suggestion is directly executable—"reorder: placeId1,placeId2,placeId3" or "reduce_stay: placeId, 30 minutes"—not vague advice.
Challenges we ran into
- Parsing Complex Opening Hours: Google Places returns nested arrays of time periods; handling edge cases (24-hour venues, holidays, multiple time slots) required careful normalization
- Constraint Reasoning: Getting Gemini to reason about multiple constraints simultaneously (travel time + opening hours + recommended stay) required a 3-step pipeline: Normalize → Detect → Decide
- Voice UX on Mobile: Implementing hold-to-talk with proper pointer capture, auto-stop after 25 seconds, and graceful error handling across browsers
Accomplishments that we're proud of
- Closed-Loop Planning: AI suggestion → apply change → recompute routes → compare outcomes—users see the improvement immediately
- 8+ Language Support: Full localization with locale-aware Gemini prompts (Chinese, Japanese, Korean, French, Spanish, German, etc.)
- Natural Voice Input: Hold-to-talk feels like a walkie-talkie, not clunky click-to-record interfaces
- Real Feasibility Checking: Not just "this looks good"—actual validation against venue hours and travel times
What we learned
- Prompting for structured JSON requires explicit schema constraints and examples
- Travel planning has many hidden constraints—opening hours alone are surprisingly complex
- Users want AI to propose changes, not silently apply them—transparency builds trust
What's next for TripPilot
Our vision: TripPilot as your AI travel companion—not just a planner, but a guide that stays with you throughout your journey.
Near-term roadmap:
- On-trip assistance: Real-time rerouting when plans change (missed bus, attraction closed unexpectedly)
- Proactive suggestions: "You have 2 hours before dinner—here's a café nearby with great reviews"
- Multi-day optimization: Automatically balance attraction density across days
Longer-term vision:
- Live voice guide: Speak to TripPilot while walking—"What's the history of this building?"
- Context-aware reminders: "Your museum reservation is in 30 minutes, start walking now"
- Post-trip memories: Auto-generate trip summaries with photos and highlights
Built With
- firebase
- firestore
- gemini
- google-maps
- node.js
- react
- tailwindcss
- typescript
- vercel
- vite
Log in or sign up for Devpost to join the conversation.