Gemini orchestration for a nomad travel companion
A working prototype of the AI layer: one orchestrator that routes each request to the right module, enforces tier limits, grounds answers in live Google Search / Maps, meters every call, and runs a live two-way voice interpreter. The phone screens are a mock-up to show the flows; the console beside them shows what the orchestrator is doing.
What is shown
M1 · Orchestrator
Router (flash-lite) → guardrails → tier/quota check → module → cache → event log. User context: tier, journey stage, travel style, home currency.
Guardrails
Booking/payment intents return a requiresConfirmation draft — nothing is booked or charged. Visa answers are grounded and must cite official sources, otherwise withheld.
M4 · Journey plan
"30 days in Medellín under $2K": budget split, neighbourhoods, weekly plan, real places — Google Search grounding, plus Maps grounding on paid tiers. All prices marked as estimates, sources listed.
M4 · Touchdown
2–3 airport transfer options, a 48-hour checklist, an honest safety block with emergency numbers and sources.
M7 · Translate Intercom
Gemini Live API over a server-side WebSocket bridge (key never reaches the browser). Measures first-audio latency, meters voice seconds against the tier. Text fallback on flash-lite.
Tiers & metering
Free-dom, Navigator $19, Voyager $59, Autopilot $89. Limits per feature; on hit the server returns a structured upgrade card (rendered as the sheet). Every model call is logged with tokens, latency, tier, cost.
Architecture
Same code runs two ways: src/node.ts (Cloud Run, Dockerfile, PORT, JSONL events) and src/worker.ts (this public demo on Cloudflare Workers + D1). In production, user/tier would come from the NestJS backend via a signed token, and events would stream to BigQuery.
Estimated AI cost per user per month
Assumed usage profile × cost per call. Per-call costs are measured from this demo's event log where available, otherwise from test runs. Rates: …. 30% of grounded calls assumed served from cache.
| Tier | Price | Plans | Touchdown | Chat | Translate | Voice | AI cost | Margin |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
What is not done (honestly)
- No real app, auth or payments. Anonymous session id in the browser; tier switching is free and instant.
- No booking integrations. The agent only drafts and asks for confirmation; nothing is sent anywhere.
- BigQuery not connected. Events go to Cloudflare D1 (public demo) or JSONL (Cloud Run build) with the BigQuery schema ready.
- Not deployed to Google Cloud. Dockerfile is ready for Cloud Run; the public demo runs on Cloudflare Workers.
- Prices and safety info are AI-generated estimates from live search — always shown with sources and "estimate" labels, not verified by a human.
- Voice: one target language per session, no speaker diarisation, no offline mode; latency depends on network.
- No NMT / Cloud Translation path, no evaluation suite, no load testing, no multi-region.
Demo prototype for a technical proposal. Not affiliated with any travel brand.