Inspiration Page · Check-in 002

The search got fixed — now we can read conversion

One week on from 001: origin resolution improved, the chat-path search returns real trips, and the funnel reaches a trip selection.
Snapshot 2026-06-15  ·  Window since 001: Jun 8 → Jun 15 (≈7 active days)  ·  Sources: Datadog system read → + Amplitude raw events (source = labs)

At a glance — deltas vs. check-in 001

1,067
Unique visitors
▲ from 506 · 7d window
363
Prompted Chiku
▲ from 156 · 34% of visitors
766
Chiku prompts
▲ from 326 (Amplitude)
458
Trip searches (prod)
▲ from 169 · Datadog
29.5%
Zero-result rate
▼ from 99.4% — fixed
73
Trip Selected
NEW event · 100% carry trips[]
63
Distinct cities suggested
▲ from 16 — seed list broke open
~$6.70
LLM spend / window
~$0.008/call · ▲ from $0.0038

Funnel rates — derived from the snapshot above

34.0%
Visit → prompt rate
363 of 1,067 visitors · ▲ from 30.8% (156/506)
2.1
Avg turns per prompter
766 prompts / 363 prompters · flat vs 001 (2.1)
9.5%
Prompt → trip selection
73 of 766 prompts · 16% of 445 destination picks · NEW

Headline: the zero-result search is fixed

In 001, 168 of 169 trip searches returned zero trips. This window, the prod chat-path search (trips.searched, the MCP search-trips tool) ran 458 times and returned trips on 323 of them — a 29.5% zero-result rate. The remaining zeros are largely real no-service corridors (Tampa→Pittsburgh, Minneapolis→Portland ME, a Philippines origin), not the integration bug. And the funnel now reaches a trip selection: Trip Selected fires 73 times, every one carrying the canonical trips[] array, batch_id, and a results_count — the proposed results-stage instrumentation from 001 landed.

Two search paths diverged — one fixed, one still broken (but only synthetic now)

The chat path (destination_selected → trips.searched → Trip Selected) works. The legacy classic-search path (Search Submitted → search.completed, pservs-backed, VPC-bound) still fails: in prod the only search.completed events are the once-a-day synthetic Boston→NYC canary, and it still returns 0 trips with 7/7 carriers failing. Real users barely touch that path (Search Submitted origin resolves 2/101) — the win came from the chat path resolving origins to a nearest hub instead. The classic path is now a monitoring artifact, not a user-facing fire.

Date intent is now honored, and the suggestion set broke open

Two P1s from 001 shipped. Date defaulting collapsed from 99% to ~37% — high-confidence extraction ("June 15th", "Wed, Jul 15", "your pick") is live, and flexible windows ("this weekend", "Weekend in October") now parse. And Chiku now surfaces 63 distinct destinations (up from 16), reaching beyond the NE corridor into DEN, NOL, BNA, SAV, AUS, PDX, SLC, STL.

The LLM layer stays healthy and effectively never hallucinates

Still Haiku 4.5, 1 hallucination in 837 prod prompts (and that one was on the old Jun-8 build). Cost rose to ~$0.008/call (longer context / tool use), latency ~2.4s avg with a slow tail (56 calls >3s, 20 >5s, worst 8.9s). Still the cheapest, most reliable part of the stack — do not optimize the model layer.

Answers to the carried-forward questions from 001

001 closed with seven "Next Check-in" questions. Each is answered below with the data — five are now answered, two remain open. Volumes are an order of magnitude larger than 001 (766 prompts, 458 prod searches) but the window is still ~7 days — treat percentages as strong-directional.

