Trip Buddy — I built my friend a budget trip planner on an open-weight model
Description and use
Trip Buddy consolidates trip planning into a single form, leveraging open-weight models and open data to produce an optimized itinerary quickly.
Problem
Friends plan trips manually with many tabs and mental maps, making it hard to create a concise, budget‑aware itinerary.
Outcome
Trip Buddy delivers a fully grounded, budget‑aware itinerary in a single page, eliminating manual planning steps and reducing cost by using open‑weight models and open data.
Workflow
- 1. User submits start, destination, days, budget, and interests via a form.
- 2. Backend calls an open‑weight LLM (Llama 3.3 70B) to return structured JSON of transport, stays, and sights.
- 3. Destination is geocoded with OpenStreetMap Nominatim; out‑of‑range attractions are filtered.
- 4. optimize.js deterministically selects sights, clusters them into days with k‑means, routes each day with nearest‑neighbour + 2‑opt, and creates a timed schedule.
- 5. Frontend renders the itinerary on a Leaflet map with day‑colored routes.
- 6. User reviews and can adjust the plan if needed.
Evidence
Trip Buddy turns that into one form. Enter where you're starting, where you're going, how many days, a budget, and what you're into. You get: ...
The key decision: the LLM researches, plain code optimises.
I geocode the destination with Nominatim and drop any "attraction" more than 80 km away.
No npm dependencies: Node's built-in http and fetch, plus 7 unit tests with node:test.
- Record date: 2026-10-04T18:55:44.786Z