When you start learning Agentic AI, you quickly hit a wall. Most tutorials show you how to build a basic chatbot that can search the web or call a simple calculator tool. But building a system that can actually manage multi-step processes, route intents, and remember context requires a massive leap in complexity.
I wanted to dive deep into Agentic AI and LangGraph, but I needed the right playground. If a project is too simple, you don't actually learn the orchestration framework. If it requires heavy domain logic (like the complex mortgage analytics I deal with at work), you spend all your time writing business rules instead of AI agents.
Enter NovaDesk AI: a fully stateful, hotel customer conceirge system.
Before we get into what it does, you can see the final system in action here:
🎥 YouTube:
💻 Github:
🛎️ AI Hotel Concierge (LangGraph + FastAPI)
An enterprise-grade, stateful AI agent built to simulate a virtual hotel front desk. Unlike basic Q&A chatbots, this system bridges the gap between unstructured natural language and strict database transactions, allowing users to query policies, check room availability, book rooms, and request room service seamlessly.
This project demonstrates advanced AI engineering concepts including Agentic Orchestration (LangGraph), Advanced RAG (HyDE & Query Rewriting), State & Memory Management, and Human-in-the-Loop (HITL) security via FastAPI.
🏗️ Architecture Overview
The system is broken down into three main layers:
Frontend (Chainlit): Provides a clean, conversational chat UI.
Orchestration Brain (LangGraph): Manages conversation state, memory, guardrails, and decision routing.
Action Execution (FastAPI): Serves as the toolkit for the agent, exposing REST endpoints to interact securely with the SQLite database.
System Architecture
✨ Key Features
-
Strict Domain Guardrails: A routing node intercepts prompts. If a user asks off-topic questions (e.g…
This post is the introduction to a multi-part series where I will document the entire build—from architecture and LangGraph subgraphs to RAG optimization and memory management. But first, let’s look at what the system actually does.
What is NovaDesk AI?
NovaDesk AI isn't just a wrapper around an LLM prompt. It is a system designed to act like a real hotel concierge. It connects to a database, enforces booking policies, asks clarifying questions when information is missing, and remembers who you are.
Note: Now, we can use even a non-AI website to book rooms or request for cancellations. Except for asking questions and getting immediate and relevant answers (using RAG), this project may not require AI. But the advantage is, the customer can speak in natural language and get answers in natural language. Also, the purpose of this project was more about learning.
Here are the core capabilities I built into the system:
1. Smart Policy Q&A (RAG)
Users can ask unstructured questions about hotel policies (e.g., "What is the pet fee?" or "Can I get late checkout?"). The bot retrieves the exact answers from a knowledge base, handling multi-part and confusing queries without hallucinating.
2. Live Room Availability & Bookings
The bot is connected to a mock SQLite database. If a user asks for a room this weekend, the bot checks the database, confirms availability, and walks the user through the booking process. If the user forgets to provide an email or a name, the bot realizes the missing parameters and asks for them before executing the booking.
3. Stateful Cancellations
Handling cancellations requires precision. The bot can retrieve a user's current booking from the database and securely execute a cancellation subgraph, updating the backend instantly. The subgraph also includes HITL (Human-in-the-loop) to ensure cancellation can't occur automatically and requires admin approval.
4. Room Service Integration
As a fun extra feature, I built a room service tool. The bot recognizes when a user wants food, pulls from a predefined menu of dishes, and records the order.
5. Persistent Memory
A concierge shouldn't forget what you said two minutes ago. NovaDesk AI uses short-term and persistent memory so a user can say, "Actually, change that to two nights," and the bot understands the context perfectly.
The Tech Stack (At a Glance)
To make all of this happen, I used:
- LangGraph: The brain of the operation, using nodes, edges, and subgraphs to orchestrate the AI's workflow predictably.
- FastAPI: To build the endpoints that actually interact with the database.
- SQLite: For the mock hotel backend.
- Vector Database (FAISS): To store and retrieve policy documents.
- LangGraph Memory:
checkpointerandInMemorySaverto handle state.
Taking it Live
As a final milestone, I managed to deploy the FastAPI backend to Azure so it’s publicly accessible. Deployment is still a massive learning curve for me, and getting it live was an adventure of its own, but having a working production URL is incredibly satisfying!
What's Next in this Series?
Building this was a series of trial and error, and I want to share exactly what broke and how I fixed it. In the upcoming posts, I will be doing deep dives into specific engineering challenges:
- Part 2: The RAG Evolution. Why basic RAG failed my Golden Dataset, and how I fixed it using Query Rewriters, HyDE, and Maximal Marginal Relevance (MMR).
- Part 3: LangGraph Subgraphs. How I designed the routing architecture and connected LangGraph nodes to FastAPI endpoints for bookings and cancellations.
- Part 4: Memory & State. How I managed short-term and persistent memory so the bot never loses track of the conversation.
If you are learning GenAI, LangGraph, or just want to see how to architect an agentic workflow, make sure to follow along!
Have you started experimenting with LangGraph yet, or are you still relying on standard LangChain agents? Let me know in the comments! 👇

Top comments (2)
Nice one.. waiting for the next articles!
Thank you!