Skip to content

A property portal built around how buyers browse

A property listing and search portal that helps buyers and renters find the right home fast, with a listing manager built for agents behind the scenes.

DoorwellLarkfield · drawn area
Saved homes4 Viewings2PNPriya NairBuying with Sam
Drawn area For sale3+ bedsUp to $650KPrivate yardHome typeYear built More3 filters onSave search
6 homes in your drawn area
Newest
Returned in 97 msList and map drawn from one response · all 3 filters met

$589,000

3 bd · 2 ba · 1,640 sq ft

14 Wren Hollow Ln

Larkfield · Fenced rear yard

$612,500

4 bd · 2.5 ba · 2,080 sq ft

208 Tanner St

Larkfield · Rear and side yard

New · 3 days

$545,000

3 bd · 2 ba · 1,480 sq ft

37 Orchard Row

Larkfield · Rear yard, raised beds

$639,000

4 bd · 3 ba · 2,210 sq ft

9 Millrace Ct

Larkfield · Rear deck and lawn

$498,000

3 bd · 1.5 ba · 1,320 sq ft

121 Sparrow Way

Larkfield · Fenced rear yard

$624,900

3 bd · 2 ba · 1,760 sq ft

56 Ashgrove Terrace

Larkfield · Walled garden

Showing all 6 · homes outside the line you drew are left out, whatever their description says

Area drawnRedrawClear
$498,0003 bd · 1.5 ba · 1,320 sq ft121 Sparrow WayFenced rear yard
Search as I move the map
6 on the map · 6 in the list

The brief, in specifics

Industry

Residential Brokerage

Duration

14 weeks

Cooperation model

Fixed price, phased

Services
UX researchSearch rebuildAgent tooling
Integrations
StripeTwilioMapboxDocuSign
Technologies
Next.jsTypeScriptTailwind CSSElasticsearchMapbox GLAWS S3
Team
1 Project lead1 Product designer2 Frontend engineers1 Backend engineer1 QA engineer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

Introduction

What we were brought in to do

Search rarely surfaced relevant homes and listing pages crawled under heavy photo galleries. We rebuilt the portal around how buyers actually browse and compare.

A regional agency network with four thousand active listings and a portal built in 2016 that had been extended for years and never revisited. Traffic was seventy percent mobile against a page that shipped forty full-resolution photographs. The trigger was the network's largest office threatening to list on a competitor portal, on the grounds that their own site was losing them inquiries.

Design & Build

Where the old way broke

Filters returned noisy results, listing pages loaded slowly on mobile devices, and agents had no simple self-serve way to manage their own listings without calling support.

Filters ran on a keyword index, so searching a neighborhood by name returned every listing whose description mentioned it, including ones two districts away. Listing pages sent every gallery image at full size on first paint, which on a mobile connection meant six seconds before anything was readable, and the analytics showed most visitors leaving inside four.

We rebuilt search with practical spatial filtering, optimized listing pages for fast image streaming, and shipped a dedicated agent dashboard for managing listings end to end.

01

Instant Mapbox Search Engine

Sub-100ms spatial and keyword filtering across thousands of active property listings.

Listings are indexed in Elasticsearch with geo_shape fields, so a hand-drawn polygon on the map is a first-class query rather than a bounding-box approximation of one. Map viewport and filter state resolve as a single debounced query that cancels on the next pan, so fast movement doesn't queue work. Results and pins come from the same response, which is why the list and the map can't disagree.

What shipped
  • geo_shape indexing: freehand map areas query directly
  • Viewport and filters as one cancellable query
  • List and pins from a single response
6:48
Larkfield· drawn area3
3+ beds Up to $650K Private yard
Area drawn · Redraw Updates as you pan
6 homes 97 ms · same 6 as the map
1
$589,0003 bd · 2 ba · 1,640 sq ft14 Wren Hollow Ln
2
$612,5004 bd · 2.5 ba · 2,080 sq ft208 Tanner St
3
$545,0003 bd · 2 ba · 1,480 sq ft37 Orchard Row
4
$639,0004 bd · 3 ba · 2,210 sq ft9 Millrace Ct
SearchSavedViewingsAlerts
On screen

The same drawn-area search on a phone: the map updating as it pans, numbered pins, and a results sheet holding the same six homes the map shows.

Listings / Old Mill / DW-40218

