-
-
System architecture — DeepSeek drafts the plan, SerpApi powers every transit leg, our validation engine keeps every spot honest.
-
The planner — cities, days, spots, lodging strategy and flight times, all on one page with a live comfort-pace counter.
-
The result — an hourly itinerary on a live map: real transit, real fares, real budgets, and honest warnings.
Inspiration
Budget backpackers in East Asia can pick cities — but stitching subway times, fares, and day splits is still a spreadsheet job. I wanted a planner that only uses public transit and shows a real clock.
What it does
AlonTrip plans 2–14 day trips across Japan, South Korea and China (9 cities). You pick up to 4 cities, 2–14 days, the spots you want, a lodging strategy, and your airports with landing/departure times.
One click, five steps: the backend splits days across cities, DeepSeek drafts a day-by-day plan (one LLM call per city, run in parallel), a deterministic validation layer checks and repairs the draft (spot IDs, opening hours, districts, capacity — or falls back to a rule-based planner), SerpApi's Google Maps Directions API powers every transit leg (real routes, transfers, fares — cached locally, each unique route paid once), and a schedule engine replays every day against real opening hours: lunch at noon, dinner at 18:00, a hard 22:00 cap, flight buffers (landing +90 min, takeoff −120 min).
The result is an hourly itinerary on a live map with real budgets — and spots that can't be visited are moved or honestly reported as warnings. No fantasy itineraries.
How we built it
Vue 3 + Leaflet frontend; FastAPI backend on an Alibaba Cloud ECS behind Nginx. POIs and hostels ship as local JSON so the app runs without keys (zero-key mode: rule-based planner + estimates). SerpApi responses are cached locally — and 178 real transit queries were even used to calibrate the planner's transit-time model. DeepSeek runs at temperature 0.2 with one automatic retry and three repair layers (id repair, poi-set repair, district repair).
Challenges
Getting an LLM to produce a verifiable plan was the hardest part: hallucinated spot IDs, impossible days, spots scheduled after closing. We solved it with three repair layers and a closing-time terminal check that replays every day — the LLM drafts, but deterministic code decides what ships.
Live app: https://alonuniverse.com/trip/ — GitHub: https://github.com/alon1997/alontrip
Built With
- deepseek
- fastapi
- leaflet.js
- python
- serpapi
- vue
Log in or sign up for Devpost to join the conversation.