01 / Residential brokerage
One source of truth for a brokerage running on four spreadsheets.
A 24-agent independent brokerage where every listing existed in four places and none of them agreed. The work was a brand refresh, a public site, and an internal agent dashboard that finally made the MLS feed the only version of the truth.
0 views
01 — Context
The situation
Cornerstone had grown from six agents to twenty-four without changing how listings were tracked. The MLS held the record of truth, but agents kept a personal spreadsheet, the front desk kept a master spreadsheet, the website was updated by hand, and the social calendar was a fifth list.
The measurable cost was stale listings. A property would go under contract on Monday and still be marketed as available on Thursday, which generated calls the team had to apologize for and gave the impression of a shop that did not know its own inventory.
02 — Problem
What was actually broken
- Four systems, no owner — Nobody was responsible for reconciling them, so everyone reconciled a little and trusted none of it.
- Manual site updates — Listings were re-keyed into the website by whoever had time, averaging a three-day lag.
- No agent view — Agents had no place to see their own pipeline, so they built one themselves — creating the fifth spreadsheet.
- Brand drift — Eleven versions of the logo were in active use across signage, email, and listing flyers.
03 — Approach
How the work was shaped
I spent the first two weeks in the workflow rather than in Figma — shadowing the transaction coordinator, sitting in on a Monday sales meeting, and asking four agents to narrate what they do between a showing and a signed contract.
- Feed first, pages second — The RESO feed became the single input. Everything the public site shows and everything the dashboard shows reads from the same normalized record, so a status change propagates in one place.
- Status as a design element — Under contract, coming soon, and just sold are not badges bolted onto a card — they change the card's entire treatment, so a scanning agent reads state before they read the address.
- A dashboard shaped like a Monday — The default view answers the three questions asked in every sales meeting: what closed, what is at risk, and what needs a follow-up today.
- One mark, four lockups — A single wordmark with defined horizontal, stacked, monogram, and yard-sign variants, so the eleven versions had a sanctioned replacement for every real use.
04 — Decisions
Three calls worth defending
- Chose a table over a card grid for the agent view — Agents compare rows. Cards look better in a portfolio and are worse for the job — the table won after a five-minute test with two agents and a stopwatch.
- Kept the public listing search to four filters — Analytics from the old site showed 91% of searches used price and bedrooms only. The other nine filters moved behind an 'advanced' disclosure.
- Put the phone number in the header on mobile — Half of all traffic was a person standing in front of a house. Tap-to-call outranks aesthetics at that moment.
05 — System
Color and type
Archivo for interface and headlines, IBM Plex Mono for data labels — a pairing that stays legible at 12px in a dashboard table and still carries a hero.
Charcoal Olive
#3D3B30
Slate
#4D5061
Lime Gold
#E7E247
Medium Blue
#5C80BC
Pale Ground
#E9EDDE
06 — Outcome
What the engagement delivers
3 days → live
Listing status lag, from three days to real time
1 system
Down from four parallel spreadsheets
+38%
Projected listing-detail views from search, modeled on the filter change
AA
WCAG 2.1 AA across all templates
The engagement ends with a documented design system, a deployed site, and a dashboard the brokerage can extend. Because the front-end is hand-written HTML, CSS, and JavaScript with no build step, the office manager can change a phone number or a headline without calling anyone — a requirement that came directly out of the discovery interviews.
Reflection
The instinct on a brokerage project is to redesign the listing card. The actual problem was upstream, in a data flow nobody owned. The redesign only mattered because the feed underneath it became trustworthy first.