42 Kestrel RiseSingle-family · 4 bd · 3 ba · 2,480 sq ft
Live3 unpublished changes
Draft autosaved 10:42 AMPreviewPublish changes

Photos · 40

Drag to reorder · the first photo is the cover
1Cover
Drop here
3
4
5
6
7
8
9
10
11
+29
14 → 2
40 of 40 uploaded straight to storage3D tourembedded from linkReplaceOriginals stay with you; visitors get sized copies

Price

Unpublished

Now live

$724,000

New price

$699,000−$25,000

Price note · shown on the listing

Goes public on publish

Price adjusted to reflect the roof replacement quote, now included in the disclosure packet. Offers reviewed as they arrive.

Private note · agents onlySeller approved the reduction by phone 09/16, 4:20 PM.

Open houses

This weekend

Sat 09/19

10:00 – 11:30 AMLive
1:00 – 2:30 PMNew

Sun 09/20

11:00 AM – 12:30 PMNew
2:00 – 3:30 PMLive
Add a slot

Before this goes live

Single-family home
14 of 14 required fieldsReady to publish
Price Beds Baths Living area Lot size Year built Property tax HOA or none Heating Parking Disclosures Cover photo Description Listing agent

7 Brambling Close can’t publish

Condo · 11 of 14 required · missing HOA fees, unit floor, pet policy. Saved as a draft.

Status history

Who and when
  1. Coming soon → Live

    Dana Whitlock · 09/08 9:14 AM

  2. Draft → Coming soon

    Marcus Bell · Office manager · 09/05 3:30 PM

  3. Created as Draft

    Dana Whitlock · 09/03 4:02 PM

On screen

The agent editing their own listing: photos mid-reorder after a forty-photo upload straight to storage, a price reduction with the note that will go public, a weekend of open-house slots, the required-field check for a single-family home, a condo draft it refuses, and the status history with who and when.

02

Agent Listing Studio

Self-serve dashboard where agents manage photos, tours, and status end to end.

Agents upload straight to S3 through pre-signed URLs, so a forty-photo shoot never passes through the application server. Photos reorder by drag, tours embed by URL, and every status change is audited with who and when. Drafts autosave, and a listing can't publish until the required fields for its property type are complete. The old system happily pushed half-filled records live.

What shipped
  • Direct-to-S3 uploads via pre-signed URLs
  • Status changes audited with author and timestamp
  • Type-aware completeness gate before publishing

Listings / Old Mill / DW-40218

42 Kestrel RiseSingle-family · 4 bd · 3 ba · 2,480 sq ft
Live
Download originalsAdd photos

Every photo, sized on upload

40 photos · AVIF and WebP at five widths, made before anyone asks
PhotoOriginalCopies · five widthsReady
01-front-elevation.jpg
Agents onlyAVIF480768108014401920WebP48076810801440192009/03 4:03 PM
02-living-room.jpg
Agents onlyAVIF480768108014401920WebP48076810801440192009/03 4:03 PM
03-kitchen.jpg
Agents onlyAVIF480768108014401920WebP48076810801440192009/03 4:03 PM
04-rear-elevation.jpg
Agents onlyAVIF480768108014401920WebP48076810801440192009/03 4:03 PM
05-primary-bedroom.jpg
Agents onlyAVIF480768108014401920WebP48076810801440192009/03 4:04 PM
40-rear-garden.jpg
Agents onlyAVIF480768108014401920WebP480768108014401920Replaced 10:38 AM · sizing

Showing 6 of 40 · a replaced photo stays off the listing until its copies are made

01-front-elevation.jpg

Cover photo · what each copy weighs
AVIF WebP
480w34 KB49 KB
768w78 KB112 KB
1080w141 KB198 KB
1440w229 KB322 KB
1920w364 KB507 KB

Original

6000 × 4000 · 18.4 MB

Yours to download. Never sent to a visitor.

What a buyer's phone receives

In this order
  1. 1The page, with its textPrice, facts and a blurred stand-in for each photo arrive inline
  2. 2The cover, sized to the screenSwapped in over its stand-in once it has decoded
  3. 3The rest, as they scrollPhotos below the fold aren't asked for until they come near

Buyer preview

Mid-scroll
Cover · 768w AVIF

$724,000

42 Kestrel Rise · Old Mill · 4 bd · 3 ba

