All work
Case study · Operational designL1–L3 · Operations, Infrastructure, Clarity

HearthSeek

A back office and a public website for a Spokane real estate agent and their brokerage, built as a working prototype. It has been proposed, not adopted, and it runs on sample data until the MLS access it was designed around exists.

Role
Designer and sole builder
Period
Sep – Oct 2026
Type
Prototype · proposed, not in use

The question it answers

Every morning: what properties or opportunities appeared or changed that the agent should care about? That’s a different job from a search portal. The core record is the property, not the listing: a property can be listed, withdrawn and relisted, and it also has parcel records, permits, recorded sales and zoning, each from a different source.

What I built

The back office

A morning dashboard of what changed, a map, and a page per property that shows every fact and where it came from. Public county records (parcels, recorded sales, zoning, permits, the foreclosure list) are wired in, alongside CSV imports of the agent’s listings and contacts.

The agent’s website

Home search, listing pages with the disclaimers MLS rules require, area guides, buyer and seller guides, and a home-value request. Every form sends one kind of inquiry into the back office, with a record of the person’s consent.

The MLS feed

An MLS Grid sync, built and tested against sample records. It refuses to run until the licence and token exist.

See it

HearthSeek dashboard: counts of new listings, price cuts and buyer fits, a list of what changed, a small map, and a double-check panel of properties whose sources disagree. Every property carries a Sample badge.
The morning dashboard: what changed, which buyers it fits, and which facts need a double-check.
A property’s Evidence tab: a table of fields, each with its current value, every observation behind it with source and date, and a state such as Single source or Aligned.
A property’s evidence: every value, every source behind it, and whether the sources agree.
HearthSeek map of the Spokane area with striped violet price pins and a list of the same properties beside it, all marked Sample.
The map. Striped violet pins mark made-up test properties.
The agent’s public website: a dark homepage with the agent’s introduction, a call button, and a home search panel. A banner says every listing is synthetic sample data.
The agent’s public website. Every listing on it is labelled as made-up sample data.
A sample listing page on the agent’s website, with illustrated photos, the home’s details, and a Request a showing form beside them.
A listing page. The showing request goes straight into the back office as an inquiry, with the person’s consent recorded.

The back office screenshots come from a throwaway copy loaded only with made-up test properties and buyers, which is why everything carries a Sample badge. On the website screenshots, the agent’s name, photo and contact details have been swapped for made-up ones.

The decisions that matter

Every fact says where it came from

Each value keeps its source, when it was seen, how authoritative that source is, and what it may be used for. When two sources disagree, the property is flagged for a double-check instead of one answer being picked quietly.

Prospecting has a line it can’t cross

The agent asked for help finding new buyers and sellers. The rule I wrote: the system may assist, record, organize and compliance-check prospecting the agent does, but it may not go and collect personal data from sources that don’t license it. Publicly visible isn’t the same as licensed to use, and nobody is turned into a lead from a property record.

Do-not-contact outlives deletion

When someone asks never to be contacted, everything about them can be erased except a salted one-way hash of how to reach them. Otherwise the next contact import would add them straight back.

Licensing shapes the architecture

MLS data licensed for a back office can’t be shown to the public, so the website gets its own feed and shares nothing with the back office except the inquiry format. Fields the MLS rules forbid on a public page don’t exist in the website’s listing type at all.

Off until it’s really set up

Integrations without credentials fail closed and say so. Sample data is marked everywhere it appears, decided by where it came from rather than how it looks, so nothing made up can pass for real.

Honest state

It’s a prototype, and nobody is using it. I proposed it to an agent and brokerage I know; they’ve been too busy to take it further. Very little real data has gone through it, and the MLS feed and the public site’s listings are waiting on MLS Grid and IDX access that doesn’t exist yet.

Through the Foundation Layer

Most of HearthSeek sits low in the stack. The compliance rules are L1: they define how prospecting is allowed to run before anyone runs it. One home for the data is L2. Every fact showing where it came from, and whether its sources agree, is L3. The Foundation Layer.

Where to next