Introducing NovaDesk AI: Building a Stateful Hotel Concierge with LangGraph
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: / NovaDesk_AI ποΈ 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β¦ View on GitHub 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. 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: 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. 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. 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. 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. 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. 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: checkpointer and InMemorySaver to handle state. 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!
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! π
Key Takeaways
- β’I wanted to dive deep into Agentic AI and LangGraph, but I needed the right playground.
- β’This story was reported by Dev.to, covering developments in the dev space.
- β’AI advancements continue to reshape industries β read the full article on Dev.to for complete coverage.
π Continue reading the full article:
Read Full Article on Dev.to βShare this article



