# 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. ![Propriétés](https://img.shields.io/badge/propri%C3%A9t%C3%A9s-3%C2%A0747%C2%A0008-ff5148?style=flat-square) ![Ventes](https://img.shields.io/badge/ventes_r%C3%A9elles-745%C2%A0119-ff5148?style=flat-square) ![MdAPE](https://img.shields.io/badge/MdAPE-11,0%25-9e2a25?style=flat-square) ![Ratio médian](https://img.shields.io/badge/ratio_m%C3%A9dian-0,995-9e2a25?style=flat-square) ![Appariement](https://img.shields.io/badge/fusion_spatiale-99,88%25-9e2a25?style=flat-square) ![Tests](https://img.shields.io/badge/tests-15%2F15-141814?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) **En production : [www.vrai-prix.com](https://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`) 1. **Comparables** : ventes candidates dans un rayon adaptatif (2,2 → 28 km), filtrées par type et superficie (±20 → ±40 %) ; 2. **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 %) ; 3. **Pondération gaussienne** : distance (σ 1 500 m), récence (σ 24 mois), similarité de superficie (σ 25 %) ; 4. **Fusion** : 65 % modèle hédonique pré-calculé + 35 % médiane pondérée des comparables ; 5. **Confiance** : nombre de comparables, dispersion, largeur de fourchette → A/B/C/D. ## Démarrage ```bash 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 start ``` Variables 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](https://www.donneesquebec.ca/recherche/dataset/roles-d-evaluation-fonciere-du-quebec) (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](mailto:contact@spboucher.ai) *Estimations statistiques à titre indicatif — ne remplacent pas une évaluation par un évaluateur agréé (OEAQ). Voir [conditions](https://www.vrai-prix.com/conditions) et [méthodologie complète](https://www.vrai-prix.com/methodologie).*