House-Ka
⚠️ Application archivée le 2026-09-04 — l'URL live (https://www.house-ka.com) est hors fonction ; l'app a été retirée du cluster MacLustr (registre mld, admin-ka, gardiens, site groupe-ka). Ce dépôt spbgit reste la source de vérité pour une remise en service. www.house-ka.com — Every home for sale. One place.
Homes-for-sale aggregator for Canada outside Québec, Ontario first — a Groupe KA service and the English-language sister site of Immo-Ka (Québec). House-Ka continuously aggregates homes publicly listed by Canadian real-estate brokerages, teams and national networks, with photos, details, maps, live mortgage rates and a direct link back to each source's original listing.
House-Ka is an independent aggregator: it is not a brokerage, does not represent buyers or sellers, and is not affiliated with the sources it indexes. Prices and availability are those displayed by each source.
At a glance (live, 2026-08-28)
| Metric | Value |
|---|---|
| Homes published (deduplicated) | ~258,000 |
| Cities & towns | 5,991 |
| Active sources | 28 CREA DDF brokerage feeds (247 offices) |
| Average asking price | ~$913,000 (from $360 to $79M) |
| Average data completeness | 77.6 / 100 |
| Coverage | 9 provinces + 2 territories (all of Canada except Québec & Nunavut) |
| Launched | 2026-08-27 |
Guided tour
Ten screenshots of the live site (in docs/screenshots/).
1 — Home: search every home in one place

The landing page states the mission — "Every home for sale. One place." — above the live counters (homes indexed, cities & towns, average and highest price). A scrolling ticker streams per-source volumes in real time (Century 21 Ontario, The Cody Group, Century 21 BC…). Below, the search bar ("Where do you want to live?") combines city, property type and price-range filters with one-tap type chips (House, Land, Condo, Townhouse, Multi-family, Mobile home, Farm), and the result header offers sorting plus a List / Map toggle. The pine-green / cream / serif skin is deliberately distinct from Immo-Ka's cherry theme.
2 — Property page: full listing detail
https://www.house-ka.com/property/c21_ab%3Ac21123293118/2-amp-72-highways-rural-rocky-view-county

A listing detail page (/property/{uid}/{slug}) — here a $2,900,000 land
parcel in Rural Rocky View County, Alberta from the Century 21 Canada —
Alberta feed. Photo gallery on top, then asking price with the canonical type
badge, address with province, a favorites heart (KA ID accounts), breadcrumb
navigation, and a Location card rendered by Ka Maps with the price marker
and the listing's building/lot highlighted. The DOM order follows the Groupe
KA detail-page standard (gallery → price → description → details → analyses →
map), identical on mobile and desktop.
3 — Live mortgage rates
https://www.house-ka.com/rates

The /rates page publishes the rates actually posted by the big Canadian
institutions (banks, virtual lenders, monolines), collected continuously by
the shared Groupe KA mortgage engine. The market overview shows the best rate
per term (fixed 1/3/4/5/10 years, 5-year variable) with the median and 30-day
trend, plus every institution's prime rate. The comparison table lists each
product with its kind (posted or special offer), freshness and a link
to the official source — never an invented rate, never a stale one
without a warning.
4 — Platform statistics & data quality
https://www.house-ka.com/stats

The /stats dashboard exposes the platform's own numbers live: homes for
sale, cities, average price, source count — and, unusually for a listings
site, its full data-quality layer: active vs published listings,
quarantine size, average completeness score, and a per-source table with
listing counts, completeness and anomaly flags. Every listing gets a
completeness score (photos, description, specs, coordinates); listings
without a plausible price or a known city are quarantined until the next
enrichment pass completes them.
5 — Sources by brokerage
https://www.house-ka.com/agencies

The /agencies registry lists every covered brokerage and team — 28 banners,
247 offices — with expandable per-banner listing counts (Century 21 Canada by
province, The Cody Group, Revel Realty, Grapevine…). Each source publishes
its board's full inventory through the CREA DDF feed; the same property
published on several sites is only counted once (deduplication by DDF
number). Clicking a source filters the search to its homes.
6 — Contact
https://www.house-ka.com/contact

The contact page, with the House-Ka identity and the Groupe KA footer linking to the sister services.
7 — Map view: the whole country on one map
https://www.house-ka.com/?view=map

