AI Travel Agent

AI-first · React + Node (Express) · 20 @molecule/* packages

An AI travel agent that books flights by voice, rebooks them when they are delayed, and splits the bill between travelers — with built-in Stripe-backed subscription tiers

Open in Molecule

Try it

Opens instantly. Runs on sample data, so changes reset on reload.

Open preview in a new tab ↗View workspace ↗

What is inside

Screens (14)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Pricing /pricing
  • Pay /pay/:token
  • Talk /talk (signed in)
  • Trips /trips (signed in)
  • TripDetail /trips/:id (signed in)
  • Bills /bills (signed in)
  • Settings /settings (signed in)
  • Billing /settings/billing (signed in)
  • Profile /profile (signed in)

Data model (9 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • conversations — id, user_id, title, message_count, total_seconds_spoken, started_at, ended_at, created_at, …
  • messages — id, conversation_id, role, content, type, tool_calls, duration_ms, latency_ms, …
  • flights — id, airline, airline_code, flight_number, origin_iata, origin_city, destination_iata, destination_city, …
  • trips — id, user_id, conversation_id, title, origin_iata, destination_iata, depart_date, traveler_count, …
  • bookings — id, user_id, trip_id, conversation_id, flight_id, source, confirmation_code, status, …
  • bill_splits — id, booking_id, user_id, name, contact, amount_cents, currency, status, …
  • notifications — id, user_id, kind, title, body, link, read_at, created_at

API (11 handlers)

  • \_seed api/src/handlers/_seed.ts
  • \_test api/src/handlers/_test.ts
  • bookings api/src/handlers/bookings.ts
  • conversations api/src/handlers/conversations.ts
  • flights api/src/handlers/flights.ts
  • notifications api/src/handlers/notifications.ts
  • preferences api/src/handlers/preferences.ts
  • profile api/src/handlers/profile.ts
  • speech api/src/handlers/speech.ts
  • splits api/src/handlers/splits.ts
  • trips api/src/handlers/trips.ts

Subscription tiers

free / pro / team — gated by: maxBookings, maxConversations, advancedFeatures, canExport, retentionDays

Built from 20 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • ANTHROPIC_API_KEY Anthropic API key for the agent
  • OPENAI_API_KEY OpenAI API key for Whisper speech-to-text and text-to-speech
  • STRIPE_SECRET_KEY Stripe secret API key (sk_test_... in test mode)
  • STRIPE_WEBHOOK_SECRET Stripe webhook signing secret (whsec_...)

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing