Vrai-Prix — La valeur réelle de chaque propriété

Vrai-Prix

La valeur réelle de chaque propriété

[![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) [![Documentation](https://img.shields.io/badge/📖_documentation-%2Fdoc-ff5148?style=flat-square)](https://www.vrai-prix.com/doc/index.html) [![PDF](https://img.shields.io/badge/guide-PDF-ff5148?style=flat-square)](https://www.vrai-prix.com/doc/vrai-prix-documentation.pdf) ![Nœud](https://img.shields.io/badge/n%C5%93ud-M3U96a-1f6feb?style=flat-square) ![Port](https://img.shields.io/badge/port-8090-ff5148?style=flat-square) ![PM2](https://img.shields.io/badge/process-PM2-2b037a?style=flat-square) ![Next.js](https://img.shields.io/badge/Next.js-16-141814?style=flat-square&logo=nextdotjs) ![TypeScript](https://img.shields.io/badge/TypeScript-strict-141814?style=flat-square&logo=typescript) ![SQLite](https://img.shields.io/badge/SQLite-FTS5-141814?style=flat-square&logo=sqlite) ![Tailwind](https://img.shields.io/badge/Tailwind-4-141814?style=flat-square&logo=tailwindcss) ![Groupe KA](https://img.shields.io/badge/Groupe-KA-b7f000?style=flat-square)
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. 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. ## Visite guidée
Accueil — desktop
Accueil — recherche d'adresse (desktop)
Accueil — mobile
Accueil — mobile
Fiche d'estimation
Fiche d'estimation — fourchette P10–P90 + indice de confiance
Portrait de la propriété
Portrait de la propriété — façade SVG + historique 2021→2026
Fiche — mobile
Fiche d'estimation — mobile
Vrai-Prix Maps
Vrai-Prix Maps — recherche par carte 3D (Mapbox GL)
Page municipalité
Page municipalité — agrégats et palmarès locaux
Statistiques provinciales
Statistiques provinciales — tableau de bord /stats
Méthodologie
Méthodologie publique — 7 sections, normes IAAO
Ka · agent IA
Ka · agent IA — 12 outils serveur (Claude, streaming SSE)
### Guide pas à pas (« Utiliser le site en 5 étapes », depuis [/doc](https://www.vrai-prix.com/doc/index.html))
Étape 1 — accueil de Vrai-Prix
Étape 1 — Arriver sur l'accueil
Étape 2 — recherche d'adresse avec suggestions
Étape 2 — Chercher l'adresse
Étape 3 — fiche d'estimation avec fourchette et indice de confiance
Étape 3 — Lire la fiche d'estimation
Étape 4 — recherche par carte 3D
Étape 4 — Explorer par la carte
Étape 5 — tableau de bord statistiques
Étape 5 — Aller plus loin : statistiques, parc, agent Ka
## Fonctionnalités - **Estimation par adresse** — recherche plein-texte (SQLite FTS5) parmi 3 747 008 unités d'évaluation, tolérante aux fautes ; **plan B sans adresse** : estimation manuelle par municipalité + caractéristiques. - **Estimation hybride** — 65 % modèle hédonique LightGBM + 35 % comparables ajustés (marché, superficie, âge), fourchette P10–P90 par régression quantile, indice de confiance A–D obligatoire. - **Portrait de la propriété** — façade SVG dessinée par les données du registre, terrain à l'échelle, composition de la valeur ; historique 2021→2026 (six millésimes, badges YoY). - **Vrai-Prix Maps** — recherche par carte 3D (Mapbox GL via le framework partagé `@groupe-ka/ka-maps`), grappes de valeurs estimées pilotées par le viewport ; plan des comparables « arpenteur » en SVG pur. - **Ka · agent IA** — agent conversationnel (Claude, SDK Anthropic, streaming SSE) branché sur **12 outils serveur** : évaluation, comparables, stats, dossier d'expert, parc immobilier. - **Rapports PDF 100 % vectoriels** (pdfkit) — standard (3 p.), professionnel bancaire (6 p.), parc consolidé, statistique provincial. - **Parc immobilier** — évaluation multi-adresses agrégée (jusqu'à 40 propriétés). - **Statistiques provinciales** — valeur totale du parc (2,01 billions $), palmarès des 200 municipalités, tableau de bord `/stats` + rapports PDF v3. - **SEO programmatique — 3,76 M d'URLs indexables** : 1 097 pages municipalités + ~5 900 pages municipalité × type + 3,75 M fiches d'estimation SSR avec métadonnées uniques, JSON-LD, sitemaps générés à la volée. - **KA ID** — connexion unique du Groupe KA (SSO signé via le hub groupe-ka.com, sans base d'utilisateurs) + favoris « Mon univers Ka ». - **Bilingue FR/EN**, méthodologie publique (7 sections, IAAO), conformité Loi 25, app compagnon iOS SwiftUI (dépôt séparé). ## Architecture ``` Rôles d'évaluation MAMH 2021-2026 (6 millésimes × ~3,7 M unités) │ fusion spatiale XY (EPSG:32198) — kNN k=25 ≤200 m ▼ 745 119 transactions enrichies ──▶ modèle hédonique LightGBM (log-prix, 18 variables + quantiles P10/P90) ▼ Application Next.js 16 (App Router) — SQLite better-sqlite3 (units + FTS5 + transactions + indice de marché) · moteur de comparables (src/lib/engine.ts) · Ka Maps (Mapbox GL) · agent Ka (Claude + 12 outils) · rapports pdfkit · SSO KA ID · SEO programmatique ``` - **Frontend / API** : Next.js 16, TypeScript strict, Tailwind CSS 4 — tout est servi par une seule app (pages SSR + routes `/api/*`). - **Base de données** : SQLite (`data/vraiprix.db`, ~1,5 Go, non versionnée) — 3,75 M unités, FTS5, index spatiaux, mode WAL. - **Modèle** : pipeline externe LightGBM / scikit-learn (réentraînement : `scripts/hedonic-retrain.py`), estimations pré-calculées injectées dans la base. - **Tests** : Vitest (moteur d'estimation) + Playwright (captures : `scripts/screenshots.mjs`). ## API — endpoints principaux | Endpoint | Rôle | |---|---| | `GET /api/search` | recherche plein-texte d'adresses (FTS5, tolérante aux fautes) | | `GET /api/estimate` | estimation hybride d'une unité (modèle + comparables, P10–P90, confiance A–D) | | `GET /api/nearby` | unités voisines / grappes pour la carte | | `POST /api/ka` | agent Ka (Claude, streaming SSE, 12 outils serveur) | | `POST /api/portfolio` | évaluation de parc immobilier multi-adresses (≤ 40) | | `GET /api/report` · `/api/report/pro` · `/api/report/portfolio` · `/api/report/stats` | rapports PDF vectoriels (standard, bancaire, parc, provincial) | | `GET /api/stats` · `/api/stats/catalog` · `/api/stats/dashboard` · `/api/stats/report(/custom)` | statistiques provinciales + kit de rapports v3 | | `/api/auth/ka/*` · `/api/auth/me` · `/api/auth/logout` | SSO KA ID (hub groupe-ka.com) | | `GET /api/favorites` · `POST /api/favorites/toggle` | favoris « Mon univers Ka » | | `POST /api/lead` | prise de contact / lead | ## Données & sources | Source | Contenu | Volume | Mise à jour | |---|---|---|---| | **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/`) | | **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 | | **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) | 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. ## Structure du repo | Répertoire | Rôle | |---|---| | `src/app/` | pages App Router (accueil, `estimation/[id]`, `municipalite/[slug]/[type]`, `carte`, `ka`, `parc`, `stats`, `favoris`, sitemaps/robots) + routes `/api/*` | | `src/components/` | SearchBox, ResultView, MetricViz, RadarMap, KaCarte, KaChat, StatsView… | | `src/lib/` | moteur de comparables (`engine.ts`), accès DB, agrégats municipalités, agent Ka, SSO KA ID, générateurs PDF | | `data/` | base SQLite `vraiprix.db` (non versionnée) | | `scripts/` | réentraînement hédonique, build des stats, ingestion, captures Playwright | | `docs/` | pipeline de données, notes Ka Maps, captures d'écran | | `public/` | assets statiques (favicons, OG, polices) + guide `/doc` (page, images, PDF) | | `ios/` | ressources de l'app compagnon iOS (SwiftUI) | | `assets/` | matériel graphique du projet | ## Développement (remote-first) ⚠️ **La source de vérité est le repo git sur le nœud M3U96a** (`~/apps/vrai-prix`) — on n'édite **jamais** les copies laptop. Toute modification se fait sur le nœud via SSH : édition, build, redémarrage, puis commit + push **depuis le nœud**. - Remote **`origin` = spbgit** (git perso, https://git.spboucher.ai) — sur M3U96a, l'origin est le chemin local **`/Users/simon-pierreboucher/srv/git/vrai-prix.git`** (bare repo) ; - remote secondaire `github` → github.com/spboucher-ai/vrai-prix. ```bash ssh M3U96a cd ~/apps/vrai-prix npm install # au besoin npm run test # Vitest — moteur d'estimation npm run dev # développement npm run build # build de production pm2 restart vrai-prix # après changement git add && git commit -m "…" && git push origin main ``` ### Configuration notable (sans secrets) | Variable | Rôle | |---|---| | `VRAIPRIX_DB` | chemin de la base SQLite (`data/vraiprix.db`) | | `NEXT_PUBLIC_SITE_URL` | URL canonique du site (SEO, sitemaps) | | `ANTHROPIC_API_KEY` | agent Ka (Claude) | | `NEXT_PUBLIC_MAPBOX_TOKEN` | carte 3D Vrai-Prix Maps | | `KA_SSO_SECRET` · `KA_AUTH_SECRET` · `KA_HUB_URL` · `KA_BASE_URL` | SSO KA ID (hub groupe-ka.com) | ## Déploiement | | | |---|---| | **Nœud** | **M3U96a** (Mac Studio M3 Ultra, cluster MacLustr) — `~/apps/vrai-prix` | | **Port** | **8090** | | **Domaine** | [www.vrai-prix.com](https://www.vrai-prix.com) via tunnel ngrok | | Processus PM2 | Rôle | |---|---| | `vrai-prix` | l'app Next.js (`next start -H 0.0.0.0 -p 8090`) — pages SSR + API | | `vrai-prix-ngrok` | tunnel ngrok vers www.vrai-prix.com | ```bash # sur M3U96a, après un changement : cd ~/apps/vrai-prix && npm run build && pm2 restart vrai-prix pm2 logs vrai-prix --lines 30 ``` ## Documentation - **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. - **Guide PDF téléchargeable** : [vrai-prix-documentation.pdf](https://www.vrai-prix.com/doc/vrai-prix-documentation.pdf). - **Méthodologie complète** (normes IAAO, 7 sections) : publiée sur le site. - **Docs internes** : `docs/` (pipeline de données, notes Ka Maps, captures). ## Écosystème Groupe KA | Site | Univers | |---|---| | [groupe-ka.com](https://www.groupe-ka.com) | portail | | [lou-ka.com](https://www.lou-ka.com) | logements à louer | | [immo-ka.com](https://www.immo-ka.com) | propriétés à vendre | | [vrai-prix.com](https://www.vrai-prix.com) | estimation immobilière | | [auto-ka.com](https://www.auto-ka.com) | véhicules | | [fabri-ka.com](https://www.fabri-ka.com) | produits québécois | | [food-ka.com](https://www.food-ka.com) | épicerie / alimentation | | [resto-ka.com](https://www.resto-ka.com) | restaurants | | [sorti-ka.com](https://www.sorti-ka.com) | sorties et événements | | [job-ka.com](https://www.job-ka.com) | emplois | | [crea-ka.com](https://www.crea-ka.com) | créateurs | | [trouve-ka.com](https://www.trouve-ka.com) | petites annonces | | [api-ka.com](https://www.api-ka.com) | API de données | ## Contact **Simon-Pierre Boucher** — fondateur, Groupe KA 📧 [contact@spboucher.ai](mailto:contact@spboucher.ai) --- © Groupe KA — Simon-Pierre Boucher · [contact@spboucher.ai](mailto:contact@spboucher.ai) *Ce dépôt vit sur **spbgit** (git perso — https://git.spboucher.ai). Estimations statistiques à titre indicatif — elles ne remplacent pas une évaluation par un évaluateur agréé (OEAQ).*