Decoded · stand-in · not asked for yet
03

Lazy-Streamed Media Pipeline

On screen

The listing's photos after upload: each already sized into AVIF and WebP at five widths, the original kept for the agent only, and what a buyer's phone asks for first, next, and only as they scroll.

Optimized image loading pipeline delivering sub-second first paint even on high-res gallery listings.

Every upload is derived into AVIF and WebP at five widths on ingest, so the first visitor never pays for the transcode. The gallery ships a blurred placeholder inline in the HTML and swaps the full frame in on decode; anything below the fold isn't requested until it approaches the viewport. Full-resolution originals stay available to the agent and never reach the page.

What shipped
  • AVIF and WebP derivatives on ingest, five widths
  • Inline placeholders swapped for full frames on decode
  • Originals kept for agents, never served to visitors

What we built together

  1. 01

    Rebuilt search relevance around the filters buyers use most

    Search moved to a geo-aware index. A hand-drawn area on the map is now a real query; before, it was a keyword match on whatever the description happened to say.

  2. 02

    Streamed and lazy-loaded listing media for fast first paint

    The budget came from measuring what a listing page actually shipped on a mobile connection: forty full-size photographs before a single line of text.

  3. 03

    Designed an agent dashboard for self-serve listing management

    Agents upload straight to storage through pre-signed URLs, and a listing cannot publish until the fields its property type requires are complete.

  4. 04

    A/B tested saved-search prompts to lift return visits

    The saved-search prompt ran for six weeks against a metric declared up front. The old portal's features had been judged on whether anyone objected.

Operational results after launch

−60%

Listing page load

+2.4x

Saved searches

−50%

Agent listing time

Page load is the change in field Largest Contentful Paint on listing pages, measured from real mobile sessions before and after. Saved searches compares the eight weeks after launch to the eight before. Agent listing time comes from the studio's own timestamps, first draft save to publish, and not from what agents reported.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

Process

Phase by phase

  1. Phase 1: Search & Media Audit

    Buyer Search Behavior Analysis

    Audited search queries and page load bottlenecks across 50,000 monthly buyer sessions to isolate filter friction.

    • Search Friction Report
    • Media Loading Benchmark
    • PropTech UX Audit
  2. Phase 2: Spatial & Search Architecture

    Elasticsearch & Mapbox Rebuild

    Rebuilt property search indexing using Elasticsearch combined with custom Mapbox GL cluster rendering for sub-100ms map interactions.

    • Elasticsearch Schema
    • Mapbox Cluster Component
    • Fast Filter Engine
  3. Phase 3: Agent Tooling Design

    Self-Serve Listing Studio

    Designed a dashboard where agents drag and drop photos, update pricing, and schedule open houses on their own.

    • Agent Studio UI
    • Listing Upload Pipeline
    • Role Permission Matrix
  4. Phase 4: Media Optimization & Launch

    Progressive Image Delivery & Release

    Implemented progressive WebP image streaming and edge CDN delivery, cutting listing page load time by 60%.

    • AWS S3 + CDN Media Pipeline
    • A/B Testing Framework
    • Production Release
DoorwellLarkfield · drawn area
Saved homes4 Viewings2PNPriya NairBuying with Sam
Saved homes
Compare 4 saved homes
All in Larkfield · drawn area
Share with SamAdd a home

10 criteria

From each listing’s required fields
14 Wren Hollow LnLarkfield · saved
208 Tanner StLarkfield · saved
9 Millrace CtLarkfield · saved
56 Ashgrove TerraceLarkfield · saved
Price$589,000$612,500$639,000$624,900
Beds · baths3 · 24 · 2.54 · 33 · 2
Living area1,640 sq ft2,080 sq ft2,210 sq ft1,760 sq ft
Lot0.18 ac0.22 ac0.26 ac0.16 ac
Year built1962197819941956
Outdoor spaceFenced rear yardRear and side yardRear deck and lawnWalled garden
Parking1-car garage2-car garage2-car garageDriveway
HOANoneNone$45/moNone
Property tax$6,140/yr$6,880/yr$7,420/yr$6,510/yr
Days listed125219
Viewing Booked · Sat 09/19 · 10:30 AMBook a viewing Booked · Sun 09/20 · 11:15 AMBook a viewing
Saved search · Larkfield, drawn area · 3+ beds · Up to $650K · Private yardSaved from this search
On screen

