An assistant hands you a wall of text that isn't a trip: no map, no days, no distances. Copy this text, paste it into that same conversation, and what it answers becomes a real trip here.
It's a single instruction. Nothing to install, and no account needed yet.
In the same conversation where you planned the trip: ChatGPT, Claude, whichever you use. It will reply with a code block.
Open the search bar and paste the whole block. You'll see which place was found for every stop before anything is created.
I want to move this trip into **Iterare**, an app that lays it out on a map with its calendar. Give it back to me in the JSON format described below, and reply with the JSON only: no explanation before or after.
## Rules you don't break
1. **Never include coordinates.** No `lat`, no `lng`, nothing like it. Each stop is located by `search` —the name of the place— plus `city` and `country`. OpenStreetMap places it, not your memory — make one up and the place lands miles away without anyone noticing.
2. **`city` and `country` go on every stop.** Without the country, "Córdoba" is either the Spanish one or the Argentinian one and **the geocoder picks, not you**: it has already dropped the Argentinian one into a trip around Andalusia. A name repeated inside one country fails the same way, and that is what `city` settles.
3. **Stops go in the order they're visited.** The first one each day is where you set off from.
4. **Only what you actually know.** If you don't know the date, leave it out; same for the departure time. A gap gets filled in; an invented time gets believed and planned on top of.
5. **The JSON goes whole, in a code block.** In one piece and never trimmed: even if a single stop changes, hand back the complete thing — a fragment can't be pasted anywhere.
6. **Never defer the JSON.** Every message where you propose or change the plan **ends with the complete JSON block**. Don't ask whether I want it, don't say "tell me and I'll hand it over", don't save it for the end of the conversation: without the block the plan stays in the chat and never reaches the map.
## The format
- `trip` — the trip: `name`, plus `startDate`/`endDate` as YYYY-MM-DD if known. Optional.
- `routes` — one entry **per day**. Each carries `route` and `stops` as siblings.
- `route.name` — what the day is called. Always set it, and make it say what the day is: "Lagos de Covadonga", "Driving through Los Oscos".
- `route.date` — YYYY-MM-DD. With no date the day comes in as a proposal and takes no slot in the calendar.
- `route.departureTime` — HH:MM you set off. Without it there are no arrival times, only durations: the app never invents one.
- `stops` — the day's stops, in order:
- `search` *(required)* — the name of the place, to look up in OpenStreetMap.
- `city` *(required)* — the town, city or region it sits in ("Torla, Huesca").
- `country` *(required)* — the country ("Spain"). The three together are the only thing that places the stop.
- `name` — what to call it in the trip, if you want a different name than the map's.
- `type` — one of: ciudad, senderismo, mirador, restaurante, hotel, monumento, playa, parque, area-recreativa, parking, banos, otro. The mountain one is `senderismo`; use `otro` if none fits.
- `mode` — how you get **here from the previous stop**. It belongs to the leg, not the day: a real day is driving to the car park and walking the trail. The first stop doesn't take one.
- Routed for you: driving, walking, cycling.
- They carry you, and they run to a timetable: cable_car, train, bus, boat, plane.
- `durationMin` — minutes spent at this stop.
- `travelDepartureTime` and `travelMin` — **only on timetabled legs** (cable_car, train, bus, boat, plane): when it leaves and how long it takes. Driving, walking and cycling are computed by the map, and anything you put here is dropped.
- `notes` — what you need to know about this place that the map doesn't show: it fills up early, it needs booking, the last descent is at 18:00.
- `checklist` — what you **do** or **carry** here. What you **decide** or look up goes in `notes`.
**The same place can repeat** within a day: leaving the car at the car park, walking up to the lake and coming back for it is three stops, and all three get written.
## Example
```json
{
"iterare": 2,
"trip": {
"name": "Picos de Europa",
"startDate": "2026-09-12",
"endDate": "2026-09-14"
},
"routes": [
{
"route": { "name": "Lagos de Covadonga", "date": "2026-09-13", "departureTime": "08:30" },
"stops": [
{ "search": "Aparcamiento de Buferrera", "city": "Cangas de Onís", "country": "España", "type": "parking" },
{
"search": "Lago Ercina",
"city": "Cangas de Onís",
"country": "España",
"type": "senderismo",
"mode": "walking",
"durationMin": 120,
"notes": "El acceso en coche se cierra en temporada alta: hay lanzadera desde Cangas.",
"checklist": ["Agua", "Cortavientos"]
},
{ "search": "Aparcamiento de Buferrera", "city": "Cangas de Onís", "country": "España", "type": "parking", "mode": "walking" }
]
},
{
"route": { "name": "Ruta del Cares", "date": "2026-09-14", "departureTime": "09:00" },
"stops": [
{ "search": "Poncebos", "city": "Cabrales", "country": "España", "type": "parking" },
{
"search": "Caín de Valdeón",
"city": "León",
"country": "España",
"type": "senderismo",
"mode": "walking",
"durationMin": 60
},
{
"search": "Poncebos",
"city": "Cabrales",
"country": "España",
"type": "parking",
"mode": "bus",
"travelDepartureTime": "17:40",
"travelMin": 75
}
]
}
]
}
```
---
**That JSON block is the point of this conversation.** Everything else —what I tell you, what we discuss, what we change— exists to get there. If you're ever unsure whether it's time to hand it over: it is.It doesn't accept coordinates from the assistant. A model will invent a lat/lng without blinking and drop the lake forty kilometres away — a believable wrong number is worse than a gap. Every stop is looked up in OpenStreetMap in front of you, and anything not found stays out rather than landing on an approximate point.