© 2026 Chiranjeev (@chiranr19) — All Rights Reserved. This project is source-available for viewing only; it is not open source. No copying, reuse, modification, deployment, or redistribution of any part of it (or its underlying ideas) without prior written permission — see LICENSE and SIGNATURE. Prospective employers and collaborators are welcome to read the code. · authorship sigil
6YHJ·BKOP·VJCG·NOAX
A conversational hotel-room booking assistant. It parses natural-language requests ("a room in Chennai for 2 guests, Aug 20 to 23, under ₹1500"), keeps per-session memory so it doesn't re-ask what you've already answered, and returns matching rooms.
flowchart TD
U([User message]) --> C[Flask /chat]
C --> L[LLM slot extraction<br/>Llama-3 via OpenRouter]
C --> H[Heuristics<br/>city · guests · date range]
L --> S[Session memory<br/>fills missing slots]
H --> S
S -->|missing info| Q[Ask a follow-up question]
S -->|all slots filled| SR{Search backend}
SR -->|Meilisearch up| M[Meilisearch]
SR -->|otherwise| J[In-memory rooms.json]
M --> R([Room results])
J --> R
style R fill:#FF5CAA,color:#fff
- LLM slot-filling extracts location, dates, guests, and budget from free text.
- Heuristic fallbacks for city, guest count, and date-range parsing keep it useful even when the model is unsure.
- Resilient search — uses Meilisearch when it's running, and otherwise falls back
to a built-in in-memory filter over
rooms.json, so it runs from a clean clone with zero extra infrastructure.
You: I need a room in Chennai for 2 people
Bot: What dates will you be staying (check-in and check-out)?
You: Aug 20 to 23, budget 1500
Bot: • Suite #1 - ChippyInn — ₹1388 | Chennai | sleeps 2
python -m venv venv && source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
export OPENROUTER_API_KEY=<your key> # Windows: set OPENROUTER_API_KEY=<your key>
python server.pyThen open http://localhost:5000 and start chatting. Get an OpenRouter key at
https://openrouter.ai/keys. The key is read from the OPENROUTER_API_KEY environment
variable — it is never hard-coded or committed.
In-memory search is enabled by default. To use Meilisearch instead, start it first:
docker run -p 7700:7700 getmeili/meilisearchOn startup the server prints which backend it selected.
| File | Purpose |
|---|---|
server.py |
Flask backend: LLM extraction, session memory, room search (Meili or in-memory) |
rooms.json |
Sample room inventory |
static/ |
Minimal chat front-end (index.html, chat-widget.html, script.js) |
Proprietary — All Rights Reserved. Source-available for viewing only; not open source. No use, copy, or reuse without written permission. See LICENSE.