NovaDXB / README.md
nipunkavindaAI's picture
README Update and env.example add
d780bd4
|
Raw
History Blame Contribute Delete
10.1 kB
---
title: NovaDXB
emoji: πŸ“ˆ
colorFrom: purple
colorTo: indigo
sdk: docker
pinned: false
license: mit
short_description: AI-powered Agentic Concierge for Dubai Tourists and Visitors
---
<div align="center">
# ✦ 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)
</div>
---
## πŸ“– 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
<div align="center">
| 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 |
</div>
### 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)
---
<div align="center">
_If you found this project interesting, consider giving it a ⭐_
</div>