#Question carried from 001Answer this window
1Did the zero-result search get fixed? Was origin resolution the cause? Yes — fixed, and yes. Prod zero-result rate fell from 99.4% to 29.5% (135/458). The fix was on the chat path: origins now resolve to a nearest hub on 102/445 destination picks (23%, up from 19%), and where they do, trips.searched returns real trips. Origin resolution was the cause, as the 001 payloads predicted.
2Is the resolved-origin signal on the search events, so the gap is visible in Amplitude? Partial. Search Submitted now carries depart_wcityid + date_provenance, and destination_selected carries origin_wcityid + nearest_hub_wcityid — so the gap is now measurable in Amplitude (it's 24/445 resolved directly, 102/445 via nearest hub). No single origin_resolved boolean yet, but the substance is there.
3With search working, what's the first real conversion read? First read available. Trip Selected (73) now fires with trips[] + batch_id + results_count. Funnel: 766 prompts → 645 suggested → 445 selected → 458 prod searches → 73 trip selections. Suggestion→selection is ~69% of prompts; trip selection is the new floor of the conversion read. The batch_id is the join key into booking.
4Did origin-aware destinations broaden the suggestion set beyond 16 cities? Yes. 63 distinct cities suggested (was 16). The NE-corridor monoculture is gone; DEN, NOL, BNA, SAV, AUS, PDX, SLC, STL all appear.
5Are the three legacy labs events confirmed retired? Confirmed. Chiku Message Sent, Chiku Destinations Lit, and Inspiration Origin Detect Failed did not fire once this window. The labs inventory is now 7 clean canonical events.
6Any movement on rail / nearest-stop asks? Not yet — still unmet. Rail/Amtrak mentions persist (~34 prompts incl. one elaborate "go to Amtrak.com fare-finder" agentic request) and nearest-stop asks (~29). Neither has a dedicated capability. These carry forward as P1s.
7External-LLM referrer / MCP traffic (KU #13)? First trace appeared. chatgpt.com shows up as a utm_source for the first time (4 page views). Tiny (≈0.3%), but it's the first evidence of the inspiration moment arriving from an agent. Worth watching; not yet a trend.

Where each finding ties to the framework

FindingClassFramework tie
Chat-path search returns trips; funnel reaches Trip Selectedcore-loop-workingKU #12 (explore conversion) — now measurable for the first time
Date extraction live; flexible windows parsecore-loop-workingKU #1 (date certainty); Pattern A (flexible dates, fixed destination)
63 distinct destinationscore-loop-workingAxis: breadth — origin-aware widening, the inspiration thesis
Classic Search Submitted origin still 2/101data-quality-gapThe classic-search handoff is still the weak path; chat path is the live one
Rail (~34) + nearest-stop (~29) unmetunmet-needKU #6 (mode anchor); a discovery not in the original 100 scenarios
Synthetic Boston→NYC 0-trips, 7/7 carriers failsystem-healthpservs/VPC path — Datadog-only, monitoring artifact
chatgpt.com referrer (4)unmet-need / signalKU #13 (inspiration moment migrating to agents) — first datapoint

What this check-in still does not tell us

Downstream booking conversion (the batch_id join key exists but we haven't joined Trip Selected → Checkout → Transaction yet), revenue, the build-vs-MCP-primary decision (KU #13 is one referrer, not a pattern), and Spanish-language / accessibility quality. The classic-search path's real-world zero-rate is also still unmeasured (only the synthetic monitor exercises it).

What we found — the two-path search story

The single most important thing this window is why the zero-result rate collapsed. It's not that one search got fixed — it's that the product leaned into the path that resolves origins and away from the one that doesn't.

The chat path now resolves origins to a nearest hub

In 001 the diagnosis was: origins arrive as raw free text ("700 Atlantic Ave", "Tucson", "Berlin, Germany") and never resolve to a Wanderu city, so /api/trips returns nothing. This window, the chat path (destination_selected) carries a nearest_hub_wcityid on 102 of 445 picks (23%, up from 30/160 = 19%) and a directly-resolved origin_wcityid on 24 of 445 (up from 3/160). Where the origin resolves, the Datadog trips.searched call returns trips — 323 of 458 prod searches now do.

The classic-search path is still broken — but only the synthetic monitor hits it

The legacy Search Submitted → search.completed path (pservs-backed, runs from VPC-bound pods) still fails. Every prod search.completed event this window is the once-daily synthetic canary BOSSST → NYCPAS, and it returns 0 trips with all 7 carriers failing (failed_carrier_count: 7, ok_carrier_count: 0) — the same Boston→NYC signature flagged in 001. Real users almost never traverse it: Search Submitted resolves depart_wcityid on just 2 of 101. So the carried-forward "Boston→NYC returns zero" is now isolated to the synthetic test path, not the live experience. It still needs fixing (a monitor that's always red is noise), but it's no longer the headline blocker.

Real no-service corridors are now distinguishable from bugs

With the bug cleared, the 135 zero-result prod searches read as genuine sparsity: Tampa→Pittsburgh, Minneapolis→Portland ME, Texarkana→Dallas, Waterloo IN→Chicago, and a literal Coron, Palawan, Philippines origin. These are the right kind of zero — the system correctly says "no bus there" rather than silently failing on a dense corridor. This is the conversion denominator finally meaning something.

Voices from the logs this window

"Go to Amtrak.com and use the fare finder to find the CHEAPEST weekend round-trip from New York to Boston… report the 3–4 cheapest weekend combinations… Do NOT log in or book." — a user trying to use Chiku as a booking agent for rail
"i'm from pittsburgh, and i want quieter no city" — vibe + origin anchor, exactly the inspiration loop
"list major cities 2-3hrs away" — the nearest-reachable ask, still unmet (and one of the 8.9s slow calls)

Biggest new signal: agentic rail intent

The Amtrak fare-finder prompt is qualitatively new — a user expecting Chiku to act on an external site, not just suggest. Combined with the ~34 rail mentions and the chatgpt.com referrer, it sharpens the LLM-integration question: users increasingly arrive expecting agent behavior. We can't serve rail today, and silent failure is still the worst outcome.

Behavior & funnels — the source = labs view

First-party Amplitude (source = labs), window since 001. System outcomes (zero-result rate, latency, cost) are Datadog by design and live in the What We Found tab and the system block below. Event definitions are at the bottom of this tab.

The explore funnel (Explore Page Interacted by interaction_type + the new trip stages)

LLM Prompted
766
100%
destinations_suggested
645
84%
destination_selected
445
58%
trips.searched (prod)
458
Datadog
Trip Selected
73
NEW
Search Submitted
101
classic handoff

The chain that broke at steps 7–8 in 001 (Search Results Viewed / Trip Selected were Missing) now reaches a real trip selection (73), each carrying trips[] + batch_id + results_count. This is the measurement spine 001 asked for. trips.searched (458, Datadog) sits between selection and trip-pick because the search runs server-side.

What users typed — intent distribution

766 prompts by primary theme (regex over prompt_text; categories overlap). Teal = core loop · orange = unmet need.

Vibe / inspiration
93
pattern B/C
Budget-led
53
budget anchor
Date / timing
41
pattern A/B
Train / Amtrak
34
UNMET
Nearest stop / station
29
UNMET
Off-network / intl
24
out of scope
Support / refund
6
misdirected

Vibe/inspiration and budget lead — the wide-axis "surprise me, cheaply" core holds. Rail (34) and nearest-stop (29) remain the two largest unmet intents, both carried from 001 and both still without a capability.

Daily traffic — visitors / prompters per day; the prototype is now in steady-state, not launch spike
6/8
6/9
6/10
6/11
6/12
6/13
6/14
6/15*
Unique visitorsPrompted Chiku

Steady ~120–170 visitors/day, ~1/3 prompting Chiku — a stable surface, not the launch spike of 001. *Jun 15 is a partial day.

Conversation depth — 45% are follow-ups
Turn 1
424
Turn 2
183
Turn 3
82
Turn 4
35
Turn 5
18
Turn 6+
24
Device mix — 68% mobile
Phone
518
Desktop
233
Tablet
15

Multi-turn deepened (45% of prompts are follow-ups, up from 39%) — conversational refinement is working. Desktop share grew (31% vs 21% in 001), so the surface is no longer phone-only; design should not assume mobile-exclusive.

Origin resolution — still the weak link, but improving
Destination (arrive)
101/101
Origin via nearest hub
102/445
Origin resolved direct
24/445
Search Submitted depart
2/101
Search date source — defaulting fell from 99% to ~37%
User pick (high conf)
52
Explicit date (high)
~53
"this/next weekend"
231
Default 2wks (low conf)
117

Origin resolution improved on the chat path (24 direct + 102 nearest-hub of 445) but the classic Search Submitted handoff still resolves only 2/101 — the divergence the two-path story explains. Date intent is now extracted: explicit high-confidence dates plus parsed relative windows ("this weekend") have pushed the low-confidence default down to ~37%.

Suggested → selected by destination

St. Louis
~high
11 picks
Nashville
54%
15 / 28
Atlanta
45%
35 / 78
Denver
40%
17 / 43
New York
29%
39 / 134
New Orleans
28%
21 / 76
Chicago
27%
36 / 131
Miami
27%
40 / 147
Philadelphia
26%
31 / 120
Boston
20%
28 / 140
Montreal
15%
19 / 125

The newly-unlocked cities resonate hardest once shown — Nashville (54%), Atlanta (45%), Denver (40%), New Orleans (28%) beat the always-suggested NE-corridor staples. Boston (20%) and Montreal (15%) are still over-suggested relative to picks, same as 001. The broadened seed list is pulling its weight; the suggestion ranker could lean further into the high-convert newcomers.

Still: selections happen in the chat, never on the map

All 445 destination picks carry pick_source: "chat_card"; the map-pin path was used 0 times again. Two windows in a row of zero map commits on a map-first surface — this is now a real signal for the chat-vs-structured-browse question, not a fluke. The constraint_edited affordance did climb from 1 to 12 firings, so the chips are being discovered, just lightly.

System-side block (Datadog, service:next-prototypes, env:prod)

MetricThis windowvs 001
Prod trips.searched (chat-path)458▲ from 169
Zero-result rate (chat-path)29.5%▼ from 99.4%
Prod llm.prompted837▲ from 334
ModelHaiku 4.5unchanged
Cost / call~$0.008▲ from $0.0038
Window LLM spend (prod)~$6.70
Hallucinations1 / 837~0 (held)
Latency >3s / >5s (worst)56 / 20 (8.9s)slow tail persists
Errors (experiment fetch / wapi / mcp)~15 totalminor, self-resolved
Synthetic search.completed (BOS→NYC, 0 trips)9 (1/day)still red — pservs path

Event inventory & funnel coverage

The labs event inventory this window. Live firing · Gap live but incomplete · Auto autocapture.

Amplitude eventwindowFirst seenStatus / maps to
Explore Page Interacted1,472(carried)Canonical umbrella ✓
[Amplitude] Page Viewed1,298autoAuto-tracked
LLM Prompted766(carried)Canonical ✓ — ≈ Datadog llm.prompted (837 prod)
session_start108autoAuto-tracked
Search Submitted101(carried)Canonical ✓ — classic handoff; depart resolves 2/101
Trip Selected73NEWCanonical ✓ — carries trips[] + batch_id + results_count
session_end49autoAuto-tracked

The three legacy events (Chiku Message Sent, Chiku Destinations Lit, Inspiration Origin Detect Failed) are gone — zero firings this window. New interaction_type values date_edited (24) and constraint_edited (12) joined the umbrella. The funnel reaches Trip Selected; the remaining missing rung is joining Trip Selected → booking via batch_id (the events fire on canopy/ui-react downstream).

Priorities — carried forward from 001 with status

Each 001 priority is marked done / ongoing / dropped and re-ranked by what now unblocks the most learning and value. Filter by priority or owner; click a card to expand.

Priority
Owner
P0Join Trip Selected → booking via batch_id (the conversion read) enganalytics

NEW / promoted. Now that Trip Selected fires (73) with a batch_id and a trips[] array, the single highest-value next step is to complete the join into booking: Trip Selected → Checkout Started → Transaction Completed (those fire downstream on canopy/ui-react). This turns the funnel from "search works" into the first true explore-conversion-to-revenue number — the thing every prior check-in has been blocked on.

  • Confirm batch_id propagates from labs through the booking handoff and is queryable on the downstream events.
  • Stand up the cross-system funnel: prompts → suggested → selected → trips.searched → Trip Selected → checkout → transaction.
  • Note Trip Selected carries results_count but no trip_id (0/73) — add it so individual trips join, not just batches.
P1Handle rail / Amtrak explicitly (~34 asks, still unmet) producteng

Ongoing — promoted. Rail is now the largest unmet intent (~34 prompts), and qualitatively escalating: one user wrote a full agentic brief asking Chiku to "go to Amtrak.com and use the fare finder" and report cheapest weekend round-trips. Either give Chiku Amtrak routing/data or have it state clearly what it can and can't do for rail. Silent failure remains the worst outcome, and the agentic framing suggests rising expectations we're not meeting.

P1Serve "nearest stop / boarding point" (~29 asks, unmet) producteng

Ongoing. Still the second-largest unmet intent (~29: "list major cities 2-3hrs away", "closest to Shelby nc", "nearest places to austin"). Answerable from places/stations data we already have — likely a straightforward Chiku tool call. It also overlaps the origin-resolution win: users asking "what's near me" is the same anchor the nearest-hub fix already computes.

P1Lift origin resolution on the chat path above ~28% eng

Ongoing — was P0 "fix zero-result search", now de-escalated. The zero-result bug is fixed (99.4% → 29.5%), but origin resolution is still the cap on how low the zero-rate can go: only 24/445 picks resolve a city directly and 102/445 via nearest hub, leaving ~70% of picks leaning on whatever default the search uses. Push direct + nearest-hub resolution higher so more searches run from a real station — that's where the remaining non-genuine zeros live.

  • Diff a resolving origin (e.g. "Newark, NJ" → real hub) against a non-resolving one to find the gap.
P2Fix or retire the classic-search path (synthetic BOS→NYC always red) eng

NEW / de-escalated from 001's P0. The legacy Search Submitted → search.completed path (pservs, VPC-bound) still returns 0 trips with 7/7 carriers failing — but in prod the only traffic on it is the once-daily synthetic Boston→NYC canary. Real users go through the chat path. So this is no longer a user-facing fire; it's a monitor that's permanently red (noise that masks real alerts). Either point the canary at the working chat path, or fix the pservs dependency so the classic handoff resolves. Lower stakes than the conversion join.

P2Honor stated dates & flexible windows — verify & extend producteng

Mostly done — de-escalated from P1. Date defaulting fell from 99% to ~37%. Explicit dates ("June 15th", "Wed, Jul 15") and relative windows ("this weekend", "Weekend in October") now parse with high/medium confidence. Remaining work is the long tail: "between now and july thirtieth", "the end of the month", and true cheapest-day search across a range (Pattern A). Verify the parsed date actually drives the trips.searched call rather than just being logged.

P2Investigate why the map is never used to commit (2 windows of 0 picks) productdesign

Ongoing — sharpened. All 445 picks this window (and all 160 in 001) came from the chat card; the map-pin path has 0 commits across both check-ins. On a map-first surface this is now a real finding: either the map is decorative and the chat is the product, or the map's commit affordance is invisible. This bears directly on the chat-primary vs. structured-browse question in the LLM-integration doc. Worth a design look and an explicit decision, not just a log note.

P2Animate the explore page (Chiku "thinking" + destination reveal) designproduct

Ongoing. Still stakeholder-desired, still not evidence-led — but the slow-latency tail strengthens the perceived-performance case: 56 prod calls ran >3s and 20 >5s (worst 8.9s) this window. A motion treatment on the wait directly improves those slowest turns. Pair with animating the destination reveal (645 destinations_suggested) to reinforce the "surprise me" moment. Respect prefers-reduced-motion; keep behind the conversion join.

P2Scope guardrails + support handoff product
  • Off-network / international (~24 this window — Europe, Nigeria, the Philippines origin): Chiku should clearly state Wanderu's coverage boundary.
  • Misdirected support (~6, lower than 001): refunds, "where is my bus" — add detection + a handoff to real support.

Volume on misdirected support dropped; off-network grew. Still a graceful-boundary problem, not a fire.

P2Watch external-LLM / agent referrers (KU #13) analyticsproduct

NEW. chatgpt.com appeared as a utm_source for the first time (4 page views), and a user wrote an agentic Amtrak-fare-finder brief. Both are tiny, but together they're the first whisper of the inspiration moment migrating to agents — the build-vs-MCP-primary question (KU #13). Keep a standing referrer watch (chat.openai.com, perplexity.ai, gemini, copilot) so we catch the trend if it forms. Don't over-rotate on N=4.

P2Clean up the labs event taxonomy analytics

DONE — confirmed. All three legacy emitters (Chiku Message Sent, Chiku Destinations Lit, Inspiration Origin Detect Failed) fired zero times this window. The labs inventory is now 7 clean canonical events. Leaving here marked done for the audit trail; drop in 003.

P2Acknowledge the anti-AI minority productdesign

Ongoing — low signal. No fresh "I don't want the AI" quotes surfaced in this window's sample, but the 0-map-commits finding is the structural version of the same question: is there a plain browse path for people who don't want to chat? Folded conceptually into the map-usage investigation above. Cheap escape-hatch idea from 001 still stands; not urgent.

For the next check-in (target ~2026-06-19)

  1. Did the batch_id join land? What's the first explore → checkout → transaction conversion read off Trip Selected?
  2. Did trip_id get added to Trip Selected so individual trips (not just batches) join into booking?
  3. Did origin resolution on the chat path climb above ~28% (direct + nearest hub), and did the zero-result rate fall further below 29.5%?
  4. Any movement on rail / Amtrak (the largest unmet intent, now with agentic framing) or nearest-stop (~29)?
  5. Was the classic-search path fixed or its synthetic canary repointed, so the BOS→NYC monitor stops being permanently red?
  6. Did external-LLM / agent referrers grow beyond the first chatgpt.com trace (KU #13)?
  7. Map usage: did any destination pick come from the map this window, or is chat-only confirmed a third time?

System-health notes (no action needed)

Chiku LLM layer is healthy. Haiku 4.5, ~$6.70/window, ~$0.008/call, 1 hallucination in 837 prod prompts. Cost-per-call rose vs 001 (longer context / tool use) but is still trivial. Slow tail worth a perceived-performance treatment (see P2 animation), not a model change.

Errors are minor and self-resolving — ~7 Amplitude experiment-variant fetch timeouts, a Jun-10 503 blip, 2 WAPI predictions failures, 3 mcp.no_structured_content. The 001 WAPI auth blip did not recur.