Poreia
Independent product · 2026
A travel planner that turns one sentence into a multi-day itinerary with costs, a map, and an editable day-by-day plan. The model's answer has to pass a schema and a destination check before anyone sees it.
Built solo. One model call per request, checked by code rather than by a second model. Itinerary quality has not been formally evaluated.
Open live demo View repositoryThe live home screen. Generating a trip requires signing in, so no itinerary is shown.
One sentence is enough
The prompt bar from the live home screen, with its placeholder trip.
Somewhere to start
Four example requests: a budget, a mood, a pace, a length.
Before a plan reaches the screen
Each reply is parsed, validated against the schema, and compared with the requested destination. A mismatch triggers one correction request.
Implementation notes
Start from a sentence.
The home screen asks for one sentence: a place, a mood, a length, or a budget. The result is a day-by-day plan with times, places, cost estimates, and a budget breakdown, drawn on a map and open to drag-and-drop reordering.
Trips are saved to an account, can be refined with follow-up requests, and can be shared.
Treat the model's answer as untrusted input.
A Hono service on Cloudflare Workers sends the request to an OpenAI model through Pollinations, with a fixed JSON shape and a low temperature. The reply is parsed and validated with Zod. Anything that fails becomes an error instead of a half-built trip.
The service then compares the itinerary's destination with the place the user named. If the model wandered elsewhere, it asks once more with an explicit correction. A refinement has to stay in the current trip's destination, and the notes a traveller wrote for each day survive regeneration.
One model, checked by code.
The checks are ordinary code, not a second model. The repository includes integration tests for the trips API and a rate limit on trip requests. The quality of the itineraries themselves has not been evaluated.
