← All work

POC exploration

AI Itinerary Generation Engine

Itineraries in ~20–30 seconds

AI WorkflowsB2B SaaS

Architecture diagram

Grounded AI itinerary generation

Catalog retrieval narrows real attraction options before an LLM composes a day-by-day itinerary under constraints.

Traveler request

Preferences, dates, constraints

Intent

>

Attraction catalog

500+ grounded options

Candidate pool

>

Embedding retrieval

Relevant attractions and filters

Grounded context

>

LLM planner

OpenAI orchestration

Draft plan

>

Constraint checks

Timing, catalog grounding, shape

Bounded output

>

Generated itinerary

Delivered in ~20-30 seconds

  • The POC tested the conditions under which generated plans stop being generic.
  • Grounding limited the model to real inventory instead of model memory.
  • Latency shaped the product decision around async/progressive UX.

Travel itinerary generation is one of those AI ideas that looks great in a demo and gets much harder when you try to make it product-grade. In this case, the platform had a catalog of more than 500 attractions and wanted generated itineraries that felt useful, not generic.

The easy version of the problem is getting a model to write something pleasant. The harder version is making sure the plan is grounded in real catalog options, respects obvious constraints, and does not quietly turn into pretty nonsense.

So the POC focused on prompt design plus catalog grounding. Attraction metadata, filters, and context selection mattered because itinerary quality depends on more than language fluency. The model has to choose from real options, sequence them sensibly, and stay within the shape of the actual inventory. Python and the OpenAI API were enough to prove the orchestration pattern, and the 20 to 30 second generation time told us something important about the eventual UX cost.

What did we learn? The model was good at composing a readable narrative and building a plausible plan. It still needed boundaries. Without grounding and constrained choice, itinerary quality slipped quickly into something that sounded smart but was not strong enough to trust.

The trade-off was speed and complexity. Better grounding meant more retrieval and more structure. It also meant accepting that 20 to 30 seconds is long enough that the user experience needs to account for waiting, async delivery, or progressive feedback.

The useful answer from the POC was not "yes, AI can make itineraries." It was "here are the conditions under which itinerary generation stops being a neat trick and starts becoming a serious product candidate."

Tech stack

OpenAI APIVector embeddingsPython