SPB Git

spb/vrai-prix

Public

Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.

docs: README v2 — galerie multi-pages, style du site, documentation, contact

Simon-Pierre Boucher committed (Aug 24, 2026) parent e69204c Browse files

1 changed file +121 −29

Unified Split
modified README.md +121 −29
@@ -1,8 +1,16 @@
1−# Vrai-Prix 1+<p align="center">
2+ <a href="https://www.vrai-prix.com"><img src="https://www.vrai-prix.com/og.png" width="760" alt="Vrai-Prix — La valeur réelle de chaque propriété"></a>
3+</p>
4+
5+<h1 align="center">Vrai-Prix</h1>
2 6
3−**La vraie valeur de votre propriété, sans boîte noire — estimation immobilière transparente pour tout le Québec.** 7+<p align="center"><b>La valeur réelle de chaque propriété</b></p>
4 8
5−[![Site](https://img.shields.io/website?url=https%3A%2F%2Fwww.vrai-prix.com&style=flat-square&label=www.vrai-prix.com)](https://www.vrai-prix.com) 9+<div align="center">
10+
11+[![Site](https://img.shields.io/website?url=https%3A%2F%2Fwww.vrai-prix.com&style=flat-square&label=www.vrai-prix.com&up_color=ff5148)](https://www.vrai-prix.com)
12+[![Documentation](https://img.shields.io/badge/📖_documentation-%2Fdoc-ff5148?style=flat-square)](https://www.vrai-prix.com/doc/index.html)
13+[![PDF](https://img.shields.io/badge/guide-PDF-ff5148?style=flat-square)](https://www.vrai-prix.com/doc/vrai-prix-documentation.pdf)
6 ![Nœud](https://img.shields.io/badge/n%C5%93ud-M3U96a-1f6feb?style=flat-square) 14 ![Nœud](https://img.shields.io/badge/n%C5%93ud-M3U96a-1f6feb?style=flat-square)
7 ![Port](https://img.shields.io/badge/port-8090-ff5148?style=flat-square) 15 ![Port](https://img.shields.io/badge/port-8090-ff5148?style=flat-square)
8 ![PM2](https://img.shields.io/badge/process-PM2-2b037a?style=flat-square) 16 ![PM2](https://img.shields.io/badge/process-PM2-2b037a?style=flat-square)
@@ -12,16 +20,52 @@
12 ![Tailwind](https://img.shields.io/badge/Tailwind-4-141814?style=flat-square&logo=tailwindcss) 20 ![Tailwind](https://img.shields.io/badge/Tailwind-4-141814?style=flat-square&logo=tailwindcss)
13 ![Groupe KA](https://img.shields.io/badge/Groupe-KA-b7f000?style=flat-square) 21 ![Groupe KA](https://img.shields.io/badge/Groupe-KA-b7f000?style=flat-square)
14 22
23+</div>
24+
15 Vrai-Prix estime la valeur marchande de **n'importe quelle propriété du Québec** — unifamiliale, plex, condo, chalet, terrain — et montre *pourquoi* : chaque comparable, chaque ajustement en dollars, la pondération du modèle, la fourchette (P10–P90) et l'indice de confiance (A–D). Le différenciateur est la **transparence totale** : pas de score magique, pas de boîte noire. La méthodologie complète (normes **IAAO**) est publiée intégralement sur le site. 25 Vrai-Prix estime la valeur marchande de **n'importe quelle propriété du Québec** — unifamiliale, plex, condo, chalet, terrain — et montre *pourquoi* : chaque comparable, chaque ajustement en dollars, la pondération du modèle, la fourchette (P10–P90) et l'indice de confiance (A–D). Le différenciateur est la **transparence totale** : pas de score magique, pas de boîte noire. La méthodologie complète (normes **IAAO**) est publiée intégralement sur le site.
16 26
17 Sous le capot : les **6 millésimes (2021-2026)** des rôles d'évaluation foncière géoréférencés du Québec (**MAMH**, données ouvertes) — **3 747 008 propriétés**, soit **22 150 285 observations** — fusionnés spatialement avec **745 119 transactions réelles** (99,88 % d'appariement, distance médiane 0,6 m), alimentant un **modèle hédonique LightGBM** (MdAPE 11,0 %, ratio médian 0,995 en holdout) et un **moteur de comparables ajustés**. Pour qui ? Propriétaires, acheteurs, courtiers et curieux qui veulent une estimation honnête et vérifiable, gratuite, sur les **1 097 municipalités** de la province. 27 Sous le capot : les **6 millésimes (2021-2026)** des rôles d'évaluation foncière géoréférencés du Québec (**MAMH**, données ouvertes) — **3 747 008 propriétés**, soit **22 150 285 observations** — fusionnés spatialement avec **745 119 transactions réelles** (99,88 % d'appariement, distance médiane 0,6 m), alimentant un **modèle hédonique LightGBM** (MdAPE 11,0 %, ratio médian 0,995 en holdout) et un **moteur de comparables ajustés**. Pour qui ? Propriétaires, acheteurs, courtiers et curieux qui veulent une estimation honnête et vérifiable, gratuite, sur les **1 097 municipalités** de la province.
18 28
19−## Captures d'écran 29+## Visite guidée
20− 30+
21−<p align="center"> 31+<table>
22− <img src="docs/screenshots/vrai-prix-desktop.png" width="640" alt="Accueil — desktop"> 32+ <tr>
23− <img src="docs/screenshots/vrai-prix-mobile.png" width="200" alt="Accueil — mobile"> 33+ <td align="center"><img src="docs/screenshots/accueil.png" width="420" alt="Accueil — desktop"><br><sub><b>Accueil — recherche d'adresse (desktop)</b></sub></td>
24−</p> 34+ <td align="center"><img src="docs/screenshots/accueil-mobile.png" width="420" alt="Accueil — mobile"><br><sub><b>Accueil — mobile</b></sub></td>
35+ </tr>
36+ <tr>
37+ <td align="center"><img src="docs/screenshots/fiche-estimation.png" width="420" alt="Fiche d'estimation"><br><sub><b>Fiche d'estimation — fourchette P10–P90 + indice de confiance</b></sub></td>
38+ <td align="center"><img src="docs/screenshots/fiche-portrait.png" width="420" alt="Portrait de la propriété"><br><sub><b>Portrait de la propriété — façade SVG + historique 2021→2026</b></sub></td>
39+ </tr>
40+ <tr>
41+ <td align="center"><img src="docs/screenshots/fiche-mobile.png" width="420" alt="Fiche — mobile"><br><sub><b>Fiche d'estimation — mobile</b></sub></td>
42+ <td align="center"><img src="docs/screenshots/carte.png" width="420" alt="Vrai-Prix Maps"><br><sub><b>Vrai-Prix Maps — recherche par carte 3D (Mapbox GL)</b></sub></td>
43+ </tr>
44+ <tr>
45+ <td align="center"><img src="docs/screenshots/municipalite.png" width="420" alt="Page municipalité"><br><sub><b>Page municipalité — agrégats et palmarès locaux</b></sub></td>
46+ <td align="center"><img src="docs/screenshots/stats.png" width="420" alt="Statistiques provinciales"><br><sub><b>Statistiques provinciales — tableau de bord /stats</b></sub></td>
47+ </tr>
48+ <tr>
49+ <td align="center"><img src="docs/screenshots/methodologie.png" width="420" alt="Méthodologie"><br><sub><b>Méthodologie publique — 7 sections, normes IAAO</b></sub></td>
50+ <td align="center"><img src="docs/screenshots/ka-agent.png" width="420" alt="Ka · agent IA"><br><sub><b>Ka · agent IA — 12 outils serveur (Claude, streaming SSE)</b></sub></td>
51+ </tr>
52+</table>
53+
54+### Guide pas à pas (« Utiliser le site en 5 étapes », depuis [/doc](https://www.vrai-prix.com/doc/index.html))
55+
56+<table>
57+ <tr>
58+ <td align="center"><img src="public/doc/img/etape1.png" width="420" alt="Étape 1 — accueil de Vrai-Prix"><br><sub><b>Étape 1 — Arriver sur l'accueil</b></sub></td>
59+ <td align="center"><img src="public/doc/img/etape2.png" width="420" alt="Étape 2 — recherche d'adresse avec suggestions"><br><sub><b>Étape 2 — Chercher l'adresse</b></sub></td>
60+ </tr>
61+ <tr>
62+ <td align="center"><img src="public/doc/img/etape3.png" width="420" alt="Étape 3 — fiche d'estimation avec fourchette et indice de confiance"><br><sub><b>Étape 3 — Lire la fiche d'estimation</b></sub></td>
63+ <td align="center"><img src="public/doc/img/etape4.png" width="420" alt="Étape 4 — recherche par carte 3D"><br><sub><b>Étape 4 — Explorer par la carte</b></sub></td>
64+ </tr>
65+ <tr>
66+ <td align="center" colspan="2"><img src="public/doc/img/etape5.png" width="420" alt="Étape 5 — tableau de bord statistiques"><br><sub><b>Étape 5 — Aller plus loin : statistiques, parc, agent Ka</b></sub></td>
67+ </tr>
68+</table>
25 69
26 ## Fonctionnalités 70 ## Fonctionnalités
27 71
@@ -52,13 +96,35 @@ Application Next.js 16 (App Router) — SQLite better-sqlite3 (units + FTS5
52 · SSO KA ID · SEO programmatique 96 · SSO KA ID · SEO programmatique
53 ``` 97 ```
54 98
55−- **Frontend / API** : Next.js 16, TypeScript strict, Tailwind CSS 4 — tout est servi par une seule app (pages SSR + routes `/api/*` : `search`, `estimate`, `nearby`, `ka`, `portfolio`, `report*`, `stats`, `auth`). 99+- **Frontend / API** : Next.js 16, TypeScript strict, Tailwind CSS 4 — tout est servi par une seule app (pages SSR + routes `/api/*`).
56 - **Base de données** : SQLite (`data/vraiprix.db`, ~1,5 Go, non versionnée) — 3,75 M unités, FTS5, index spatiaux, mode WAL. 100 - **Base de données** : SQLite (`data/vraiprix.db`, ~1,5 Go, non versionnée) — 3,75 M unités, FTS5, index spatiaux, mode WAL.
57 - **Modèle** : pipeline externe LightGBM / scikit-learn (réentraînement : `scripts/hedonic-retrain.py`), estimations pré-calculées injectées dans la base. 101 - **Modèle** : pipeline externe LightGBM / scikit-learn (réentraînement : `scripts/hedonic-retrain.py`), estimations pré-calculées injectées dans la base.
58 - **Tests** : Vitest (moteur d'estimation) + Playwright (captures : `scripts/screenshots.mjs`). 102 - **Tests** : Vitest (moteur d'estimation) + Playwright (captures : `scripts/screenshots.mjs`).
59−- **Processus PM2** : 103+
60− - **`vrai-prix`** — l'app Next.js (`next start -H 0.0.0.0 -p 8090`) ; 104+## API — endpoints principaux
61− - **`vrai-prix-ngrok`** — tunnel ngrok vers www.vrai-prix.com. 105+
106+| Endpoint | Rôle |
107+|---|---|
108+| `GET /api/search` | recherche plein-texte d'adresses (FTS5, tolérante aux fautes) |
109+| `GET /api/estimate` | estimation hybride d'une unité (modèle + comparables, P10–P90, confiance A–D) |
110+| `GET /api/nearby` | unités voisines / grappes pour la carte |
111+| `POST /api/ka` | agent Ka (Claude, streaming SSE, 12 outils serveur) |
112+| `POST /api/portfolio` | évaluation de parc immobilier multi-adresses (≤ 40) |
113+| `GET /api/report` · `/api/report/pro` · `/api/report/portfolio` · `/api/report/stats` | rapports PDF vectoriels (standard, bancaire, parc, provincial) |
114+| `GET /api/stats` · `/api/stats/catalog` · `/api/stats/dashboard` · `/api/stats/report(/custom)` | statistiques provinciales + kit de rapports v3 |
115+| `/api/auth/ka/*` · `/api/auth/me` · `/api/auth/logout` | SSO KA ID (hub groupe-ka.com) |
116+| `GET /api/favorites` · `POST /api/favorites/toggle` | favoris « Mon univers Ka » |
117+| `POST /api/lead` | prise de contact / lead |
118+
119+## Données & sources
120+
121+| Source | Contenu | Volume | Mise à jour |
122+|---|---|---|---|
123+| **MAMH — rôles d'évaluation foncière géoréférencés** (données ouvertes) | 6 millésimes 2021-2026, caractéristiques complètes des unités | 3 747 008 propriétés · 22 150 285 observations | à chaque millésime annuel (réingestion `scripts/`) |
124+| **Transactions réelles** (fusion spatiale XY, EPSG:32198) | prix de vente appariés aux unités (99,88 %, distance médiane 0,6 m) | 745 119 transactions | lors du réentraînement du modèle |
125+| **Modèle hédonique LightGBM** | log-prix, 18 variables, quantiles P10/P90 — MdAPE 11,0 %, ratio médian 0,995 | estimations pré-calculées sur ~3,75 M unités | réentraînement `scripts/hedonic-retrain.py` (hors ligne) |
126+
127+Contrairement aux apps à connecteurs du Groupe KA, Vrai-Prix ne dépend d'aucune synchronisation horaire : la base est **pré-calculée** et versionnée par millésime — l'app sert les estimations en lecture seule.
62 128
63 ## Structure du repo 129 ## Structure du repo
64 130
@@ -70,7 +136,7 @@ Application Next.js 16 (App Router) — SQLite better-sqlite3 (units + FTS5
70 | `data/` | base SQLite `vraiprix.db` (non versionnée) | 136 | `data/` | base SQLite `vraiprix.db` (non versionnée) |
71 | `scripts/` | réentraînement hédonique, build des stats, ingestion, captures Playwright | 137 | `scripts/` | réentraînement hédonique, build des stats, ingestion, captures Playwright |
72 | `docs/` | pipeline de données, notes Ka Maps, captures d'écran | 138 | `docs/` | pipeline de données, notes Ka Maps, captures d'écran |
73−| `public/` | assets statiques (favicons, OG, polices) | 139+| `public/` | assets statiques (favicons, OG, polices) + guide `/doc` (page, images, PDF) |
74 | `ios/` | ressources de l'app compagnon iOS (SwiftUI) | 140 | `ios/` | ressources de l'app compagnon iOS (SwiftUI) |
75 | `assets/` | matériel graphique du projet | 141 | `assets/` | matériel graphique du projet |
76 142
@@ -92,7 +158,15 @@ pm2 restart vrai-prix # après changement
92 git add <fichiers> && git commit -m "…" && git push origin main 158 git add <fichiers> && git commit -m "…" && git push origin main
93 ``` 159 ```
94 160
95−Variables d'environnement clés : `VRAIPRIX_DB`, `NEXT_PUBLIC_SITE_URL`, `ANTHROPIC_API_KEY` (agent Ka), `NEXT_PUBLIC_MAPBOX_TOKEN` (carte), `KA_SSO_SECRET`/`KA_AUTH_SECRET`/`KA_HUB_URL`/`KA_BASE_URL` (SSO). 161+### Configuration notable (sans secrets)
162+
163+| Variable | Rôle |
164+|---|---|
165+| `VRAIPRIX_DB` | chemin de la base SQLite (`data/vraiprix.db`) |
166+| `NEXT_PUBLIC_SITE_URL` | URL canonique du site (SEO, sitemaps) |
167+| `ANTHROPIC_API_KEY` | agent Ka (Claude) |
168+| `NEXT_PUBLIC_MAPBOX_TOKEN` | carte 3D Vrai-Prix Maps |
169+| `KA_SSO_SECRET` · `KA_AUTH_SECRET` · `KA_HUB_URL` · `KA_BASE_URL` | SSO KA ID (hub groupe-ka.com) |
96 170
97 ## Déploiement 171 ## Déploiement
98 172
@@ -100,30 +174,48 @@ Variables d'environnement clés : `VRAIPRIX_DB`, `NEXT_PUBLIC_SITE_URL`, `ANTHRO
100 |---|---| 174 |---|---|
101 | **Nœud** | **M3U96a** (Mac Studio M3 Ultra, cluster MacLustr) — `~/apps/vrai-prix` | 175 | **Nœud** | **M3U96a** (Mac Studio M3 Ultra, cluster MacLustr) — `~/apps/vrai-prix` |
102 | **Port** | **8090** | 176 | **Port** | **8090** |
103−| **Processus PM2** | `vrai-prix` (Next.js) + `vrai-prix-ngrok` (tunnel) |
104 | **Domaine** | [www.vrai-prix.com](https://www.vrai-prix.com) via tunnel ngrok | 177 | **Domaine** | [www.vrai-prix.com](https://www.vrai-prix.com) via tunnel ngrok |
105 178
179+| Processus PM2 | Rôle |
180+|---|---|
181+| `vrai-prix` | l'app Next.js (`next start -H 0.0.0.0 -p 8090`) — pages SSR + API |
182+| `vrai-prix-ngrok` | tunnel ngrok vers www.vrai-prix.com |
183+
106 ```bash 184 ```bash
107 # sur M3U96a, après un changement : 185 # sur M3U96a, après un changement :
108 cd ~/apps/vrai-prix && npm run build && pm2 restart vrai-prix 186 cd ~/apps/vrai-prix && npm run build && pm2 restart vrai-prix
109 pm2 logs vrai-prix --lines 30 187 pm2 logs vrai-prix --lines 30
110 ``` 188 ```
111 189
190+## Documentation
191+
192+- **Guide utilisateur en ligne** : [www.vrai-prix.com/doc/index.html](https://www.vrai-prix.com/doc/index.html) — à quoi sert le site, utilisation en 5 étapes, provenance des données, FAQ.
193+- **Guide PDF téléchargeable** : [vrai-prix-documentation.pdf](https://www.vrai-prix.com/doc/vrai-prix-documentation.pdf).
194+- **Méthodologie complète** (normes IAAO, 7 sections) : publiée sur le site.
195+- **Docs internes** : `docs/` (pipeline de données, notes Ka Maps, captures).
196+
112 ## Écosystème Groupe KA 197 ## Écosystème Groupe KA
113 198
114−- [groupe-ka.com](https://www.groupe-ka.com) — portail 199+| Site | Univers |
115−- [lou-ka.com](https://www.lou-ka.com) — logements à louer 200+|---|---|
116−- [immo-ka.com](https://www.immo-ka.com) — propriétés à vendre 201+| [groupe-ka.com](https://www.groupe-ka.com) | portail |
117−- [vrai-prix.com](https://www.vrai-prix.com) — estimation immobilière 202+| [lou-ka.com](https://www.lou-ka.com) | logements à louer |
118−- [auto-ka.com](https://www.auto-ka.com) — véhicules 203+| [immo-ka.com](https://www.immo-ka.com) | propriétés à vendre |
119−- [fabri-ka.com](https://www.fabri-ka.com) — produits québécois 204+| [vrai-prix.com](https://www.vrai-prix.com) | estimation immobilière |
120−- [food-ka.com](https://www.food-ka.com) — épicerie / alimentation 205+| [auto-ka.com](https://www.auto-ka.com) | véhicules |
121−- [resto-ka.com](https://www.resto-ka.com) — restaurants 206+| [fabri-ka.com](https://www.fabri-ka.com) | produits québécois |
122−- [sorti-ka.com](https://www.sorti-ka.com) — sorties et événements 207+| [food-ka.com](https://www.food-ka.com) | épicerie / alimentation |
123−- [job-ka.com](https://www.job-ka.com) — emplois 208+| [resto-ka.com](https://www.resto-ka.com) | restaurants |
124−- [crea-ka.com](https://www.crea-ka.com) — créateurs 209+| [sorti-ka.com](https://www.sorti-ka.com) | sorties et événements |
125−- [trouve-ka.com](https://www.trouve-ka.com) — petites annonces 210+| [job-ka.com](https://www.job-ka.com) | emplois |
126−- [api-ka.com](https://www.api-ka.com) — API de données 211+| [crea-ka.com](https://www.crea-ka.com) | créateurs |
212+| [trouve-ka.com](https://www.trouve-ka.com) | petites annonces |
213+| [api-ka.com](https://www.api-ka.com) | API de données |
214+
215+## Contact
216+
217+**Simon-Pierre Boucher** — fondateur, Groupe KA
218+📧 [contact@spboucher.ai](mailto:contact@spboucher.ai)
127 219
128 --- 220 ---
129 221
130 222
Menu

Theme