How it works
Four stages, and the honest bit at the end
There is no large language model in this. Nothing here is generated prose dressed up as local knowledge — it is a database with dates on it and a planner that refuses to print anything it cannot stand behind.
-
Stage 1
The candidate set
We pull everything within a few kilometres of where you are sleeping — museums, galleries, landmarks, viewpoints, parks, markets, restaurants, cafés, bars, clubs, live venues, cinemas, saunas and pools — capped per category so that Berlin's four and a half thousand restaurants cannot crowd its two hundred and fifty museums out of the shortlist. That capping is not a detail: without it the planner literally never sees a museum.
-
Stage 2
Admissibility — the hard filters
Each candidate has to survive all of these, for your actual dates:
- Dated closures — renovations, seasonal shutdowns, private hire
- Opening hours for that weekday, not for a typical week
- Berlin's Sunday and public-holiday shop closing law
- Minimum age, against who is in your party
- Step-free access, if you said it matters
- Your budget band
- Advance-booking windows — the Reichstag dome needs two days
A place with no hours recorded anywhere is allowed through with a warning. A place with hours for other days but none for yours is closed, and those are two completely different things. Conflating them is the single most common bug in this category of software, and it makes a Monday itinerary identical to a Tuesday one.
-
Stage 3
Scoring
What survives is scored on how well it matches the interests you picked, how much review weight stands behind it, whether it is indoors when rain is likely, variety across the day, how far it is from your previous stop, and how recently we verified it. Chain outlets and places whose entire trade is monument footfall are penalised.
Every contribution is bounded and weighted, which is why each stop on your itinerary can tell you why it is there. An itinerary you cannot argue with is one you cannot trust.
-
Stage 4
Routing and feasibility
The day is assembled stop by stop around meal anchors. Each insertion is re-validated at the clock time it would actually occupy — a gallery that passes the afternoon check can still fail at 09:40 — and travel time between stops is estimated pessimistically, because a plan that under-estimates travel is not a plan. A real gap is left between things, scaled to the pace you chose.
If you asked for clubbing, a night slot is placed after the day ends, because a Berlin club opening at 23:00 cannot fit inside a day that finishes at ten.
-
And then
We show you what we threw away
Every itinerary comes with its rejections, grouped by reason. Two hundred and seventy places "closed on Mondays" is not an error message — it is the most useful thing on the page, and it is the one thing no guidebook, blog or chatbot can produce, because none of them ever had the dates in front of them.
What it costs
Building an itinerary is free, and you can read the first day in full. €10, once, unlocks every other day, the calendar file, the print layout, and 24/7 WhatsApp access to a concierge in Berlin for the length of your stay. No subscription, no account, no email required — the trip lives at its own private URL.
Where the data comes from
Places and opening hours from OpenStreetMap, under the ODbL. Public holidays and district boundaries from Berlin's open data portal. Weather from Open-Meteo. Door policies, queue reality, closures and the legal modules are written and verified by hand, because they do not exist in any machine-readable form anywhere.
Every row carries the date we last checked it, and rules carry a review date. You can see how fresh all of it is — including what is overdue.
Plan my trip