--- title: NovaDXB emoji: πŸ“ˆ colorFrom: purple colorTo: indigo sdk: docker pinned: false license: mit short_description: AI-powered Agentic Concierge for Dubai Tourists and Visitors ---
# ✦ NOVADXB ### Explore Dubai. Intelligently. **An AI agentic concierge that plans your entire Dubai trip β€” itinerary, budget, dining, and area recommendations β€” through natural conversation.** [![Live Demo](https://img.shields.io/badge/Live%20Demo-HuggingFace%20Spaces-FFD21E?style=for-the-badge&logo=huggingface&logoColor=black)](https://huggingface.co/spaces/nipunkavindaAI/NovaDXB) [![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![LangChain](https://img.shields.io/badge/LangChain-1.3-1C3C3C?style=for-the-badge)](https://www.langchain.com/) [![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE) [**πŸš€ Try the Live App**](https://huggingface.co/spaces/nipunkavindaAI/NovaDXB) Β· [**πŸ“‹ Report a Bug**](https://github.com/NipunKavinda95/NovaDXB/issues) Β· [**πŸ’‘ Request a Feature**](https://github.com/NipunKavinda95/NovaDXB/issues)
--- ## πŸ“– Overview Dubai welcomes **18+ million tourists every year**, yet trip planning still means scattered blog posts, outdated listicles, and guesswork about real costs. **NovaDXB** is an agentic AI concierge built specifically for Dubai tourism. Rather than a simple Q&A chatbot, it's a reasoning agent equipped with specialized tools that plans complete, personalized Dubai experiences β€” thinking like a local concierge, not a search engine. > Tell it your budget, your travel style, and your dates β€” NovaDXB builds a complete itinerary with real area names, real restaurant recommendations, and real AED pricing, pulled from a curated Dubai-specific knowledge base. --- ## ✨ Key Features | Feature | Description | | ------------------------------ | --------------------------------------------------------------------------------- | | πŸ—ΊοΈ **Smart Itinerary Builder** | Generates complete day-by-day Dubai plans with real places, timing, and costs | | 🏨 **Area Recommender** | Matches the best Dubai neighborhood to your budget and travel style | | 🍽️ **Dining Concierge** | Restaurant recommendations from street food to fine dining, with real AED pricing | | πŸ’° **Budget Estimator** | Transparent daily/total cost breakdowns across Budget, Mid, and Luxury tiers | | 🌀️ **Weather Advisor** | Seasonal guidance and packing tips based on Dubai's climate patterns | | πŸ’± **Currency Converter** | Quick AED conversions for major tourist currencies | | πŸ“ **Local Knowledge Base** | Curated insider tips and hidden gems most tourists never discover | | πŸ€– **Agentic Reasoning** | Multi-step planning β€” the agent decides which tools to call, not a fixed script | --- ## πŸ› οΈ Tech Stack
| Layer | Technology | | -------------------- | ------------------------------------------- | | **LLM** | OpenAI GPT-4o-mini | | **Agent Framework** | LangChain + LangGraph (ReAct agent pattern) | | **RAG Engine** | LlamaIndex | | **Vector Database** | Pinecone | | **Backend** | Flask + Waitress (WSGI) | | **Frontend** | HTML / CSS / JavaScript | | **Containerization** | Docker | | **Deployment** | HuggingFace Spaces |
### Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Frontend β”‚ ───▢ β”‚ Flask API β”‚ ───▢ β”‚ LangGraph Agent β”‚ β”‚ (HTML/CSS/JS)β”‚ β”‚ (rate-limited,β”‚ β”‚ (7 MCP tools) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ sanitized) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ RAG Engine β”‚ β”‚ (LlamaIndex) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Pinecone Vector β”‚ β”‚ Database β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` The agent receives a user query, reasons about which tool(s) it needs (itinerary planning, budget estimation, area recommendation, etc.), retrieves grounded context from the Dubai knowledge base via RAG, and returns a specific, actionable response β€” never generic advice. --- ## πŸ“‚ Project Structure ``` NovaDXB/ β”œβ”€β”€ data/ # Knowledge base (RAG source documents) β”‚ β”œβ”€β”€ areas_guide.csv # 20+ Dubai neighborhoods β”‚ β”œβ”€β”€ attractions.csv # 30+ attractions with costs & tips β”‚ β”œβ”€β”€ dining_guide.csv # 25+ restaurants across all budgets β”‚ β”œβ”€β”€ practical_info.txt # Visa, transport, culture, safety β”‚ β”œβ”€β”€ budget_logic.txt # Budget/Mid/Luxury cost breakdowns β”‚ β”œβ”€β”€ seasonal_guide.txt # Month-by-month climate & events β”‚ └── hidden_gems.txt # Local insider tips β”œβ”€β”€ static/ # Frontend assets β”‚ β”œβ”€β”€ index.html # Chat interface β”‚ └── landing.html # Landing page β”œβ”€β”€ app.py # Flask application (routes, security, rate limiting) β”œβ”€β”€ agent.py # LangGraph ReAct agent + 7 MCP tools β”œβ”€β”€ rag_engine.py # LlamaIndex + Pinecone RAG pipeline β”œβ”€β”€ requirements.txt # Python dependencies β”œβ”€β”€ Dockerfile # Container definition └── .env.example # Environment variable template ``` --- ## πŸš€ Getting Started ### Prerequisites - Python 3.11+ - An [OpenAI API key](https://platform.openai.com/) - A [Pinecone API key](https://www.pinecone.io/) with an index created (1536 dimensions, cosine metric) ### Installation ```bash # Clone the repository git clone https://github.com/NipunKavinda95/NovaDXB.git cd NovaDXB # Create a virtual environment python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt ``` ### Configuration Create a `.env` file in the project root: ```env OPENAI_API_KEY=your_openai_api_key PINECONE_API_KEY=your_pinecone_api_key PINECONE_INDEX_NAME=novadxb SECRET_KEY=generate_with_python_secrets_token_hex_32 INGEST=false ``` > Generate a secure `SECRET_KEY` with: `python -c "import secrets; print(secrets.token_hex(32))"` ### First-Time Setup β€” Ingest the Knowledge Base ```bash # Set INGEST=true in .env, then run once: python rag_engine.py # Set INGEST=false afterward to avoid re-ingesting on every restart ``` ### Run Locally ```bash python app.py ``` Visit `http://localhost:7860` to see the landing page, or `http://localhost:7860/app` for the chat interface. --- ## πŸ”’ Security & Reliability NovaDXB was built with production-grade practices, not just hackathon-grade ones: - βœ… **Input sanitization** β€” strips control characters, enforces length limits - βœ… **Prompt-injection detection** β€” flags and safely redirects override attempts - βœ… **Rate limiting** β€” per-IP sliding window, prevents abuse and runaway API costs - βœ… **Response caching** β€” identical queries served instantly, reduces LLM calls - βœ… **Restricted CORS** β€” scoped to known origins, not wide open - βœ… **No leaked exceptions** β€” full error details logged server-side only - βœ… **Graceful startup handling** β€” missing API keys fail safely, not silently --- ## 🐳 Docker Deployment ```bash docker build -t novadxb . docker run -p 7860:7860 --env-file .env novadxb ``` --- ## πŸ—ΊοΈ Roadmap - [x] Core RAG pipeline with Pinecone + LlamaIndex - [x] Agentic reasoning with 7 specialized tools - [x] Security hardening (rate limiting, sanitization, CORS) - [x] Live deployment on HuggingFace Spaces - [ ] Premium split-panel UI with live itinerary visualization - [ ] Interactive map integration - [ ] Multi-language support --- ## 🀝 Acknowledgments Built as part of the **Decoding Data Science β€” AI Application Building Challenge**, supported by JetBrains and Google for Developers. --- ## πŸ“¬ Connect **Nipun Kavinda** β€” Industrial AI & MLOps Engineer, Dubai [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-0077B5?style=flat&logo=linkedin)](https://www.linkedin.com/in/nipun-kavinda/) [![GitHub](https://img.shields.io/badge/GitHub-NipunKavinda95-181717?style=flat&logo=github)](https://github.com/NipunKavinda95) [![HuggingFace](https://img.shields.io/badge/HuggingFace-nipunkavindaAI-FFD21E?style=flat&logo=huggingface&logoColor=black)](https://huggingface.co/nipunkavindaAI) ---
_If you found this project interesting, consider giving it a ⭐_