AI-powered travel assistant app for Tunisia - Node.js backend, Flutter mobile app, Next.js admin panel
# SkyRAG — AI Tunisian Travel Assistant
SkyRAG is a multilingual travel planning assistant that combines an LLM with Retrieval-Augmented Generation (RAG) to provide travel recommendations and trip plans. It features a Flutter mobile app, a Node.js API backend, and a Python FastAPI AI service.
## Version Stack
| Component | Version / Detail |
|---|---|
| **Python** | 3.11 |
| **Base LLM** | `unsloth/Llama-3.2-3B-Instruct-bnb-4bit` (4-bit quantized, no LoRA) |
| **Embedding model** | `sentence-transformers/all-MiniLM-L6-v2` |
| **FAISS index** | `faiss_index_skyrag_v6_enriched` (V6 enriched, ~18 MB) |
| **PyTorch** | 2.x (CUDA 12+) |
| **Intent classifier** | Rule-based + Gemini fallback (`ENABLE_GEMINI_PRIMARY_INTENT`) |
| **Ranking engine** | 6 signals: similarity 0.20, category 0.15, destination 0.20, rating 0.15, budget 0.10, tag overlap 0.20 |
| **Analytics DB** | SQLite (`data/evaluation/skyrag_eval.db`) |
| **Node.js** | 18+ |
| **Backend** | Express + MySQL (XAMPP) |
| **Flutter** | 3.x |
| **Dart** | 3.x |
## Architecture
```
Flutter App (mobile/)
→ Node.js API (backend/, port 8000)
→ Python FastAPI (skyrag_fr_en_v3_base/, port 5004)
→ Agent (skyrag_fr_en_v2/agent.py)
→ Base LLM (skyrag_fr_en_v1/models/llama3_2_3b_4bit/)
→ FAISS index (faiss_index_skyrag_v6_enriched/)
→ Intent Classifier (skyrag_fr_en_v3/)
→ Scope Guard (skyrag_fr_en_v3/)
→ Preference Extractor (skyrag_fr_en_v3/)
→ Ranking Engine (skyrag_fr_en_v3/)
→ Response Checker (skyrag_fr_en_v3/)
→ Query Rewriter (skyrag_fr_en_v3/)
→ Source Router (skyrag_fr_en_v3/)
```
## Folder Structure
```
SkyRAG/
├── ai-tunisian-travel-assistant/
│ ├── frontend/ # Flutter mobile app
│ ├── backend/ # Node.js API server
│ └── admin/ # Admin web panel
├── skyrag_fr_en_v3_base/ # Active FastAPI server (port 5004)
│ ├── server.py # Main entrypoint
│ ├── config.py # Server configuration
│ └── dashboard.py # Analytics dashboard HTML/JS
├── skyrag_f …