Case 05 · Travel & Hospitality

Duffel Flight & Stays Booking Integration

Travel API Integration Engineersduffel.comProduct EngineeringData & IntegrationAI & Automation
← All case studies

Duffel is a modern travel API for flights (NDC/GDS content from 300+ airlines) and stays, with REST/JSON and official SDKs. We built the client's booking adapter on top of it, plus an LLM travel concierge that turns plain-language requests into Duffel searches.

The challenge

A corporate-travel SaaS wanted to embed multi-trip booking inside its spend-management platform, with a concierge that understood requests like "3-day trip to Atlanta next month, under $800". Integrating airlines directly meant wrestling antiquated GDS protocols and brittle SOAP feeds.

  • Mapping natural-language trip requests onto Duffel's OfferRequest → Offer → Order resource model.
  • Handling fast-expiring offers — fares go stale in seconds, so quotes had to be refreshed at the moment of selection.
  • Collecting payment and ticketing reliably, then persisting the airline booking reference for post-booking changes.
Our solution

We built an integration layer on the Duffel API using the @duffel/api SDK: an LLM extracts slices and passengers from chat, we POST /air/offer_requests, stream offers to the UI, re-fetch the chosen offer to beat staleness, collect payment, and POST /air/orders to ticket.

  • An LLM concierge that parses chat into slices[].origin/destination/departure_date and passenger counts, then issues a Duffel offer request.
  • A selection flow that re-fetches GET /air/offers/{id} at click-time so the customer never books a stale fare.
  • A booking module that collects payment, calls POST /air/orders, and persists the airline booking_reference for seat, baggage, and refund workflows.

A customized view of the system we shipped for this engagement — the components and how requests and data flow between them.

intentofferscacheorders🖥️Booking UI🧠LLM Concierge⚙️Node BookingAdapter✈️Duffel API🛫300+ Airlines /NDCRedis OfferCache🗄️Bookings DB
ReactTypeScriptNode.js@duffel/api SDKDuffel REST APIRedisLLM ConciergeVercel Edge
Replaced brittle GDS/SOAP bridges with one REST integration covering 300+ airlines.
Eliminated stale-fare booking errors via click-time offer refresh.
Let users book multi-leg corporate trips from a single natural-language request.
Direct value addedTurns travel booking into an embedded, conversational feature inside the client's own product, opening direct booking flows without legacy GDS engineering.
Why it mattersTravel's value is in bridging legacy airline distribution to a clean REST surface. Duffel does the accreditation; our concierge layer is where the AI experience and the booking reliability live.

Before — manual bottleneck flow

1Agent Email InquiryBottleneck
Travel Coordinator · 1 hour

Coordinator emails carriers to check seats and fares for each corporate trip.

2Green-Screen AllocationBottleneck
GDS Desk Agent · 3 hours

Agent blocks seats on legacy terminals and manually reconciles fare rules.

3Manual Ticket DispatchBottleneck
Coordinator · 4 hours

Tickets and confirmations are emailed out one traveler at a time.

After — automated optimized flow

1Conversational Search
LLM Concierge · 3 secs

Plain-language request becomes a Duffel offer request across 300+ airlines.

2Fresh-Offer Selection
Booking UI · 30 secs

The chosen offer is re-fetched at click-time so the fare is always current.

3Auto Ticketing
Duffel Order Node · 2 secs

Payment is collected, the order is created, and the booking reference is stored.

Portrait of Aris Thorne
What I cared about most was no stale fares at checkout, and that's exactly what we got. Users describe a trip in plain language and the booking holds — we stopped fielding 'the price changed' support tickets almost overnight.
Aris Thorne at CTM Group

Have a problem like this?

Tell us your goal and we'll turn it into a structured plan — from idea to stable, scalable reality.

Contact us