Skip to content

2026 · 1 min read

Holiday Concierge

An AI travel-planning concierge — conversational planning backed by live flight and hotel data, a background job queue, and a human-readable admin console.

aiautomationproduct

The idea

Most travel tools make you do the work: endless filters, tabs, and re-searching. I wanted to test the opposite shape — you describe the trip you're imagining, and a concierge does the legwork, checks real availability, and comes back with a considered plan.

How it works

A conversational planner sits on top of Google's Gemini, but the model is only one component. The system around it does the heavy lifting:

  • Live data — flight and hotel offers come from the Amadeus APIs, with hotel coverage supplemented through Booking.com. When a provider is unavailable, the system degrades gracefully to clearly-labelled estimates instead of failing or pretending.
  • Sessions and accounts — Supabase handles auth and storage across an eight-table schema (profiles, sessions, messages, plans, jobs, notifications, admins, system logs), with row-level security throughout.
  • A job queue — longer research tasks run as background jobs processed on a schedule, so the conversation never blocks on a slow search. Users get notified in-app (and by email via Resend) when a plan is ready.
  • An admin console — every session, job, and log line is inspectable. An AI system you can't observe is an AI system you can't trust.

Lessons

The interesting engineering wasn't the model call — it was everything around it: queueing, fallbacks, observability, and knowing when to show an honest estimate instead of a confident guess. Orchestration is the product.

Status

Built and run as a working system through 2025–26; now retired from the live site as part of this rebuild. The architecture — model + queue + live-data fallbacks + observable admin — is the template I reuse for agentic products.