BI stack for the Tunisian used-car market: ETL, a PostgreSQL star schema warehouse, a FastAPI backend, and a trilingual (Derja/French/English) chatbot, in Docker Compose.
# 🚗 Tunisian Automobile Market Analyzer & Price Index
**A full BI stack for the Tunisian used-car market** — synthetic-data ETL, a PostgreSQL star schema warehouse, a FastAPI backend, and a trilingual (Derja 🇹🇳 · French 🇫🇷 · English 🇬🇧) chatbot, all wrapped in a one-command Docker Compose stack.
---
## 🖼️ Preview
---
## ✨ Key Features
- 🤖 **Trilingual chatbot** — ask in Tunisian Derja, French, or English; a rule-based NLU engine detects the language, classifies intent, and replies in kind — no external LLM, fully offline and reproducible
- 🏗️ **Kimball-style star schema** — `fact_car_listings` joined against `dim_car_model`, `dim_seller_location`, and `dim_date` in PostgreSQL
- 🔄 **Reproducible ETL pipeline** — pandas + SQLAlchemy, with a realistic depreciation-curve pricing model (age, mileage, condition, fuel type, transmission)
- 📊 **6 ready-to-run BI queries** — price index, depreciation curve, regional index, fuel-type adoption trend, best-value finder, transmission/seller premium
- 💻 **Built-in web chat UI** — a real webpage with live stat tiles, a browsable car catalog, and a chat panel; no Swagger/Postman needed to try it
- 🐳 **One-command stack** — `docker-compose up` boots Postgres, Adminer, and the API together
- 🌓 **Light & dark mode** — the web UI follows your OS theme automatically
---
## 🧰 Tech Stack
| Layer | Technology |
|---|---|
| ETL & data generation | Python, pandas, NumPy |
| Warehouse loading | SQLAlchemy 2.0 |
| Database | PostgreSQL 16 (star schema) |
| API | FastAPI, Pydantic, Uvicorn |
| Frontend | Vanilla HTML / CSS / JS (no build step, no framework) |
| Chatbot NLU | Custom rule engine (regex + keyword scoring) |
| DB admin | Adminer |
| Orchestration | Docker Compose |
---
## 🖼️ Screenshots Gallery
| Desktop Dashboard | Dark Mode |
|:---:|:---:|
| | |
| Mobile View | Trilingual Chat, close up |
|:---:|:---:|
| | |
---
## 🚀 Getting Started
### Prerequisites
- Docker + Docker Compose
### 1. Clone and …