DeployedCase study

SkyBook AI

Full-stack agentic flight booking and price-tracking platform

SkyBook AI is a full-stack agentic travel platform that converts natural-language trip requests into structured flight searches, API-backed offers, authenticated saved trips, admin-managed user access, and resilient scheduled price tracking.

LangGraphMCPLiteLLMGeminiLangfuseGroqOpenRouterOllamaNext.jsTypeScriptFastAPITurso/libSQLCeleryRabbitMQGrafana

Problem

Flight search is usually form-heavy, brittle, and disconnected from how people naturally describe trips. Users may provide ambiguous cities, incomplete dates, flexible budgets, or changing constraints while still expecting reliable live offers, saved trip state, and ongoing price checks.

What I Built

I built a full-stack flight booking assistant with conversational and structured search flows. The system extracts trip intent with an LLM, validates fields, resolves places into provider-ready inputs, searches live flight APIs, stores saved trips, tracks prices through scheduled scans, and exposes admin controls, feedback, and observability.

Architecture

  • LangGraph agent workflow
  • LiteLLM fallback routing
  • Gemini, Groq, OpenRouter, Ollama models
  • MCP-style flight/place tool layer
  • RapidAPI flight search
  • Next.js + TypeScript frontend
  • FastAPI + Pydantic backend
  • Turso/libSQL persistence
  • Authenticated saved trip ownership
  • Celery + RabbitMQ scheduler
  • Langfuse + OpenTelemetry tracing
  • Grafana/Prometheus monitoring

Core Features

  • Conversational trip search
  • LLM intent extraction
  • Dropdown-based structured search
  • IATA/place resolution and validation
  • Provider-backed offer search
  • Canonical offer normalization
  • Saved trip requests
  • Run history and offer details
  • Scheduled price tracking
  • Run Now / boost scans
  • Auth, signup, login, and logout
  • Forgot password with email reset
  • Admin dashboard and quota controls
  • Feedback capture and LLM eval gates

Price Tracking Lifecycle

SkyBook separates trip outcome from tracking lifecycle. A route can complete when the target budget is met, continue watching while scheduled checks are active, pause when tracking is disabled, fail when providers return no usable offers, or stop when the user ends monitoring.

  • New
  • Idle
  • Watching
  • Completed
  • Failed
  • Paused
  • Stopped

Validation and Resilience

  • Search-ready gating before provider calls
  • No provider calls for invalid payloads
  • Strict date and place validation
  • LLM fallback via Groq/OpenRouter/Ollama
  • Provider failure handling
  • Turso-safe trip deletion
  • Quota-protected expensive actions
  • Langfuse/OpenTelemetry production traces

Tech Stack

LangGraph, MCP, LiteLLM, Gemini, Groq, OpenRouter, Ollama, Next.js, React, TypeScript, FastAPI, Python, Pydantic, SQLModel, SQLAlchemy, Turso/libSQL, Celery, RabbitMQ, RapidAPI, Booking.com, Google Flights, Duffel-style place suggestions, Langfuse, OpenTelemetry, Prometheus, Grafana, Docker, Caddy, Vercel.

Current Status

Deployed production MVP with Vercel frontend, FastAPI backend, Turso/libSQL persistence, authenticated saved trips, Celery/RabbitMQ scheduled tracking, admin quota controls, feedback capture, and observability/evaluation workflows.

Next Steps

  • Public launch polish
  • Price-drop notification alerts
  • Provider fallback metrics
  • Airport ambiguity grouping
  • Cost and quota analytics
  • Multi-city trip planning