B2B SaaS · Travel

GalaFlow

A multi-tenant platform for travel agencies. An agent describes a trip in plain language; the AI assistant returns a costed itinerary — flights, hotels, transfers, activities — which the agent then edits, books, invoices, and sends to the client as a branded PDF.

Multi-Tenant SaaSAI IntegrationRails APISubscription BillingWhite-Label Exports
GalaFlow agency dashboard showing revenue, bookings and client figures

what we delivered

Agencies were quoting trips by hand — spreadsheets for pricing, a Word document per client, and no shared record of what was booked. GalaFlow turns that into one system: the itinerary, the bookings, the invoice, and the client-facing document are all the same object.

An agent describes a Japan trip in one sentence; the assistant returns flights, hotels and a per-person cost
One sentence in, a priced seven-day itinerary out — the agent edits from there.

AI itinerary drafting

A chat endpoint runs each turn through a session manager that extracts trip parameters — destinations, dates, pax, budget — and assembles a costed itinerary. Replies stream back over Server-Sent Events, so a long answer appears as it is written rather than after a wait.

tenancy that holds at the query layer

Every agency's data is scoped by the tenant, not by controller checks. An ID belonging to another agency raises a record-not-found and returns a 404 — the row is invisible rather than merely forbidden. Roles (admin, agent, viewer) gate actions on top of that.

bookings and billing

Itinerary items carry their own booking state, so a trip can be half-confirmed while flights are still pending. Agency subscriptions run on PayMongo with seat counts, billing cycles, and trial/past-due states tracked against the agency record.

white-label client documents

Agencies set their own logo, colors, typography, and contact details, previewed live against a sample itinerary. Every client-facing PDF and booking email goes out in the agency's branding, not ours.

an audited record

Actions write to a polymorphic audit log, so an agency owner can see who changed a price, who cancelled a booking, and when — the questions that surface when a client disputes what they were quoted.

what this demonstrates

GalaFlow is a full-stack SaaS build — API, frontend, AI integration, billing, and the deployment pipeline around it. Here's what this project shows we can do for you.

Multi-tenant architecture

Tenancy enforced at the data layer, with role-based gates above it. The isolation is structural, so a missed check in a controller cannot leak another tenant's rows.

LLM product integration

An AI feature wired into real domain objects — parameter extraction, itinerary assembly, and streamed responses, behind an adapter that keeps the provider swappable.

Rails API engineering

Rails 8 with PostgreSQL, Redis, and Sidekiq for background work. UUID primary keys, enum-backed state, and health endpoints for liveness, database, and cache.

Subscription billing

Plans, seats, billing cycles, and lifecycle states from trialing through past-due — integrated with a local payment processor rather than assuming Stripe.

Testing across the split

RSpec on the API, Vitest for pure frontend logic, and Playwright for anything that renders or routes — a deliberate division rather than one runner stretched over everything.

CI/CD and observability

Pull-request checks for lint, tests, and dependency audits; staging deploys that poll until the release settles, smoke-test health endpoints, and report to Slack. Sentry on both halves.