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
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
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
@molecule/api-ai-agents@molecule/api-ai-agents-llm@molecule/api-ai-anthropic@molecule/api-ai-speech-elevenlabs@molecule/api-ai-speech-openai@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-flights@molecule/api-flights-amadeus@molecule/api-payments-stripe@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-sms@molecule/api-sms-capture@molecule/api-sms-twilio@molecule/app-ai-voice@molecule/app-billing-react
Required secrets
DATABASE_URLPostgreSQL connection stringANTHROPIC_API_KEYAnthropic API key for the agentOPENAI_API_KEYOpenAI API key for Whisper speech-to-text and text-to-speechSTRIPE_SECRET_KEYStripe secret API key (sk_test_... in test mode)STRIPE_WEBHOOK_SECRETStripe 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