Galle, LK--:--5/6 sites live

An AI Trip Planner That Still Works When the AI Doesn't

Specialist agents for search, itinerary, pricing and dispatch — each calling the same Python functions as a deterministic fallback.

19 Oct 20264 min read#Google ADK#Agents#Tourism

Lesson 9 of 10 · Tourism Tech · built from Nora Travels, Nora Labs, Mahesh Travellers and my hospitality sites

Agents are great at turning "8 days, heritage and hiking, LKR 280,000" into a plan. They are bad at being the only thing between a traveller and an answer.

The pattern

Output
traveller request
   → orchestrator agent
       → search · itinerary · pricing · ota · dispatch agents
            → the SAME Python tools (catalog.py, geo.py, itinerary.py, pricing.py, ota.py)
   if the model call fails → deterministic engine calls those tools directly
   response = { …result, engine: "vertex" | "gemini" | "deterministic" }

Three backends, chosen by environment

BackendConfigured byUsed when
Vertex AIGOOGLE_GENAI_USE_VERTEXAI=TRUE + project and locationOn Google Cloud — no key in the image
Gemini APIGOOGLE_API_KEYLocal development
DeterministicneitherAlways available

Why it matters for tourism

  • A trip planner has demo days, quota limits and regions where a model isn't available. The traveller should never see an error.
  • Because the agents and the fallback share tools, the plan has the same distances, prices and rules either way — only the wording changes.
  • Every run is logged with engine and latency, so you can see how often the fallback answered.

Try it yourself: read the full build in Nora Labs: 11 ADK agents and the two patterns behind it in Two Google ADK patterns.

Exercise

Design a dispatch fallback that picks the nearest available driver by road distance. Which function from Lesson 7 would it call?


Keep going: ← Lesson 8 · Lesson 10 →

ExerciseKnowledge check

What happens in Nora Labs when a Gemini call fails?

Finished this one?

Progress is saved in this browser.

Guide