---
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.**
[](https://huggingface.co/spaces/nipunkavindaAI/NovaDXB)
[](https://www.python.org/)
[](https://www.langchain.com/)
[](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
[](https://www.linkedin.com/in/nipun-kavinda/)
[](https://github.com/NipunKavinda95)
[](https://huggingface.co/nipunkavindaAI)
---
_If you found this project interesting, consider giving it a β_