The split list/map view powered by Ka Maps (@groupe-ka/ka-maps, the
shared Groupe KA Mapbox framework). Clusters show the listing count with the
approximate median price underneath; "search this area" re-queries the
viewport, and the list panel stays in sync with the markers by construction
(single /api/listings search backend). 2D/3D toggle, drawing tool and
geolocation included.
8 — Account: KA ID single sign-on
https://www.house-ka.com/account

The /account page plugs into KA ID, the central Groupe KA identity
(groupe-ka.com): one member identifier valid across the whole ecosystem.
Signed-in users get cross-site favorites ("My Ka universe"). The footer
presents the ecosystem: Groupe-Ka portal, Immo-Ka (homes for sale in Québec),
Lou-Ka (rentals in Québec), Vrai-Prix (Québec market-value estimates).
9 — Terms of use
https://www.house-ka.com/terms

Terms of use — including the independent-aggregator disclaimer and the rules for source attribution and linking back to original listings.
10 — Privacy policy
https://www.house-ka.com/privacy

Privacy policy: what is collected (KA ID account data, favorites), what is not, and how the analytics distinguish human traffic.
Features
- Nationwide search — by city/town (5,991 of them), property type, price range and free-text query; quick type chips; newest-first and price sorting; list or map view.
- Programmatic SEO pages —
/for-sale/{city}and/for-sale/{city}/{type}city pages plus/type/{type}pages, all server-rendered with meta, JSON-LD and sitemaps (in English,en_CA). - Listing pages — gallery, price, canonical type, specs, description, nearby commerce banners adapted to each province, Ka Maps location card, link to the original listing.
- Live mortgage rates — national Canadian rates with kind, freshness and
official source per product (shared
immoka/mortgage/engine, seedocs/mortgage-engine.md). - Transparent statistics — public
/statsdashboard including the quality layer (quarantine, completeness, anomaly flags per source). - KA ID accounts & favorites — Groupe KA single sign-on, cross-site favorites hub.
- Data quality pipeline — completeness scoring, quarantine, image audit, coordinate guard covering all of Canada, cross-site dedup.
Data & sources
All 28 active sources are Canadian brokerage / team / network sites whose inventories come from the CREA DDF feed:
- RealtyPress connector (
immoka/connectors/realtypress.py) — one generic connector covers every brokerage or team site running the RealtyPress WordPress plugin (Revel Realty, The Cody Group, Grapevine, Sutton Ottawa, Hanlon Realty…). Each site exposes its board's full inventory; cross-site duplicates are masked by DDF number (external_id = ddf<id>, dedup byMIN(uid)). - Century 21 Canada connector (
immoka/connectors/c21_canada.py) — one provincial source per region: BC, AB, SK, MB, ON, NB, NS, PE, NL, YT, NT. (Saskatchewan has no polygon API and is searched via ~30 cities; the Alberta watcher uses adaptive sleep for cycles longer than 24 h.)
DDF list cards carry no property type: most listings get their type when
their detail page is fetched (IMMOKA_RP_DETAIL_LIMIT per source per sync).
Sources are declared in data/sources.json and the site census lives in
data/canada_agencies.json; the checked-in sources.json documents the
initial registry.
Canonical property types (English)
House, Condo, Townhouse, Semi-detached, Duplex, Triplex, Multi-family, Cottage, Mobile home, Land, Farm, Commercial, Parking —
see immoka/normalize.py.
Architecture
Forked from Immo-Ka on 2026-08-27 (the Ontario expansion paused there
moved here — see the immo-ka repo's docs/ONTARIO-PAUSE.md). The Python
package keeps its historical name immoka.
- Backend — FastAPI + SQLite (
data/immoka.db), same pipeline as Immo-Ka: connectors →ingest→ dedup →quality(relaxed publication rule: price + city; type/description enrich over time via detail passes) → API. Sync loop runs every 240 minutes under PM2. - Frontend — React/Vite, English, pine/cream/serif skin (deliberately
different from Immo-Ka's cherry). SPA routes:
/,/property/{uid}[/{slug}],/rates,/agencies,/stats,/account,/contact,/terms,/privacy; SEO routes/for-sale/{city}[/{type}]and/type/{type}are resolved server-side. Map = Ka Maps (@groupe-ka/ka-maps, expected at../../ka-maps). - SEO —
immoka/seo.pyrenders server-side HTML (meta, JSON-LD, sitemaps,robots.txt) in English. - Mortgage engine — shared with Immo-Ka (
immoka/mortgage/), national Canadian rates. Seedocs/mortgage-engine.md. - Removed vs Immo-Ka — everything Québec-only: Hydro-Québec estimates, BDZI flood, RSQAQ air, gazquebec, rental registry, quartier (census), Vrai-Prix, movers/inspectors directories, PDF listing sheets, all QC connectors.
Repository layout
run.py CLI entry point (sync / watch / serve / list / geocode / mortgage-sync)
immoka/ Python package (historical name kept from the Immo-Ka fork)
web.py FastAPI app: API + SEO HTML + SPA fallback
ingest.py, quality.py, normalize.py, schema.py, db.py
seo.py English server-side SEO (meta, JSON-LD, sitemaps)
geocode.py, imgaudit.py, stats.py, commerces.py, poi.py
auth.py, kaid.py, favorites.py, hubfav.py, hubprofile.py (KA ID SSO + favorites)
mortgage/ shared Groupe KA mortgage-rate engine (+ /api/mortgage)
connectors/ realtypress.py, c21_canada.py, base.py, jsonld.py, _detailutil.py, _resilient.py
frontend/ React/Vite SPA (src/pages: Home, Listing, Rates, Stats, Agencies, Account, Contact, Legal)
scripts/ scouting & maintenance (scout_canada_rp*.py, gen_connector_docs.py, …)
docs/ mortgage-engine.md, ontario-agencies.md, screenshots/
data/ SQLite DB + live registries (not committed)API
| Route | Description |
|---|---|
GET /api/listings |
search (city, type, price, text, bbox/polygon, sort, pagination) |
GET /api/listings/{uid} |
full listing detail |
GET /api/listings.geojson |
map markers/clusters feed |
GET /api/facets |
cities, property types, sources facets |
GET /api/agencies |
brokerage/office registry with counts |
GET /api/stats |
live platform + quality statistics |
GET /api/stats/catalog, /dashboard, /report |
stats module (kacharts/kapdf, custom reports via POST /api/stats/report/custom) |
GET /api/mortgage |
live mortgage rates |
GET /api/commerces |
nearby commerce banners per province |
/api/auth, /api/favorites |
KA ID session + favorites |
GET /api/sources, POST /api/sync |
connector registry & manual sync |
GET /api/seo/resolve, /sitemap.xml, /sitemaps/{name}, /robots.txt |
SEO plumbing |
Run
python run.py sync [source ...] # sync listings
python run.py watch [minutes] # sync loop (default 60 min; prod uses 240)
python run.py serve [port] # API + frontend (default 8098)
python run.py list # registered connectors
python run.py geocode [n] # geocode listings missing coordinates
python run.py mortgage-sync # collect mortgage rates.env (see .env.example, never committed): IMMOKA_BASE_URL=https://www.house-ka.com,
IMMOKA_RP_DETAIL_LIMIT=<n> (detail pages fetched per source per sync),
plus optional scraping/SSO/mortgage-engine settings.
Deployment
Node M4M64b, ~/apps/house-ka, PM2:
| Process | Role |
|---|---|
house-ka-web |
run.py serve on port 8098 |
house-ka-sync |
run.py watch 240 (sync loop every 4 h) |
house-ka-ngrok |
tunnel → www.house-ka.com |
Remote-first: the repo on the node is the source of truth (never the
laptop copies); origin = spbgit, the personal git server
(gitsrv:srv/git/house-ka.git, bare repos on M3U96a). Edit over SSH, build,
pm2 restart, then commit & push from the node (agent forwarding).
Adding sources (rest of Canada)
RealtyPress sites exist across Canada. Census & instructions:
docs/ontario-agencies.md (method transposes to any province). Add the site
to data/canada_agencies.json + an entry in data/sources.json, then
python run.py sync <id>. The coordinate guard covers all of Canada.
Groupe KA ecosystem
House-Ka is one of the Groupe KA platforms (groupe-ka.com): Immo-Ka (homes for sale, Québec), Lou-Ka (rentals, Québec), Rent-Ka (rentals, Canada outside Québec), Vrai-Prix (market-value estimates), Auto-Ka, Food-Ka, Resto-Ka, Sorti-Ka, Job-Ka, Trouve-Ka, Crea-Ka, Fabri-Ka — all sharing KA ID, the ka-ui design system, Ka Maps and the stats/PDF modules.
Contact
Simon-Pierre Boucher — contact@spboucher.ai — © 2026 Groupe-Ka