Four saved homes compared across ten criteria, with the two viewings already booked marked in the last row and the saved search they came from.

Ways of working

About our collaboration

A cross-functional team of 5 worked on a fixed price, phased basis over 14 weeks, covering UX research, Search rebuild, Agent tooling. We ran a weekly demo and kept a shared board open to check at any time. An in-house team took over day-to-day operation before the engagement ended, with handover built into the last phase.

Agents from three offices reviewed each increment, and the listing studio was built with two of them sitting with the team rather than from a requirements document. The A/B test on saved-search prompts ran for six weeks with a pre-declared metric, because the previous portal's features had been judged on whether anyone complained.

What we'd carry into the next one

  • Sub-second listing media streaming cut listing page load time by 60%, and property page bounce fell with it.

    Bounce fell because the first paint was readable, not because the gallery was faster: text now arrived before the photographs did.

  • Self-serve agent listing tools cut agent listing time by 50%, and listing administration tickets largely disappeared.

    The listing tickets disappeared because the completeness gate refuses a half-filled record. Most of those tickets had been agents asking why a listing looked wrong.

  • Behavioral saved-search prompts increased return buyer visits by 2.4x.

    Prompting on behavior instead of on arrival made the whole difference: the same prompt shown on landing had tested flat the previous year.

One neighborhood, two searches

A place name matches text. A drawn area matches places.

The same search for Larkfield with the same three filters, run against the old keyword index and against the rebuilt geo_shape index. Switch tabs, or use the arrow keys once one is focused.

The old index matched text. Any description that named Larkfield came back, wherever the house stood, and Larkfield homes whose descriptions never used the name didn't come back at all.

Search: “Larkfield”

8 results for “Larkfield”

4 outside Larkfield· 2 Larkfield homes missed

3+ beds · Up to $650K · Private yard

  1. 1208 Tanner StLarkfield…on the quiet end of Tanner St in Larkfield… · $612.5K
  2. 288 Weir RdHarrow Park · 1 district away…priced below comparable homes in Larkfield… · $605K
  3. 314 Wren Hollow LnLarkfield…a short walk to Larkfield Common and the library… · $589K
  4. 417 Crestview Hill RdFenwick Hill · 2 districts away…sunset views back across the river to Larkfield… · $549K
  5. 59 Millrace CtLarkfield…cul-de-sac in the heart of Larkfield… · $639K
  6. 63 Kiln YardHarrow Park · 1 district away…ten minutes from the Larkfield farmers market… · $579K
  7. 756 Ashgrove TerraceLarkfield…original 1950s Larkfield brick, restored… · $624.9K
  8. 8402 Quarry LnFenwick Hill · 2 districts away…built by the same firm as Larkfield's Millrace homes… · $632K
Architecture

From an agent’s upload to a buyer’s first paint

Photos and search share one path. Everything expensive happens once, on the way in, so the page a buyer opens and the map they pan only ever read work that is already done.

  1. 01 · Source
    Agent uploadPhotos go straight to S3 through pre-signed URLs, so a forty-photo shoot never passes through the app server.
  2. 02 · Ingestion
    Derivation queueWork is queued when a photo lands, not when a page asks for it, so no visitor pays for a transcode.
  3. 03 · Engine
    Derive and indexAVIF and WebP at five widths per photo; each listing indexed with a geo_shape so a drawn area is a real query.
  4. 04 · State
    S3 + ElasticsearchFull-resolution originals stay with the agent; only the derived copies are ever served.
  5. 05 · Delivery
    Edge CDN + searchOne debounced, cancellable query per pan returns the list and the pins together, in under 100 ms.

What goes public, and when

Listing integrity & media handling

Completeness gate by property type

Each property type carries its own required fields, and a listing can't publish until every one of them is filled. Drafts autosave while the agent works, so nothing half-filled goes live the way it could on the old system.

Audited status changes

Every change to a listing's status is recorded with the person who made it and when, so any listing's path from draft to live can be read back later.

Originals never public

Agents upload straight to S3 through pre-signed URLs, so the photographs never pass through the application server. Full-resolution originals stay available to the agent; visitors are only ever sent the derived AVIF and WebP copies.

Building a property search portal or self-serve tools for your agents? Scope your build in 3 minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.