spb/vrai-prix Public
Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.
TypeScript 96.7%
CSS 3.2%
1# Vrai-Prix23> **La vraie valeur de votre propriété, sans boîte noire.**4> 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.56789101112131415**En production : [www.vrai-prix.com](https://www.vrai-prix.com)**1617---1819## Ce que fait Vrai-Prix2021Vrai-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.2223| Fonctionnalité | Description |24|---|---|25| 🔎 Recherche d'adresse | Plein-texte (FTS5) parmi 3 747 008 unités d'évaluation |26| 💰 Estimation hybride | 65 % modèle hédonique + 35 % comparables ajustés |27| 📊 Fourchette + confiance | P10–P90 par régression quantile, indice A–D obligatoire |28| 🏠 Portrait de la propriété | Façade SVG dessinée par les données du registre, terrain à l'échelle, composition de la valeur |29| 🗺️ Plan des comparables | Carte « plan d'arpenteur » maison (SVG pur, zéro tuile) — azimut et distance réels |30| 📈 Historique 2021→2026 | Six millésimes d'estimations par propriété |31| 🏢 Parc immobilier | Évaluation multi-adresses agrégée (jusqu'à 40 propriétés) + rapport consolidé |32| 📄 Rapports PDF | Standard (3 p.), professionnel bancaire (6 p.), parc (n+1 p.), statistique provincial — 100 % vectoriels |33| 📉 Statistiques | Valeur totale de la province (**2,01 billions $**), palmarès des 200 municipalités |34| ⚖️ Conformité | Loi 25, sélecteur de témoins, méthodologie publique intégrale |3536## Les chiffres qui comptent3738Validation 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** :3940| Métrique | Holdout | Test temporel 2026 | Cible IAAO |41|---|---|---|---|42| Erreur médiane (MdAPE) | **11,0 %** | 14,0 % | — |43| À ±20 % du prix réel | 72,1 % | 66,7 % | — |44| Ratio médian | 0,995 | 0,961 | 0,90–1,10 ✅ |45| COD | 22,7 (condos : **11,9** ✅) | 23,7 | ≤ 15–20 |46| PRD | 1,092 | 1,075 | 0,98–1,03 |47| R² (log) | 0,789 | 0,743 | — |4849## Architecture5051```52┌─ Données ouvertes MAMH ──────────────────────────────────────────┐53│ Rôles d'évaluation foncière géoréférencés 2021-2026 │54│ 6 millésimes × ~3,7 M unités = 22 150 285 observations │55└──────────────┬───────────────────────────────────────────────────┘56 │ fusion spatiale XY (EPSG:32198)57 │ kNN k=25 ≤200 m + jointure par valeur ≤500 m58 │ → 99,88 % appariées, distance médiane 0,6 m59┌──────────────▼───────────────┐ ┌──────────────────────────────┐60│ 745 119 transactions │ │ Modèle hédonique LightGBM │61│ enrichies du rôle ├──▶│ log(prix), 18 variables │62└──────────────────────────────┘ │ + quantiles P10/P90 │63 │ → 22 M d'estimations │64 └──────────────┬───────────────┘65┌─ Application Next.js 16 ─────────────────────────▼───────────────┐66│ SQLite (units + FTS5 + transactions + indice de marché) │67│ Moteur comparables (ajust. marché/superficie/âge, médiane │68│ pondérée) · RadarMap SVG · MetricViz · rapports pdfkit │69└──────────────────────────────────────────────────────────────────┘70```7172### Stack7374- **Frontend / API** : Next.js 16 (App Router), TypeScript strict, Tailwind CSS 475- **Base** : SQLite (better-sqlite3) — 3,75 M unités, FTS5, index spatiaux *(non incluse dans ce dépôt)*76- **Rapports** : pdfkit, 100 % vectoriels, polices embarquées (Space Grotesk / Inter / JetBrains Mono)77- **Modèle** (pipeline externe) : LightGBM, scikit-learn, pandas, pyogrio/GDAL78- **Tests** : Vitest (moteur d'estimation) + Playwright (mobile)7980### Design8182Identité « é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.8384## Le moteur d'estimation (`src/lib/engine.ts`)85861. **Comparables** : ventes candidates dans un rayon adaptatif (2,2 → 28 km), filtrées par type et superficie (±20 → ±40 %) ;872. **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 %) ;883. **Pondération gaussienne** : distance (σ 1 500 m), récence (σ 24 mois), similarité de superficie (σ 25 %) ;894. **Fusion** : 65 % modèle hédonique pré-calculé + 35 % médiane pondérée des comparables ;905. **Confiance** : nombre de comparables, dispersion, largeur de fourchette → A/B/C/D.9192## Démarrage9394```bash95npm install96# placer la base de données dans data/vraiprix.db (non versionnée)97npm run dev # développement98npm run test # tests du moteur (Vitest)99npm run build && npm run start100```101102Variables d'environnement : `VRAIPRIX_DB` (chemin de la base SQLite), `PORT`.103104> **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.105106## Endpoints107108| Route | Description |109|---|---|110| `GET /api/search?q=` | Autocomplétion d'adresses (FTS5) |111| `GET /api/estimate?id=` | Estimation complète d'une unité |112| `POST /api/estimate` | Estimation manuelle (municipalité + caractéristiques) |113| `POST /api/portfolio` | Agrégation d'un parc (jusqu'à 40 ids) |114| `GET /api/report?id=` | Rapport PDF standard (3 pages) |115| `GET /api/report/pro?id=` | Rapport détaillé format professionnel (6 pages) |116| `GET /api/report/portfolio?ids=` | Rapport de parc consolidé |117| `GET /api/report/stats` | Rapport statistique provincial |118119## Auteur120121**Simon-Pierre Boucher** — [contact@spboucher.ai](mailto:contact@spboucher.ai)122123*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).*124