Platform update

OpenHaus has sunset.

Thank you to every seller, buyer, and partner who trusted us with a home. Together we listed more than $26 million in cumulative listing value. The marketplace is now closed: new listings, offers, and accounts are no longer accepted.

Listing and browse actions are disabled. The application will remain offline.

$26.5M+

Cumulative listing value

BC

Primary market

FSBO

Listing model we tested

Why we closed

We researched the legal, operational, and commercial case for a free, unrepresented marketplace in British Columbia. The findings were consistent: the model was not sustainable.

Regulation

British Columbia’s licensing regime

Trading in real estate in British Columbia is a regulated activity overseen by the BC Financial Services Authority (BCFSA). Rules that apply to licensed trading services — advertising, offer handling, trust, and disclosure — sit uncomfortably next to a product that let unrepresented owners publish listings, generate purchase and sale agreements, and negotiate directly with buyers. Remaining fully aligned with that framework, at the scale and price point we operated, would have required a licensed-brokerage structure we were not in a position to run.

Market

FSBO supply did not materialize

For-sale-by-owner inventory is structurally hard to source. Homeowners transact infrequently; identifying sellers in-market is expensive; and when they do sell, most still prefer to pay a full-service commission so that pricing, showing, and negotiation risk sit with a licensed agent. That preference held even when listing on OpenHaus was free. Optional paid add-ons (MLS exposure, photography) were not enough to carry a marketplace whose core listing was unmonetized.

Free listings were not a durable business

Zero commission was the product promise. It was also the constraint. Customer-acquisition cost for FSBO sellers stayed high, conversion to paid services stayed low, and the regulatory overhead of facilitating trades did not shrink with volume. After reviewing those results, we concluded that continuing to operate the application was not responsible for our users or for the company.

We are grateful for the trust. If you have records, questions, or outstanding correspondence, write to contact@openhaus.ca.

For developers

How the product was built

A short tour of the interesting parts — not a full design doc. The precise write-up lives in architecture.md in the monorepo.

OfferFlow

A browser-side Contract of Purchase and Sale builder: BC-style subjects, frozen clause snapshots, signature constraints, counter-offers, and client-generated PDFs.

Direct transaction loop

Listings, viewing calendars with iCal, listing-scoped chat over Socket.IO, and KYC gates — without a brokerage in the middle.

Pragmatic backend

Express + tsoa (OpenAPI from controllers), Postgres with numbered migrations, Stripe for add-ons only, and an in-process JWT blacklist that replaced Redis.

Presigned media

The client uploaded listing photos straight to S3 via PUT URLs the API encrypted with the caller’s JWT before returning them.

OpenHaus public listings map and card grid
Public catalog: Mapbox pins beside listing cards. Cover photos were S3 objects; locally they render as placeholders until files are restored.
Listing details drawer over the map catalog
Listing detail drawer — facts, mortgage qualify, and the path into a viewing request or OfferFlow.
OfferFlow price step with Offerland estimate
OfferFlow price step, with a cached Offerland automated value estimate beside the buyer’s number.
OfferFlow deposit step
Deposit guidance built into the wizard — amount, timing, and optional lawyer/notary details.
OfferFlow review with generated purchase contract PDF
Review step: a client-generated Contract of Purchase and Sale (react-pdf) from structured offer data, ready to sign and send.
Listing-scoped inbox with an offer card in the thread
Listing-scoped inbox: chat plus an offer card in the thread, backed by Socket.IO and Postgres.

Stack at a glance

api — Node, Express, tsoa, pg-promise, Socket.IO, SES, Stripe. ui — React, CRA / CRACO, Chakra, Recoil, Mapbox, react-pdf. marketing-ui — Next.js 14, Tailwind, Sanity CMS. Three git roots, one Postgres database, S3 for media.