Inspiration

Most group trips die in the group chat. A friend says "let's do NYC this fall," forty messages later you've got a messy thread of screenshots, Airbnb tabs, and half-agreed plans — and no one actually books. Research backs the intuition: roughly 76% of group trips never make it past the chat (Talker Research), and the average traveler spends ~19 hours across 11 days coordinating before a single thing is reserved (KAYAK). The tools meant to help — shared docs, booking aggregators, AI chatbots — all optimize for one traveler making one decision. Group travel isn't one decision; it's a slow, messy reconciliation of conflicting preferences (mom can't walk far, someone wants pizza, someone's on a budget). We wanted an assistant that listens to that messy conversation, turns it into structured memory the whole group shares, and does something with it — not another chatbot that just talks back.

What it does

ArrivalLens is a conversational itinerary manager that turns a natural travel conversation into a structured, shareable trip plan. The flow is Conversation → Trip Memory → Clarification → Stay → Itinerary:

  1. Live Trip Memory — As friends talk (or type), the app extracts a persistent memory: destination, dates, traveler count, mobility constraints, food preferences, budget, neighborhood wish-lists. It fills in visibly as the conversation unfolds.
  2. Smart clarification — When critical info is missing (e.g., no dates), it asks one targeted question instead of a wall of prompts.
  3. Fit-ranked stays — It searches live hotel inventory (via Stay22) and ranks options against the whole group's memory — budget, walking tolerance, transit proximity — not just price. Each card shows why it fits.
  4. Voice editing — A floating ElevenLabs voice agent lets anyone say "make Day 2 less tiring" or "find a cheaper hotel" and the plan updates in real time. It's an assistant, not an autopilot — every command changes the trip, none just answers as a chatbot.
  5. Outbound hotel verification — An ElevenLabs outbound agent can actually call a property to confirm a detail (late check-in, parking, accessibility).

Today it supports New York City, Chicago, San Francisco, and Boston.

How we built it

  • Frontend: React 19 + TanStack Start (full-stack React framework with SSR), TanStack Router for the City → Conversation → Clarify → Trip workspace flow, and Tailwind CSS v4 with a custom "ArrivalLens" design system (deep ink-teal, warm paper, terracotta accent — deliberately avoiding generic AI purple gradients).
  • State: A React Context store (trip-store) persists Trip Memory, transcripts, itinerary, hotels, and a voice-change log to localStorage, so a refresh never loses the plan.
  • Backend: TanStack Start server functions keep credentials server-side. Stay22 hotel search runs as a real server function — it queries live inventory when an API key is present and falls back to curated city data otherwise. ElevenLabs integration (voice agent token, outbound hotel calls) is wired through protected server functions too. Groq extraction is stubbed with a local stand-in that reveals memory in the same order the conversation does, so swapping in the real Groq call is a one-line change.
  • Voice: The @elevenlabs/react SDK powers a WebRTC conversation agent with a registered client tool (apply_trip_change) so spoken commands mutate the trip directly.

Challenges we ran into

  • Duplicate React instances caused "Invalid hook call" crashes — the classic peer-dependency mismatch. Fixed by purging the Vite cache and pinning a single React resolution.
  • Keeping credentials server-side while the frontend stayed snappy: we had to route hotel search through a TanStack Start server function so STAY22_API_KEY never reaches the browser, with a graceful curated fallback so the demo still works without keys.
  • Making memory feel alive, not static: the hardest design problem was showing the memory fill in as the conversation progresses, not dumping a finished JSON blob. We solved it with a progressive local extractor keyed to lines-heard count.
  • Voice that edits, not just chats: wiring the ElevenLabs client tool so a spoken phrase actually mutates itinerary/memory — and returns a spoken confirmation — was fiddly, especially threading dynamic variables (city, trip memory) into the session.

Accomplishments that we're proud of

  • The "assistant, not an autopilot" philosophy lands: every voice/text command visibly changes the plan — move a stop, re-rank hotels, trim a day — and the UI reflects it instantly.
  • A fully clickable end-to-end flow (City → Conversation → Memory → Clarify → Hotels → Itinerary → Voice edits) with a real backend integration (Stay22) already live, not just mocked.
  • A distinctive visual identity that doesn't look like a generic AI app — the ink-teal/paper/terracotta palette and Fraunces + Inter Tight typography give it a real product feel.
  • Progressive memory extraction that genuinely makes the "watch your trip form" moment work, which is the whole emotional payoff of the concept.

What we learned

  • Group travel isn't a search problem — it's a reconciliation problem. The hard part isn't finding a hotel; it's reconciling "mom can't walk," "we want pizza," and "keep it under $200" into one plan everyone trusts.
  • Trip Memory as a primitive is the unlock: once the conversation is structured data, every downstream step (clarify, search, rank, itinerary) becomes deterministic instead of generative — and that's what makes it reliable enough to act on.
  • Voice is powerful but must mutate state, not just converse. A voice agent that only talks back is a gimmick; one that changes the plan is an assistant.
  • Graceful fallbacks (no API key → curated data) are what let a hackathon demo survive a flaky demo-day network.

What's next for ArrivalLens

  1. One-click group booking — book all nights of the trip in a single flow, and split payment across travelers.
  2. Phone & watch companion apps — take the itinerary and live voice edits on the go, with offline access to the day's plan.
  3. AI-guided wrap-up conversation — at the end of planning, a guided agent walks the group through unresolved trade-offs and locks the plan.
  4. Membership & monetization — a freemium model with booking commissions from Stay22/partners and a premium tier for larger groups and saved trip templates.
  5. Go-to-market — start with travel creators and campus groups (highest group-trip density and social sharing), then expand to family-reunion and corporate-retreat segments.

Built With

Share this project:

Updates

Submission history