Kennedy Wambua
← All work Case study · Founding engineer · 2026–now

Hut Yangu

A property app for Kenya. Renters browse homes neighbourhood by neighbourhood in a social-style feed with video tours, chat with listers, and see trust signals instead of scrolling classified ads.

Role
Founding engineer, main author of the code
Stack
Next.js, Expo (React Native), Supabase, PostgreSQL, Cloudinary
Status
Pre-launch, waitlist open
Links
hutyangu.com ↗
Hut Yangu mobile discovery feed with neighbourhood stories and a verified two-bedroom listing
The mobile discovery feed (development build)
The problem

Finding a rental in Nairobi often means classified sites full of stale or fake listings, agents who don't reply, and viewing fees for houses that don't exist.

Renters need to see real homes and know who they're dealing with. Honest listers need a way to stand out.

My part

I'm the founding engineer and wrote almost all of the code: the web app, the mobile app, the database and its security rules, and the backend functions.

What I built

Problems I solved, and how

  1. One backend for web and mobile

    Problem
    Two apps with separate backends would mean every rule, and every security bug, exists twice.
    Approach
    The Next.js web app and the Expo mobile app (35 screens) share one Supabase backend. Access is enforced in Postgres with row-level security on every table, about 150 policies, so a rule fixed once is fixed for both apps.
  2. Search that reads plain queries

    Problem
    People search the way they talk: "2 bedroom in Kilimani under 30k". Filter forms on a phone are slow.
    Approach
    A parser turns the query into filters for bedrooms, area and budget, results are ranked, and the search widens step by step when nothing matches. I used rules instead of an LLM because for this job they're faster, cheaper and predictable.
  3. Moderation one bad actor can't trigger

    Problem
    If any user can flag a listing down, a competitor can bury honest listers.
    Approach
    Only flags from viewers with a verified visit count. Two such flags send a listing to review, and one severe flag suspends it. It runs as a database trigger with a guard against recursion.
  4. Chat with read receipts, without a chat vendor

    Problem
    A third-party chat SDK adds cost and another place for user data to live.
    Approach
    Threads, messages and reactions live in Postgres. Each member has delivery and read cursors that are updated through a single secured function, and push notifications confirm delivery.
  5. AIReadable by AI assistants

    Problem
    More people will search through AI assistants, not just browsers.
    Approach
    The site publishes an MCP server card and WebMCP tools so assistants can look up listings. It's an early version that returns sample data for now.
More work
← Back to all work Get in touch →