← All posts

LangGraph Travel Agent

Travel advisor delivered to a U.S. agency · concurrent supplier search with resumable human review

Built with Python · LangGraph · FastAPI · AsyncIO · Amadeus / Hotelbeds

Architecture diagram of a LangGraph travel advisor with FastAPI task polling, customer-information handoff, concurrent Amadeus and Hotelbeds search, package synthesis, HubSpot handoff, and a review boundary
Code-grounded workflow · InMemorySaver and in-memory job store in the public implementation

WHY

A U.S. travel agency asked for an agent that could turn a natural-language request into flight, hotel, attraction, and restaurant options that respected each customer's budget and schedule. In the manual workflow, missing information, supplier searches, package comparison, CRM updates, and follow-up communication were repeated across separate tools. The system needed to preserve context from the first request through human review and customer contact.

Supplier search Concurrent

Amadeus and Hotelbeds via asyncio.gather

Package synthesis 3 tiers

Budget, Balanced, and Premium

Delivery U.S. agency

Contract work released later as public OSS

HOW

A resumable path from request to reviewable travel package

Each node has one operational responsibility, while the graph retains enough state to pause and resume without rebuilding the request.

  1. 01 Collect constraints

    Normalize traveler, dates, budget, and preferences; pause when required customer information is missing.

  2. 02 Search concurrently

    Run flight and hotel supplier queries in parallel and return results through asynchronous task polling.

  3. 03 Synthesize packages

    Build three comparable package tiers and calculate the full trip cost from the same typed schema.

  4. 04 Review and handoff

    Save the selected context to HubSpot and keep outbound actions behind an explicit review boundary.

RESULT

Synthetic example comparing Budget, Balanced, and Premium travel packages with itemized total-cost arithmetic
Schema-based synthetic example · not live supplier or client data

Contribution

  • Designed and implemented the LangGraph state, conditional routing, asynchronous supplier search, package synthesis, API task lifecycle, and CRM handoff.
  • Delivered the system to a U.S. travel agency and retained the contractual IP for a later public-source release.

Evidence

Source code Graph, API, supplier tools, and typed travel-package models