Inspiration

A film cast lands in Mumbai. The lead says two lines in Hindi, name-checks a beloved local icon, and the clip does more for the opening weekend than a month of paid media. That moment wasn't luck — someone researched it. We built the agent system that does that research for every stop, and then acts on it.

The problem it solves

Global press tours and music tours fail city-by-city for a boring reason: nobody has time to research every city properly. A planner routing a 10-stop tour needs, per city: cultural etiquette and media norms, real local phrases with pronunciation, fan-behavior forecasts, venue logistics, visa lead-times by nationality, seasonal weather risk, customs rules for touring equipment — and a talent brief the artist will actually read. That's days of research per city, so in practice it happens for two cities and gets template-copied for the rest. The result is the generic stop: the same jokes in Tokyo as in Berlin, a missed monsoon window, a visa surprise, and zero "Mumbai moments."

How big that problem is

  • The global live-music industry alone was ~$36.6B in 2025 (PwC) and is projected to reach ~$62.6B by 2034 (Custom Market Insights).
  • Pollstar's mid-year 2026 data: the top 100 tours grossed a record $3.16B in H1 2026 on 26.3M tickets.
  • The part that makes this our problem: that growth was +12.3% globally vs +0.1% in North America — driven by K-pop, Latin, and emerging markets. The entire growth of touring is happening in exactly the cities Western planning teams know least. Cultural intelligence is no longer a nice-to-have; it's where the revenue moved.

What it does

Five Dialogflow CX Playbook agents — Culture Intelligence, Fan Enthusiasm, Local Delight, Talent Prep, and a Campaign Orchestrator — plan a multi-city tour end to end, with a genuine two-way handoff: Talent Prep sends its draft brief back to Culture Intelligence for verification before anything is finalized. Then the system acts:

  • Executive Tour Book — one click assembles the boss-facing campaign document: itinerary, per-market demographics with bar charts, cultural playbooks, activation plans, generated key art, and playable entrance stings. Cmd+P is the PDF.
  • Campaign-aware key art — Gemini 3 renders per-city poster art from real grounded local motifs, with the exact prompt shown in the UI.
  • Lyria entrance stings — a real generated audio moment per city, composed from the city's own curated music cues.
  • AI co-planner chats (create + edit) — schema-constrained Gemini turns that fill a real form and produce reviewable diffs; nothing writes to a live campaign until the planner applies it. Voice input, private client-side attachments, and history that survives refreshes and devices (localStorage + BigQuery tiers).
  • Tour-risk intelligence — visa lead-times by nationality, seasonal weather risk, customs/ATA Carnet notes, and a planner-owned safety checklist with a named showstop manager (deliberately not AI-generated).
  • Any city on Earth — five demo cities run on curated BigQuery data; every other city falls back to live Parallel research with citations, through the same grounding gate.

How we built it

Google Cloud end to end: Gemini (Vertex AI), Agent Builder / Dialogflow CX Playbooks, Cloud Run (4 services), BigQuery, Cloud Storage, Secret Manager, IAM (per-service service accounts, resource-level run.invoker, a custom minimal BigQuery role). The frontend is React 19 + TypeScript behind a thin Express BFF, so the browser never touches credentials. Campaign edits, chat history, and brief revisions all use one insert-only "latest revision wins" BigQuery pattern — the streaming-buffer limitation turned into a free audit trail. A dedicated agent_mcp_server (official MCP Python SDK) exposes our read-only tools to any external agent, and the dashboard registers its own functions as WebMCP page tools under a real Chrome origin trial.

413 automated tests (pytest + vitest), TDD throughout — including red-first tests for every security fix.

