plan it before you are standing in it.
planning a trip generates decisions faster than anywhere sensible to keep them. four hotel options, two routes, a budget that exists as a sum in someone’s head, and a list of things you might do that is spread across eleven browser tabs.
a spreadsheet handles the numbers and nothing else. a group chat handles the discussion and loses everything.
a planning page holds the shape of the trip while it is still changing: what is decided, what is not, what it costs so far, and what you are choosing between.
the messy middle of a trip.
01 / what it isthis is the document for the six weeks before you go, when nothing is settled. it holds options rather than answers — three places to stay, with prices, and the fact that you have not decided — which is the state a spreadsheet models badly and a chat thread loses entirely.
when everything is booked, the useful page is a different one: the itinerary you send everyone, where the content is in the page so the whole group reads the same thing. this one is yours, in your browser, and it is where the arguing happens.
- the trip broken into legs or days, however it is shaped
- decided and undecided kept visibly apart
- options side by side, with what each would cost
- a running budget that updates as things are decided
- a list of what still needs booking, in order of urgency
- export and import as json
- what it holds
- legs, options, costs, what is booked, what is outstanding
- where that goes
- localStorage in one browser. planning notes are not shared by the url
- the budget
- arithmetic on the numbers you enter. no currency conversion or live prices
- afterwards
- when it is booked, the itinerary recipe is the one you send people
see one in action.
02 / examplea two-week trip in planning: three legs, four undecided choices, and a running budget
the live example is still being built — the prompt below is the one it was made with.
copy this, then make it yours.
03 / starting prompta starting point, not a template — the point of an agent is that the result is yours. change the sections to match what you want, and remove anything you don’t need.
Build me a trip planning page as a single web page. This is for while the trip is still being decided, not the final itinerary.
Ask me first:
- Where I am going, roughly when, and for how long.
- Who is travelling.
- How the trip breaks up — legs, cities, days, or something else.
- Whether I want a budget tracked, and in which currency.
- What is already decided and what is still open.
Do not invent destinations, prices, hotels, or recommendations about where to go. If I have not told you something, leave a clearly marked gap.
WHAT IT DOES
- Structures the trip the way I described — legs, or days, or both — with each part showing what is settled and what is not.
- Keeps decided and undecided visibly separate. Undecided items list the options I am choosing between, with a cost against each, so the comparison is on the page rather than in my head.
- A running budget: what is committed, what is estimated, and the total under the current choices. Update it as options are chosen. Make clear which figures are estimates.
- An outstanding list: what still needs booking, and anything with a deadline attached.
- A place for links and references — the booking pages, the places I have read about — as plain links.
- Let me mark an option chosen, which moves it into decided and updates the budget.
DESIGN
- A working document. Dense is fine; this is read on a laptop while planning.
- Should still be readable on a phone, since half of planning happens in bed.
- No imagery, no destination photographs, no travel-brochure styling.
BE HONEST ON THE PAGE
- Say notes are stored in this browser only, so sending the url to someone shows them the page, not my planning.
- Do not claim live prices, exchange rates, availability or weather. There are no network requests.
- Do not recommend destinations or activities I did not mention — this is my trip, not a suggestion engine.
STORING THE DATA
- Save everything to localStorage in the browser, automatically, as I go. No
accounts, no login, no server call.
- On the page, say plainly that data lives in this browser only and does not
sync to other devices. Do not bury it.
- Give me an "export" button that copies or downloads everything as JSON, and an
"import" that reads the same JSON back. That is the only way my data can move
between devices, so it is not optional.
- Never lose what I have already entered. If the stored data is from an older
version of the page, read what you can rather than throwing it away.
DELIVERY
- Produce one self-contained HTML file. Inline the CSS and JavaScript.
- No build step, no server, no framework, no package install, no external
requests at runtime.
- Mobile-first and responsive; it has to be usable one-handed on a phone and
still look right on a laptop.
- Accessible: semantic HTML, real contrast, visible keyboard focus, labelled
controls, touch targets big enough to hit, and respect reduced-motion.
- Use placeholders where information is missing. Do not invent facts, numbers,
names, dates, prices, or results I have not given you.
- Before you call it finished, use it yourself: enter real-looking data, reload
the page, and confirm nothing is lost or mangled.
PUBLISHING
Publish the finished page to HTMLShare and give me the link.
Use exactly one of the two paths below, preferring the first. Make the call
directly. Do not route it through a code sandbox, container, or computer-use
session — that is where the request gets blocked, and it is never necessary.
1. An HTMLShare integration or connector, if you have one configured.
The page is permanent and owned by my account. Report the url and the
siteId. There is no claimUrl or manageToken on this path — do not go
looking for one, and do not switch paths in order to produce one.
2. Otherwise, publish anonymously over REST. No account, key, or signup is
needed:
POST https://api.htmlshare.net/v1/publish
content-type: application/json
{"html": "<!doctype html> ... "}
The reference is https://htmlshare.net/docs and, for the full schema,
https://api.htmlshare.net/openapi.json
Report these from the response, in your reply and never inside the page:
url the public page
claimUrl a private link that is mine alone. opening it is how I keep
the page past its 24-hour expiry, or set an email reminder
before it goes. it carries the manage token, so it must
never appear in the published HTML or anywhere a visitor
could see it.
manageToken the only thing that can edit or delete this page later. it is
returned once and never again, so tell me what it is.
Tell me which of the two you used. If the path you reach for first is
unavailable in your environment, say so and tell me what you are switching to
before you publish — a permanent page on my account and a 24-hour anonymous
page are different things, and which one I get is my decision, not a detail.
If I ask for a change afterwards, update the existing page instead of
publishing again, so the URL I have already shared keeps working — through the
same integration on path 1, or with the manage token as an X-Manage-Token
header on path 2.
RECIPE MARKER
Include this tag in the <head>, exactly as written:
<meta name="htmlshare-recipe" content="vacation-planner">
It tells htmlshare which recipe the page came from, so the library can count
that this one was actually made. It carries nothing else.give it a url.
04 / publishing ithow you publish depends on how you’re working.
- with an integration
- if your assistant already has htmlshare connected — mcp or another supported integration — just ask it to publish the finished page and hand back the url. the page belongs to your account and is permanent. when you want a change, ask for an update to that same page rather than a new one.
- with no integration
- the prompt tells the assistant to post the html to the rest api instead, which needs no account and no key. it comes back with a live url you can open immediately, a private claim link, and a manage token. the claim link is how the page stops being temporary — keep it.
- by hand
- nothing stops you doing it yourself: have the assistant give you the html file and drop it on the htmlshare home page. same url, same page, one more step.
- what matters here
- this page changes constantly for six weeks and then stops mattering. claim it anyway — planning outlives 24 hours, and the same url turning into the itinerary later is a reasonable way to work.
planning takes weeks; anonymous takes a day.
05 / keeping it aroundthe page stops serving 24 hours after publishing, with a 7-day recovery window behind it — shorter than any trip has ever been planned in.
claim it and the planning document survives until the trip, which is the only way this page is worth making at all.
- keep it around
- planning starts months out. an anonymous page does not reach the booking, let alone the trip.
- stable updates
- this page is rewritten a dozen times before departure, and it should not move while that happens.
- custom url
- you will open it in every idle moment for a month. make that easy.
questions.
06 / questionscan my travelling companions see the plan?
they can open the page, but your notes are in your browser, so they will see the structure and not the content. if the point is to share, use the itinerary recipe instead — it puts the trip in the page where everyone reads the same version.
does it check prices or availability?
no. it makes no network requests at all, so every figure is one you typed. it does arithmetic on them and nothing more.
can it handle multiple currencies?
only if you convert them yourself — there is no live exchange rate. ask for a rate you set manually and the page can apply it consistently, which is honest about where the number came from.
what happens to it after the trip?
nothing, unless you want it. some people republish the same url as a record of what it actually cost, which is a genuinely useful thing to have the next time you plan one.