thaman / docs /PROJECT_STATUS.md
Turki Almurahhem
Refresh stale NYC v11 metrics to v22 across doc pipeline
6ef6f5f
|
Raw
History Blame Contribute Delete
4.18 kB
# THAMAN — Project Status
> Dual-City AI-Powered AVM (NYC + Riyadh)
> Last updated: 2026-07-10
---
## ✅ Project Complete — Deployed & Verified
- **HuggingFace Space:** https://huggingface.co/spaces/Turki-Almurahhem/thaman
- **GitHub:** https://github.com/turkialm/thaman-v2
- **Model hub (runtime artifacts):** https://huggingface.co/Turki-Almurahhem/thaman-models
### Launch Locally
```bash
cd /Users/totam/Desktop/THAMAN/new_try
uvicorn api.main:app --port 8000
# Open: http://localhost:8000/ui
```
Large files (models, feature CSVs) are gitignored and fetched at startup from
the `thaman-models` hub repo via `download_models.py`. **Any new data file the
API needs must be added to `download_models.py` FILES and uploaded to that
repo** — otherwise the live Space silently degrades. A startup integrity check
(`/health` → `integrity` block) now catches this at boot.
---
## Current Models (canonical — source of truth: `models/meta.json` / `models/riyadh_meta.json`)
### NYC — Stack v22
| Metric | Value |
|---|---|
| R² (holdout) | 0.6495 |
| MedAPE (holdout) | 20.32% |
| MAE (holdout) | $1,047,004 |
| Holdout rows | 27,763 |
| Features | 134 |
| CV | 10-fold Spatial GroupKFold (by NTA) |
| Stack | XGB-A + XGB-B + LightGBM + CatBoost + Ridge meta |
### Riyadh — Stack v12
| Metric | Value |
|---|---|
| R² (holdout) | 0.8014 |
| MedAPE (holdout) | 15.59% |
| MAE (holdout) | 986 SAR/m² |
| OOF R² / MedAPE | 0.9348 / 8.25% |
| Train / holdout rows | 5,531 / 1,730 |
| Features | 149 |
| CV | 5-fold Spatial GroupKFold (by district_ar) |
| Stack | XGB-A + XGB-B + LightGBM + CatBoost + Ridge meta |
Per-type holdout MedAPE: apartment 12.83%, villa 12.39%, plot 20.82%, building 18.61%.
---
## API (FastAPI, `api/main.py`)
| Endpoint | Description |
|---|---|
| `GET /health` | Model + spatial status + **data-integrity check** |
| `GET /metrics` | Live model metrics (feeds analytics dashboard) |
| `GET /bldgclasses` | NYC building class codes |
| `POST /predict` | NYC price (USD) + SHAP drivers + QC flags |
| `POST /predict/riyadh` | Riyadh price (SAR/m² + total) + spatial features |
| `POST /batch`, `/batch/riyadh` | Batch predictions (up to 50) |
| `GET /layers/nta`, `/layers/district` | Choropleth GeoJSON layers |
| `GET /nearby`, `/sales/tile` | NYC comparable sales |
| `GET /riyadh/stats` | Riyadh market analytics |
| `GET /ui` | Bilingual (EN/AR) map interface |
---
## Tests — 109 total (`pytest tests/ -v`)
api (22) · scorer (17) · feature parity (15) · SHAP (14) · regression pins (6) ·
golden ranges (9) · distribution (12) · load (5) + others.
Regression pins re-pinned 2026-07-10 (`python tests/update_regression_pins.py`
prints old→new values; apply manually to `tests/test_regression.py`).
---
## Incident Log (production bug classes — all fixed, all guarded)
1. **2026-06→07** — `features_riyadh.csv` missing from hub download list →
all Riyadh districts collapsed to ~2,500 SAR/m² fallback.
2. **2026-07-07**`overture_places.geojson` (619MB) never shipped → all 13
NYC POI features zero live. Fixed with compact `overture_poi_buckets.npz`
(1.2MB). Also fixed NYC `/predict` crash (UnboundLocalError in citibike
fallback).
3. **2026-07-10** — Riyadh v10/v11 feature injection read `district_ar` from a
dict that never contains it → metro + type-lag features dead for every
request (5 km metro fallback). Fixed; regression pins re-pinned.
Guard: `_startup_integrity_check()` in `api/main.py` verifies all hub files +
non-empty POI/district lookups at boot; `/health` reports `status: degraded`
with issue list on failure.
---
## Docs
- `docs/{thaman_paper, technical_report, defense_qa, demo_script}` in
.tex/.txt/.md + .docx. **The .docx files are generated by
`docs/generate_docx.py` whose content is hardcoded — editing .tex does NOT
update .docx; edit the script and re-run it.**
- Official report: root `THAMAN_Graduation_Project_2_Final_Report.tex`
(compile on Overleaf).
- Historic metrics that must stay in version-history tables only:
Riyadh v1 23.43%/0.675 (buggy), v2 18.16%/0.798, v11 0.8003/15.56%;
NYC v11 0.6450/20.24%.