The key insights (why we built it this way)

  1. "The LLM reasons, code acts." Agents gather intelligence conversationally, but synthesis, the grounding check, and every BigQuery write are deterministic code. An agent can't hallucinate a database row.
  2. Grounding must be architectural, not a prompt instruction. Every fact — curated or fetched live from the web — passes the same deterministic checkGrounding gate before it may enter a brief. A polite "please don't hallucinate" is not a control.
  3. Gemini reasons, Parallel grounds — and the two are never confused. Gemini itself decides when it's stale (needs_live_search in its structured output) and hands the present tense to Parallel. Live search runs exactly where a hallucination would be dangerous; instant Gemini everywhere else.
  4. Honest AI or no AI. Brief traces are reconstructed from real tool calls; generated key art shows the exact prompt used; a live metric with zero search results returns an honest null ("never estimate"). We never fabricate reasoning anywhere in the product.
  5. Agents should be controllable by agents. The same tool contract is exposed at three layers — our own Playbooks, an external MCP server, and the browser page itself via Chrome's WebMCP — so the product is drivable by AI at every altitude.

The architecture, in three pictures

System architecture The full system: planner surfaces → five Playbook agents → four Cloud Run services → BigQuery/Parallel/Gemini. Gold edges are the paths where agents act, not chat.

The grounding pipeline Curated path and live path converge on one deterministic gate. Parallel-sourced facts earn canon the same way curated rows do — and rejected facts never enter a brief.

AI control at every layer Left: three agent surfaces (Playbooks, MCP server, WebMCP) sharing one audited tool contract. Right: the two-pass loop that refuses to answer time-sensitive questions from stale training data.

How we leverage Parallel (our partner track)

Parallel's Search API is called at runtime via the official parallel-web SDK — it's the system's connection to the present tense. Each task routes to a specific surface:

Task Parallel surface
Culture, local delight, demographics for any unseeded city Search → Gemini schema-constrained synthesis
Venue discovery, commute/customs notes, local crew & vendors Search
Visa lead-times by nationality, seasonal weather risk Search
Film/franchise research in both chats (triggered by Gemini's detected_title) Search
"What's trending in Tokyo right now?" (triggered by needs_live_search) Search, answer shown with a "Live sources" citation row
Custom campaign metrics ("cinema screens per capita") Search, honest null on zero results
Deep research when adding a brand-new city Task API
Cultural-drift + safety watch after briefs exist Monitors

Every live result keeps its citations, passes prompt-injection validation on the way in (regex allowlists on every user-influenced field, built test-first), and passes checkGrounding on the way out.

How we leverage Gemini

  • Every chat turn is a schema-constrained JSON response — which is why the assistant can fill a real form and emit reviewable diffs instead of prose.
  • Live-evidence synthesis: Parallel evidence → structured, citation-preserving JSON, never free text.
  • Key art: gemini-3-pro-image renders city posters from grounded motifs; the exact prompt is shown in the UI and in the Tour Book.
  • Lyria composes each city's entrance sting; Gemini TTS voices local-phrase pronunciation.
  • The self-awareness trick: Gemini's own structured output decides when to escalate to live search — the model flags its own staleness instead of bluffing.

Challenges we ran into

A genuine two-way agent handoff (not a linear pipeline) forced a rethink of how Talent Prep and Culture Intelligence share state. gemini-3-pro-image 404s on regional endpoints — it's global-only, found the hard way. A cached-identity-token bug produced live 401s only on long-lived Cloud Run instances — masked for weeks by frequent redeploys, caught by end-to-end verification. And Dialogflow CX Playbook navigation is flaky under concurrent multi-city load; a targeted retry-once beat treating every failure as a logic bug.

Accomplishments that we're proud of

A real, verified two-way inter-agent handoff. Live Parallel research for any city on Earth with the same grounding bar as curated data. The one-click Executive Tour Book with generated key art and Lyria stings. Honest AI transparency end to end. Three layers of agent control over one audited tool surface. 413 green tests.

What we learned

Grounding discipline has to live in architecture. Structured output is what turns a chatbot into an agent. And "show the exact prompt" costs almost nothing to build but changes how much a planner trusts the machine.

What's next for Tour Intelligence — Agentic Tour & Promo Intelligence OS

Per-planner accounts (user-scoped chat history and checklists), a post-show learning loop feeding real outcome data back into enthusiasm scoring, and server-side Gemini-native PDF understanding for strategy-document attachments.

Built With

Share this project:

Updates

Submission history