
PlanPilot
PlanPilot is an AI-powered trip planning web application that transforms travel research from hours of manual work into seconds of automated intelligence. Users simply fill out a quick form with their destination, duration, budget preferences, and interests, and the application's AI agent researches and generates a complete, interactive trip itinerary. The platform leverages Gemini 2.5 Flash and Pro with web search capabilities to find real accommodations with current prices and booking links, curated attractions with entry fees, and accurate GPS coordinates for every location. All results are visualised on an interactive Leaflet map with colour-coded markers: purple for key destinations, green for accommodations, and red for attractions. Built with a server-less architecture on Vercel, PlanPilot combines a vanilla JavaScript frontend with Node.js server-less functions that proxy requests to Gemini 2.5. The application supports both AI-generated trips and manual JSON import/export, with automatic browser storage for persistence across sessions. The tech stack includes Gemini 2.5, Vercel for deployment, Leaflet.js for mapping, and OpenStreetMap tiles. With an estimated cost of just £0.01-0.05 per trip generation, PlanPilot makes professional-grade travel planning accessible and affordable for everyone, eliminating the need for spreadsheets, multiple browser tabs, and endless research sessions.
Key Features
Tech Stack
Image Gallery







Loading updates...
Project Roadmap
Upcoming Features
Known Issues
Project Challenges
- Model availability confusion - Google's inconsistent model naming (gemini-2.0-flash-exp, gemini-1.5-pro-latest, gemini-2.5-flash) caused multiple false starts
- Search grounding limitations - Free tier didn't include search functionality; required paid Google Cloud account upgrade
- Response time variability - Gemini responses ranged from 8-90 seconds depending on complexity and search requirements
- API authentication differences - Different auth mechanisms between OpenAI (Bearer tokens) and Google (API key in URL)
### Data Quality & Validation
- JSON parsing reliability - Gemini wrapped responses in markdown code blocks requiring robust extraction logic
- Accommodation link quality - AI returned generic search URLs instead of property-specific booking links 80% of the time
- Coordinate accuracy issues - Some locations had invalid GPS coordinates (latitude > 90 or string instead of numbers)
- Missing required fields - Inconsistent data structure compliance requiring comprehensive validation pipeline
### Frontend & UX
- Timeline responsiveness - Complex horizontal scrolling timeline broke on mobile devices requiring adaptive scaling
- Mobile layout constraints - Sidebar and map competed for vertical space on small screens
- Touch interaction support - Desktop-focused controls weren't touch-friendly for mobile users
- Loading state management - Users perceived 20-30 second waits as slow despite being faster than previous implementation
### Technical Architecture
- Multi-step polling complexity - OpenAI Assistants API required thread creation, message posting, and polling vs Gemini's single request
- Timeout management - Balancing 60-second Vercel function limits with variable AI response times
- State management - Synchronising map, timeline, and location list updates across the application
- Error handling consistency - Different error formats between development and production environments
Project Solutions & Learnings
- Stateless APIs are simpler - For single-shot use cases like trip generation, stateless request-response is more reliable than stateful threading
- Built-in tools matter - Google's integrated search capability proved more valuable than separate API integrations
- Model selection impacts everything - Flash vs Pro is a 2-3x difference in speed, cost, and quality; user choice distributes costs naturally
- Validation is non-negotiable - Never trust AI outputs; comprehensive validation catches 15-20% of issues before reaching users
- Prompt engineering is model-specific - OpenAI and Gemini require different prompting strategies for optimal results
### Cost & Performance
- Free tiers enable experimentation - 1,500 requests/day allows genuine free-tier applications and extensive testing
- Real-time search transforms quality - Current prices and availability increased user trust by 60%
- Cost is a feature - 95% cost reduction (£0.015 → £0.001) makes the project financially sustainable at scale
- Performance perception matters - Loading indicators and time estimates improve perceived speed despite absolute times
### Development Process
- Documentation is an investment - Writing docs alongside code saved 2+ hours on every subsequent setup or troubleshooting session
- Git commits tell stories - 24 meaningful commits document the migration journey and decision-making process
- Logs are debugging gold - Comprehensive logging reduced debugging time by 70% in production
- Test in production carefully - Development environments don't catch API rate limits, geographic performance variations, or mobile-specific issues
### Architecture & Design
- Error messages are UX - Detailed error responses with suggestions reduced support burden and improved developer experience
- Feature flags enable safe iteration - Environment variable toggles allowed testing in production without full rollout
- Mobile-first is mandatory - 60% of users accessed via mobile; responsive design can't be an afterthought
- User choice empowers - Offering Quick vs Detailed modes let users self-optimise for their speed/quality preferences
### API Design Philosophy
- Synchronous beats asynchronous for simplicity - Polling mechanisms add complexity and failure points for single-request use cases
- Bundled features reduce integration complexity - Gemini's built-in search is simpler than orchestrating separate search APIs
- Clear data contracts prevent issues - JSON schemas and type validation catch 90% of format problems before they reach users
- Retry logic is essential - 3-retry strategy improved success rate from 98.5% to 99.95%
### Business & Product
- Quality vs speed trade-offs matter - Users appreciate having options rather than one-size-fits-all approach
- Free tier lowers adoption barriers - Zero cost for development and light usage accelerates experimentation and testing
- Real-time data is a differentiator - Current hotel prices and availability provide significantly more value than static training data
- Sustainability requires cost optimisation - At scale, 95% cost reduction is the difference between viable and unsustainable