-
-
The command dashboard: live campaign, per-city enthusiasm tiers, and the AI co-planner. Everything on screen is real, written data.
-
System architecture: five Playbook agents, four Cloud Run services, BigQuery canon, Parallel + Gemini. Gold edges are where agents act.
-
The grounding pipeline: curated and live facts converge on one deterministic checkGrounding gate before entering any brief.
-
Three agent surfaces, one audited tool contract — and the two-pass loop that refuses to answer live questions from stale training data.
-
Executive Tour Book cover: whole-campaign stats and per-market bar charts, assembled in one click. Cmd+P is the PDF.
-
A Tour Book chapter: Gemini-3 key art, market snapshot, and a playable Lyria entrance sting for London.
-
Honest generative AI: the key art panel shows the exact grounded signals and the exact prompt Gemini received — never fabricated reasoning.
-
The Mumbai delight card: local phrases, lean-into/avoid topics, fan questions — plus its Lyria entrance sting.
-
The assistant refuses stale answers: Gemini flags its own staleness, Parallel searches live, and the reply carries real citations.
-
Planner control: custom metrics and per-stop overrides — metrics for Mumbai only, resolved honestly by live search.
-
Edit a live campaign conversationally — reviewable diffs, and chat history that survives refreshes via the BigQuery session tier.
-
City detail, Culture tab: grounded etiquette, lean-into/avoid guidance, and live operations checks per stop.
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)
- "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.
- Grounding must be architectural, not a prompt instruction. Every fact — curated or fetched live from the web — passes the same deterministic
checkGroundinggate before it may enter a brief. A polite "please don't hallucinate" is not a control. - Gemini reasons, Parallel grounds — and the two are never confused. Gemini itself decides when it's stale (
needs_live_searchin its structured output) and hands the present tense to Parallel. Live search runs exactly where a hallucination would be dangerous; instant Gemini everywhere else. - 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. - 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
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.
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.
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-imagerenders 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
- bigquery
- cloud-run
- cloud-storage
- dialogflow-cx
- express.js
- flask
- gemini
- google-cloud-agent-builder
- iam
- jinja
- lyria
- mcp
- node.js
- parallel-search-api
- parallel-web-sdk
- pytest
- python
- react
- secret-manager
- tailwindcss
- typescript
- vertex-ai
- vite
- vitest
- webmcp
Log in or sign up for Devpost to join the conversation.