Vrai-Prix
La vraie valeur de votre propriété, sans boîte noire. Moteur d'évaluation immobilière transparent pour le Québec — 3,7 millions de propriétés, 745 119 ventes réelles, chaque calcul montré en entier.
En production : www.vrai-prix.com
Ce que fait Vrai-Prix
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 et l'indice de confiance. Le différenciateur est la transparence totale : pas de score magique, pas de boîte noire.
| Fonctionnalité | Description |
|---|---|
| 🔎 Recherche d'adresse | Plein-texte (FTS5) parmi 3 747 008 unités d'évaluation |
| 💰 Estimation hybride | 65 % modèle hédonique + 35 % comparables ajustés |
| 📊 Fourchette + confiance | P10–P90 par régression quantile, indice 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 |
| 🗺️ Plan des comparables | Carte « plan d'arpenteur » maison (SVG pur, zéro tuile) — azimut et distance réels |
| 📈 Historique 2021→2026 | Six millésimes d'estimations par propriété |
| 🏢 Parc immobilier | Évaluation multi-adresses agrégée (jusqu'à 40 propriétés) + rapport consolidé |
| 📄 Rapports PDF | Standard (3 p.), professionnel bancaire (6 p.), parc (n+1 p.), statistique provincial — 100 % vectoriels |
| 📉 Statistiques | Valeur totale de la province (2,01 billions $), palmarès des 200 municipalités |
| ⚖️ Conformité | Loi 25, sélecteur de témoins, méthodologie publique intégrale |
Les chiffres qui comptent
Validation sur 102 943 ventes jamais vues du modèle (holdout aléatoire) et test temporel strict (entraîné sans 2026, testé sur 68 364 ventes de 2026), selon la norme IAAO sur études de ratios :
| Métrique | Holdout | Test temporel 2026 | Cible IAAO |
|---|---|---|---|
| Erreur médiane (MdAPE) | 11,0 % | 14,0 % | — |
| À ±20 % du prix réel | 72,1 % | 66,7 % | — |
| Ratio médian | 0,995 | 0,961 | 0,90–1,10 ✅ |
| COD | 22,7 (condos : 11,9 ✅) | 23,7 | ≤ 15–20 |
| PRD | 1,092 | 1,075 | 0,98–1,03 |
| R² (log) | 0,789 | 0,743 | — |
Architecture
┌─ Données ouvertes MAMH ──────────────────────────────────────────┐
│ Rôles d'évaluation foncière géoréférencés 2021-2026 │
│ 6 millésimes × ~3,7 M unités = 22 150 285 observations │
└──────────────┬───────────────────────────────────────────────────┘
│ fusion spatiale XY (EPSG:32198)
│ kNN k=25 ≤200 m + jointure par valeur ≤500 m
│ → 99,88 % appariées, distance médiane 0,6 m
┌──────────────▼───────────────┐ ┌──────────────────────────────┐
│ 745 119 transactions │ │ Modèle hédonique LightGBM │
│ enrichies du rôle ├──▶│ log(prix), 18 variables │
└──────────────────────────────┘ │ + quantiles P10/P90 │
│ → 22 M d'estimations │
└──────────────┬───────────────┘
┌─ Application Next.js 16 ─────────────────────────▼───────────────┐
│ SQLite (units + FTS5 + transactions + indice de marché) │
│ Moteur comparables (ajust. marché/superficie/âge, médiane │
│ pondérée) · RadarMap SVG · MetricViz · rapports pdfkit │
└──────────────────────────────────────────────────────────────────┘Stack
- Frontend / API : Next.js 16 (App Router), TypeScript strict, Tailwind CSS 4
- Base : SQLite (better-sqlite3) — 3,75 M unités, FTS5, index spatiaux (non incluse dans ce dépôt)
- Rapports : pdfkit, 100 % vectoriels, polices embarquées (Space Grotesk / Inter / JetBrains Mono)
- Modèle (pipeline externe) : LightGBM, scikit-learn, pandas, pyogrio/GDAL
- Tests : Vitest (moteur d'estimation) + Playwright (mobile)
Design
Identité « éditorial sharp » : papier grainé #f5f3ee, encre #141814, accent rouge vif #ff5148, bordeaux #9e2a25 — bordures encre 1,5 px, ombres décalées, display uppercase, micro-étiquettes mono.
Le moteur d'estimation (src/lib/engine.ts)
- Comparables : ventes candidates dans un rayon adaptatif (2,2 → 28 km), filtrées par type et superficie (±20 → ±40 %) ;
- Ajustements affichés en dollars : conditions de marché (indice mensuel $/m² lissé 3 mois), superficie (50 % du $/m² du comparable, plafonné ±25 %), âge (0,5 %/an, plafonné ±10 %) ;
- Pondération gaussienne : distance (σ 1 500 m), récence (σ 24 mois), similarité de superficie (σ 25 %) ;
- Fusion : 65 % modèle hédonique pré-calculé + 35 % médiane pondérée des comparables ;
- Confiance : nombre de comparables, dispersion, largeur de fourchette → A/B/C/D.
Démarrage
npm install
# placer la base de données dans data/vraiprix.db (non versionnée)
npm run dev # développement
npm run test # tests du moteur (Vitest)
npm run build && npm run startVariables d'environnement : VRAIPRIX_DB (chemin de la base SQLite), PORT.
Note données : la base SQLite (1,5 Go) et les pipelines d'entraînement ne sont pas versionnés. Données sources : rôles d'évaluation foncière du Québec (MAMH, licence ouverte). Les renseignements des propriétaires sont caviardés à la source.
Endpoints
| Route | Description |
|---|---|
GET /api/search?q= |
Autocomplétion d'adresses (FTS5) |
GET /api/estimate?id= |
Estimation complète d'une unité |
POST /api/estimate |
Estimation manuelle (municipalité + caractéristiques) |
POST /api/portfolio |
Agrégation d'un parc (jusqu'à 40 ids) |
GET /api/report?id= |
Rapport PDF standard (3 pages) |
GET /api/report/pro?id= |
Rapport détaillé format professionnel (6 pages) |
GET /api/report/portfolio?ids= |
Rapport de parc consolidé |
GET /api/report/stats |
Rapport statistique provincial |
Auteur
Simon-Pierre Boucher — contact@spboucher.ai
Estimations statistiques à titre indicatif — ne remplacent pas une évaluation par un évaluateur agréé (OEAQ). Voir conditions et méthodologie complète.