Lou·Ka iOS
Every Quebec rental in your pocket — and a swipe that learns your taste
The native SwiftUI companion to lou-ka.com: 9,000+ live listings from 190+ sources with full filters, a province-wide map, market stats — and a Discover mode driven by an on-device recommender.
9,000+
live listings
190+
sources aggregated
255
managers in the registry
5
native tabs
0
external dependencies
1/6
exploration cards vs. filter bubble
Overview
Lou·Ka iOS is the 100% native companion to Quebec's rental aggregator — the same 9,000+ live listings, the same paper/ink/lime editorial design, connected directly to the production API. Five tabs cover the search: filterable listings, a swipe-based Discover mode, a MapKit province map, market statistics, and the registry of 255 property-manager sources.
Discover is the app's signature: one full-screen listing at a time with story-style photos — swipe right to love, left to pass. Each swipe feeds an on-device recommender that decomposes listings into features (city, neighbourhood, size, price band, furnished, pets, balcony, parking, manager), maintains Laplace-smoothed appreciation rates weighted by confidence, and re-ranks the stack every 8 decisions — with one card in six drawn from the wider pool to avoid a filter bubble. The taste profile is persisted locally and never leaves the device.
The full listing sheet carries everything the website shows: paginated gallery, facts, inclusions, structured description digest, map, nearby points of interest, neighbourhood statistics, and a direct link to the original ad. Decoding is deliberately tolerant — one malformed source never makes other listings disappear — and the app has zero external dependencies: SwiftUI, MapKit, and Observation are all it needs.
Key Features
Full filtering
Debounced search, size chips, and complete filters — city, city-dependent neighbourhood, rent range, availability, pets, furnished, area, manager — with one-tap removable filter pills.
Discover mode
One full-screen listing at a time, story-style photos, swipe right to love — and the stack re-ranks continuously as the recommender learns.
On-device recommender
Laplace-smoothed appreciation rates per feature, confidence weighting, re-ranking every 8 decisions, and deliberate exploration to escape the filter bubble.
Province-wide map
Lime pins on MapKit with city presets — Québec, Lévis, Montréal, Gatineau — and mini-cards that open the full listing.
Market stats
KPI tiles (median, mean, available now), rent histogram, region/city/size leaderboards, offer inclusions, and price drops.
Robust by design
Field-by-field tolerant decoding with fallbacks: a malformed source never makes the other listings disappear.
How It Works
One API, one truth
The app talks HTTPS to the production lou-ka.com API with the site's full filter set — same data, same prices, nothing invented.
Decompose every listing
The recommender breaks each listing into features: city, neighbourhood, size, $300 price band, furnished, pets, balcony, parking, and manager.
Learn from every swipe
Each feature keeps a Laplace-smoothed appreciation rate (👍+1)/(👍+👎+2), weighted by confidence 1+log(1+n); a listing's score is the weighted mean.
Re-rank, but explore
The stack re-sorts every 8 decisions while ~1 card in 6 comes from the wider pool — recommendations without a filter bubble.
Keep taste on the device
The whole profile persists locally and never leaves the phone; loved listings live under the heart button.
Tech Stack
Platform
Apple frameworks
Design & data
Highlights
- After 4 likes on ~$900 studios, the header already reads "Your taste: Studio · ~$900" and the stack adapts
- The full listing sheet matches the website feature-for-feature, down to the link to the original ad
- Forced light theme so the phone's dark mode never renders unreadable text over the paper/ink design
- Space Grotesk static instances generated with fontTools because the variable font exposes no PostScript names on iOS
- Zero external dependencies — SwiftUI, MapKit, Observation, and nothing else
- On TestFlight (1.2), uploading straight from xcodebuild with automatic signing