Functional MVPCase 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.

LangGraphMCPLiteLLMGeminiNext.jsTypeScriptFastAPIPythonSQLModelSQLiteCeleryRabbitMQRapidAPISMTPDocker

Problem

Flight search is usually form-heavy, brittle, and disconnected from how people naturally describe trips. Users may provide ambiguous cities, invalid dates, flexible budgets, or incomplete constraints, while still expecting reliable flight options and ongoing price checks over time.

What I Built

I built a full-stack flight booking assistant with both conversational and structured search flows. The system extracts trip intent with an LLM, validates fields, resolves cities into IATA-ready search inputs, calls flight provider APIs, stores saved trip requests, and supports scheduled price tracking with run history.

Architecture

  • LangGraph agent workflow
  • LiteLLM model routing
  • MCP-style flight/place tool layer
  • RapidAPI flight provider integration
  • Next.js + TypeScript frontend
  • FastAPI backend
  • SQLModel + SQLite persistence
  • Authenticated saved trip ownership
  • Celery + RabbitMQ scheduler
  • SMTP password reset flow
  • Admin dashboard and user controls

Core Features

  • Conversational trip search
  • LLM intent extraction
  • Dropdown-based structured search
  • IATA/place resolution and validation
  • Saved trip requests
  • Run history and offer details
  • Editable target budget
  • Scheduled price tracking
  • Pause, resume, and stop lifecycle
  • Auth, signup, login, and logout
  • Forgot password with email reset
  • Profile settings and password change
  • Admin dashboard
  • User restrict, restore, and delete

Price Tracking Lifecycle

SkyBook separates trip outcome from tracking lifecycle. A route can be completed when the target budget is met, watching when scheduled checks are active, idle when offers exist but tracking is off, failed when no usable offer is found, and paused or stopped by the user.

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

Validation and Resilience

  • Failed resolver protection
  • No provider calls for invalid payloads
  • Strict date validation
  • IATA code validation
  • Budget-aware offer persistence
  • Tracking baseline retained even when budget filters hide offers
  • Auth-scoped trip ownership
  • Admin-only protected routes

Tech Stack

LangGraph, MCP, LiteLLM, Gemini, Next.js, React, TypeScript, FastAPI, Python, SQLModel, SQLite, Celery, RabbitMQ, RapidAPI, SMTP, Docker, Tailwind CSS

Current Status

Functional MVP with local scheduler and authenticated workflows

Next Steps

  • Deploy hosted demo
  • Add architecture diagram
  • Add provider comparison and fallback metrics
  • Add notification alerts for target price hits
  • Move SQLite to Postgres for production
  • Add user-level rate limits for manual Run Now