Immo-Ka — agrégateur des propriétés à vendre au Québec (73 connecteurs, ~40 000 annonces, React+FastAPI)
Python 47.5%
HTML 27.9%
TypeScript 15.5%
CSS 7.2%
JavaScript 2%
-
Tue, Aug 18, 2026 4
-
Docs connecteurs : générateur rejouable + 46 fiches standardisées (41 nommées, 4 familles dynamiques, INDEX)
…
Croise data/sources.json + registres d agences + introspection du code + BD live (complétude GPS/photos/prix/CAC/SDB/année-rôle/taxes, sync_log). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
vraiprix_local : réparation set-based des replis rôle dans enrich_role
…
Filet de sécurité idempotent : ré-applique year_built/lot_sqft depuis le JSON vraiprix (annee_construction_role / superficie_terrain_role_m2) si une mise à jour de source les a remis à NULL (anciens process sans COALESCE). Récupéré au premier passage : 246 années + 1 920 terrains. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Vague 2 : jointure au rôle d'évaluation, fiches Sutton/RLP/LesPAC enrichies, days_on_market, dédup par adresse
…
- vraiprix_local : le JSON vraiprix porte désormais le rôle d'évaluation (valeur_role/terrain/bâtiment, année, superficies officielles) ; repli des colonnes year_built/lot_sqft (provenance details.*_source=role, jamais pour le terrain des copropriétés) ; enrich_role() = backfill par id_provinc (64 972 fiches, year_built 20 %→67 %, lot_sqft 17 %→62 %) ; limite d'appariement par cycle 2000→5000 + enrich_role 20 000/cycle. - db.sync_source : COALESCE sur year_built/area_sqft/lot_sqft (les enrichissements ne sont plus écrasés par null). - Sutton (v5) : année (Construction :), Aire habitable/Terrain superficie, taxes, évaluation municipale, frais de copropriété, revenus (plex). - Royal LePage (v2) : parse complet direct (sans Firecrawl) — description (Remarques), Bâti en, superficies (garde-fou aménagée≤6000 pi²), salles d'eau, taxes/évaluations, frais de condo, listed_at, galerie complète. - LesPAC (v2) : toutes les boîtes de caractéristiques (pas juste la 1re), salles de bain/d'eau, superficies + lot depuis Dimension du terrain, cityLabel, listed_at (publicReleaseTimestamp). - Kijiji : details.listed_at (activationDate). DuProprio : lat/lng du JSON-LD. - API : days_on_market calculé (first_seen) sur listings + fiche. - Dédup 3e passe : inter-sources par adresse normalisée + type + prix ±1 % (garde-fous : apt/unité identique requis, même source en double = ignoré, autorité primaire > _ag_ > petites annonces) — 1 748 doublons masqués. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Connecteurs : clé Algolia auto-extraite (Barnes), taxes/éval RE/MAX, specs Via Capitale, Kijiji étendu
…
- barnes_quebec : identifiants Algolia extraits du HTML public (PHPVars) avec cache process 6 h + repli sur la dernière clé connue et ré-extraction sur échec — résilient aux rotations de clé (403 du 2026-08-15). - remax_quebec : le tableau de caractéristiques est rendu « Libellé | Valeur » (l'ancien ordre inverse ne captait que du bruit) — parseur corrigé, section « Détails financiers » captée (taxes municipales/scolaires + évaluation municipale terrain/bâtiment/année), libellés étendus, clé de cache v3→v4 (re-parse progressif dans le budget par cycle). - via_capitale : enrichissement fiche détail complet (chambres, salles de bains, superficies, année, taxes, évaluations) via meta + tableau aplati ; requête directe d'abord, repli Firecrawl stealth sur challenge Cloudflare ; budget IMMOKA_VIACAP_DETAIL_LIMIT (défaut 200/cycle) ; clé v2→v3. - kijiji : _ATTR_LABELS étendus (terrain/acres, année, stationnement, meublé, visites), « Size (acres) » (texte libre) → lot_sqft, salles de bains « 1.5 » désormais captées ; clé v1→v2. - _detailutil.centris_details : ordre « Libellé | Valeur » prioritaire + garde-fous (libellés voisins/en-têtes de section jamais pris pour valeurs, format minimal exigé pour taxes/évaluation/année/superficies). - schema.finalize : promotion details → colonnes (Année de construction → year_built, Superficie habitable/du terrain → area_sqft/lot_sqft) avec parse_year strict (normalize.py). Backfill one-shot exécuté sur la base : year_built +95, area_sqft +792, lot_sqft +275. - db.get_stale_detail + repli « périmé plutôt que rien » (_detailutil.enrich, remax _enrich) : un bump de version de clé ne déshabille plus les fiches hors budget, et un échec transitoire n'écrase plus un payload valide. - Registres : via_ag_dumontroyal (0 inscription à l'API source.immo), remax_ag_pro_commercial (redirige vers remax-alliance.ca — doublon) et remax_ag_solutions (nancyforlini.com migré hors Centris) désactivés (disabled+note) ; loaders ignorent disabled ; sources.json à jour ; 95 → 92 connecteurs.
-
-
Mon, Aug 17, 2026 10
-
Ajout du fichier statique ka-agent.js (widget KA Agent)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Câblage du widget KA Agent (bulle de chat Groupe KA)
…
Ajout des balises window.KA_AGENT={site:"immo-ka"} et /ka-agent.js en fin de <body> de frontend/index.html — propagées au gabarit SSR de seo.py via dist/index.html (aucun doublon, seuls les meta du head sont strippés). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Footer/contact : Job-Ka rejoint l écosystème (ecosystem.json 13 sites)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
kapdf : pas d en-tête/pied sur la couverture (correctif moteur commun)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Page /stats : tableau de bord analytique + rapport PDF Groupe-KA
…
- immoka/stats.py : /api/stats/dashboard (contrat ka-stats, cache 5 min) — KPI (actives, nouvelles, retirées, prix moyen/médian, prix/m², villes, connecteurs, tension retraits/nouvelles), séries quotidiennes reconstruites (actives/nouvelles/retraits), répartitions (types, fourchettes de prix, chambres), géo par région (fusion accents/casse), heatmap, top villes, délai de présence par ville, records. Deltas seulement si la période précédente a été observée en entier — rien d'inventé. - immoka/kapdf.py (copie du kit ka-ui) + /api/stats/report : PDF estampillé Groupe-KA (complet / synthèse), wordmark Immo·Ka, accent #e23744. - frontend/src/pages/Stats.tsx : page réécrite sur le kit ka/stats/kacharts — PdfButton + fraîcheur, KPI auto-fit, sélecteur de période (refetch), courbes, anneau, barres, géo, heatmap, tableaux triables, records ; bloc Vrai-Prix conservé. Zéro débordement à 360/768/1440. - fpdf2 ajouté aux dépendances. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Titre « Un service Groupe KA », icônes et image OG servies à la racine
…
- Titre SSR de l accueil : « Immo-Ka — N propriétés à vendre au Québec · Un service Groupe KA » (partie « toutes les agences » raccourcie). - ka-assets/ -> frontend/public/ (og.png, favicon.svg, apple-touch-icon.png) ; favicon data-URI remplacé par /favicon.svg + apple-touch-icon. - og:image absolue 1200x630 par défaut + twitter:card/twitter:image sur toutes les pages SSR (les fiches gardent leur photo) ; balises statiques d index.html retirées du gabarit pour éviter les doublons. - Vérifié : aucun débordement horizontal à 360/768/1024/1440 px. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Harmonisation Groupe KA : design system ka-ui, badge + footer communs, page /contact, SSO KA ID au header
…
- ka-ui vendoré dans frontend/src/ka/ (tokens.css, ecosystem.json, KaFooter, GroupeKaBadge) ; tokens.css importé AVANT styles.css dans main.tsx - styles.css : socle dédupliqué (palette papier/encre, grain, selection, focus viennent de ka/tokens.css) ; seule surcharge locale = accent CERISE Immo-Ka (--accent #e23744 + alias --lime/--lime-soft) ; classes métier conservées ; styles Profil (carte de membre KA-ID), Contact et pages légales ajoutés - Header : badge « Un service Groupe KA » (desktop + menu mobile), bouton « Se connecter avec KA » + lien « Créer un compte » -> groupe-ka.com/connexion ; zone compte -> /profil quand connecté - Footer local remplacé par KaFooter (siteId immo-ka, pages légales locales) - Nouvelles routes SPA : /contact (ecosystem.json : 3 courriels + rôles, avertissement agrégateur, hub, écosystème), /profil, /conditions, /confidentialite - api.ts : fetchMe/logout/User/Socials + favoris hub (fetchFavorites, toggleFavorite, favItemFromListing) — account.tsx et Profil.tsx enfin branchés - seo.py : /contact ajouté aux pages statiques SSR - index.html : title « Immo-Ka — Un service Groupe KA », theme-color encre KA - tsconfig : exclusion du code mort non référencé (src/kamaps, pages/Category.tsx — dépendait de @groupe-ka/ka-maps absent de node_modules) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
État du nœud committé — intégration carte (frontend/src/map/, MapView, PropertyMap), geocode.py + vraiprix_local.py, MAJ sources ; gitignore data/vraiprix.db (1,6 Go) et *.bak-*
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
fix(glmc): pagination ?pg=N (176 fiches vs 60) + exclusion section Vendus
…
Le plugin mw-centris pagine par ?pg=N, pas ?_paged (qui renvoyait toujours les 60 premieres). Coupe la section Vendus avant parsing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
Sun, Aug 16, 2026 1
-
feat: 9 nouveaux connecteurs immobiliers QC
…
eXp Realty Quebec (~1000, SSR ?pages=N), Chambre immo Outaouais (avecuncourtier ~4000), The Agency Montreal (source.immo), Charisma (~840), GLMC/Bas-St-Laurent, BHHS Quebec, Image/Saguenay, Charlevoix (imcha), Immeubles Contact/Alma. Tous en source_id *_ag_* (dedup Centris). Registres sources.json + source_immo_agencies.json mis a jour. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
-
Thu, Aug 13, 2026 4
-
feat: SEO complet (rendu serveur immoka/seo.py) + README détaillé avec captures
…
- Rendu HTML côté serveur sur chaque route via le catch-all : title/meta/canonical/og uniques, JSON-LD (RealEstateListing+Offer+BreadcrumbList, WebSite+SearchAction), contenu et liens internes dans #root que React remplace au montage - Pages programmatiques /a-vendre/{ville}[/{type}] et /type/{type} : stats (médiane/moyenne), liste paginée 48/page, maillage interne, seuil 3 annonces - Fiches /propriete/{uid}/{slug} : 301 depuis l'uid nu, 410 Gone si retirée, 404 réel si inconnue (fini les soft-404) - sitemap.xml (index + fiches-N/villes/villes-types/types/pages, lastmod, cache 1 h), robots.txt, /api/seo/resolve - Frontend : routes SPA miroirs (pages/Category.tsx), slugs partagés Python/TS, document.title dynamique, liens de cartes avec slug - README refait : badges à jour (57 900+ propriétés, 95 connecteurs, 22 bannières), 9 captures d'écran fraîches (accueil, grille, carte, fiche, quartier, page ville, stats, agences, mobile), sections kit complet / architecture / SEO / API / structure Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
watch : géocodage en lot + appariement Vrai-Prix à chaque cycle (carte toujours peuplée)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
docs: ka-maps-immo-ka.md — intégration Immo-Ka Maps
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Immo-Ka Maps — carte propulsée par Ka Maps (framework Groupe Ka, moteur Mapbox 3D)
…
Frontend : MapView réécrit sur @groupe-ka/ka-maps — style Mapbox Standard 3D par défaut + bouton 2D, pastilles encre/blanc (rouge #e23744 = sous l'estimation Vrai-Prix), grappes compte + prix moyen clampé, « Rechercher dans cette zone », aperçu React (fin du popup HTML), sync liste↔carte, caméra dans l'URL, badge Immo-Ka Maps · Groupe Ka, recherche debouncée. PropertyMap (fiche) porté sur le même fond Ka. map/immokaStyle.ts et map/pills.ts supprimés (remplacés par le framework). Backend : /api/listings.geojson accepte bbox/limit + tous les filtres de /api/listings et renvoie totalGeocoded/totalMatching ; index idx_listings_geo(lat,lng) ; PRAGMA optimize au cycle d'ingestion. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Wed, Aug 12, 2026 13
-
design: boîte prix/specs premium — kicker, chip type, $/pi², fiche technique à rangées (icône teintée + libellé + valeur), jauge Vrai-Prix P10-P90 avec marqueurs estimation/prix demandé, bornes de vraisemblance sur les deltas
…
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: iconographie maison (Icons.tsx, ~30 icônes trait 1,7px) remplace tous les emojis + filtre prix bidon Kijiji (<5000$)
…
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: enrichissement fiches Kijiji (description, attributs, galerie 1600px) et LesPAC (adresse civique, caractéristiques, galerie basephoto) + champs annexes Ubee
…
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: duproprio — fiche complète (dimensions des pièces, caractéristiques, remarques du proprio, description longue, année/superficies)
…
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: connecteurs Kijiji, LesPAC et Ubee (immobilier à vendre, Québec seulement)
…
- kijiji.py : c35 maisons + c643 condos + c641 terrains, l9001 (QC), __NEXT_DATA__/Apollo, prix en cents normalisés, GPS natif - lespac.py : b37-b42 achat-vente province entière (exclut location et vente d'entreprises), searchResponse embarqué, caractéristiques structurées - ubee.py : API anonyme SearchProperties (Seller, résidentiel+commercial), galerie Cloudinary complète, superficies m²→pi² Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: carte propriété dédiée (zoom, marqueur pulsant, anneaux 5/15 min à pied) + stats survalorisation vs Vrai-Prix par bannière
…
- PropertyMap.tsx : la fiche montre enfin la carte centrée sur LA propriété (l'ancienne mini-carte passait un filtre q ignoré par l'API) - /api/stats : écart médian prix demandé vs estimation Vrai-Prix par bannière (médiane, P25-P75, % sous/juste/survalorisé) - Stats.tsx : jauges divergentes par bannière + répartition Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
chore: attribution carte — Groupe Ka seul (badge + crédit bas-droite), échelle en bas-gauche
…
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
fix+feat: carte éditoriale contrastée + correctifs « aucun point »
…
- gzip sur l'API (GeoJSON 20 Mo → 2,3 Mo : les points s'affichent enfin sur connexion normale) - repli roundRect (Safari < 16) + addPills non bloquant : les points survivent à tout - style éditorial : relief au zoom province, eau bleue franche, forêts vertes, autoroutes rouges Immo-Ka, primaires jaunes, bâtiments terracotta, étiquettes fr renforcées Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: carte 100% maison signée Groupe Ka — style vectoriel from scratch, pastilles de prix étirables, bonnes affaires Vrai-Prix
…
- map/immokaStyle.ts : fond de carte écrit à la main (schéma OpenMapTiles, tuiles libres) — papier chaud, eau froide, autoroutes blush, étiquettes fr - map/pills.ts : pastilles de prix générées au canvas (stretchable images, icon-text-fit), variante rouge « sous l'estimation Vrai-Prix » - MapView : clusters rouges, sélection, popup badge bonne affaire, légende, badge + attribution « Cartographie Groupe Ka » - web.py : vp (valeur Vrai-Prix) dans listings.geojson Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: matching Vrai-Prix spatial+text durci (civique obligatoire), géocodage batch AQ, filtre prix sur demande, pagination dans l'URL
…
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: +agences source.immo (Domicilia…), KW Prestige, Scrapfly (js_scenario), géocodage Adresses Québec, fix double-titre quartier
…
- 5 agences source.immo (Domicilia 1427, Immodev, Réalta, Gaillardetz…) via balayage clients source.immo - KW Prestige (277 fiches via sitemap Centris) → 81 connecteurs - base.py : méthode scrapfly() complète (js_scenario scroll, proxy_pool, rejeu API JSON via ASP) - geocode : Adresses Québec (MERN) prioritaire + visibles seulement (10× plus rapide) - fix fiche : bloc « Le quartier » (plus de double titre) déplacé après les infos propriété (ordre mobile) - Coldwell Banker / eXp : documentés a_faire (feed non-QC / gated), notes techniques Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
feat: thème rouge, sous-agences, quartier StatCan, estimation Vrai-Prix, géocodage
…
- Palette rouge (distincte de Lou-Ka), pagination 12/page, page Sources par sous-agence - 74 connecteurs (DuProprio, Via Capitale portail, Royal LePage par bureau, C21 sous-agences…) - Bloc quartier (recensement 2021, crime, chaleur, proximité — données StatCan/INSPQ) - Estimation Vrai-Prix par fiche (valeur + fourchette + confiance + lien analyse) - Géocodage Adresses Québec + Nominatim ; dédup pré-calculée (perf) ; SQLite WAL Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-