Skip to main content

    Real Estate · project showcase · site architecture

    Project ShowcaseReal client work that shipped. No performance figures are published, because none have been verified and approved for release.

    One agent record, every surface: a roster pattern that stops a team site drifting out of date

    A team site repeats agent details on as many pages as it has, so a departure has to be corrected everywhere and is corrected in some. This is the build pattern that makes the roster the record and every page a view of it.

    At a glance

    The engagement in brief

    Services

    • Web Development
    • Technical SEO
    • Booking Intake
    • Design

    Stack

    • Single business record
    • Structured data
    • Per-agent booking routes
    • Asset references

    The situation

    What we walked into

    Agent details live on the roster page, on every listing page that agent is attached to, in the footer of the office page, in the structured data, and inside three PDFs nobody remembers making. When somebody joins or leaves, that change has to be made in each of those places by hand. It gets made in the obvious ones. Within a year the roster page, the listing pages and the schema disagree about who works there, and the disagreement is visible to search engines before it is visible to anyone in the office.

    An agent who left in March is still the named contact on four listing pages in September, because those four pages were never on anybody's list.

    What we found

    The diagnosis

    1. 01

      The roster is the record and the pages are views of it

      The pattern is not a content decision, it is a data one. A correction made once has to propagate everywhere, which means the pages cannot hold their own copies of anything. Once that holds, a departure is a single field change instead of a scavenger hunt.

    2. 02

      Booking belongs to the agent, not to the office

      A buyer who arrives having been given a specific name and finds only a general contact form has been handed back to the office. Per-agent booking routes preserve the connection the buyer arrived with, which is the whole reason they came to that site rather than a portal.

    3. 03

      Licence and disclosure fields go stale exactly like biographies do

      Licence numbers, brokerage affiliation and required disclosures are treated as chrome and edited last, but they are content with the same drift problem and a higher cost when wrong. They live in the record with everything else.

    4. 04

      Storing the headshot path in the record is a trap

      A file path breaks the moment somebody renames or reorganises the asset folder, and it breaks silently across every page at once. The record holds a reference to an asset, and the asset system resolves it.

    The number behind it

    What this is built around

    **43% of buyers found their agent by referral** and **88% purchased through an agent** (NAR *2025 Profile of Home Buyers and Sellers*) — the roster and its bios are the referral surface, so drift on a team site is drift on the primary channel.

    What we built

    The system

    One agent record holds name, licence number, brokerage affiliation, service areas, languages, specialisms, biography, an asset reference for the headshot, and a booking route. The roster page, the contact block on every listing page, the office page footer and the structured data all render from that record rather than repeating it. Adding an agent is one record. A departure is one field, and every surface follows in the same deploy. Booking routes are per agent rather than per office, so a referred buyer reaches the person they were referred to. Assets are referenced rather than pathed, so reorganising the image library does not silently empty the roster page.

    One agent record, every surface: a roster pattern that stops a team site drifting out of date — stackA stack of 8 connected layers, from "Agent record, single source" through to "Departure equals one field change", each feeding the one below it.Agent record, single sourceRoster pageListing page contact blockOffice page and footerStructured dataPer-agent booking routeAsset reference, not a file pathDeparture equals one field change

    The sequence

    How it was delivered

    1. Week 1

      Field inventory

      Every place an agent detail currently appears, catalogued including structured data

      Owner: OmniFlow

    2. Week 1

      Record schema

      One record definition covering identity, licence, areas, assets and booking

      Owner: OmniFlow

    3. Weeks 2–4

      Views rebuilt

      Roster, listing contact blocks, footer and schema rendering from the record

      Owner: OmniFlow

    4. Weeks 3–5

      Booking routes

      Per-agent routes replacing the office contact form, tested against a referral path

      Owner: OmniFlow

    Outcome

    What shipped

    This entry makes no performance claim. It shows a site architecture pattern and the specific failure it is built against: agent details repeated across surfaces that drift apart, and a departure that has to be remembered in six places rather than made in one. The only thing it counts is the number of places a single change now has to be made, which is a property of the build rather than an outcome of it, and no claim is made here about what the pattern does to traffic, enquiries or anything else downstream of it.

    Reporting

    What you would actually see

    These are the surfaces this engagement is run and measured from, shown with representative figures built around the benchmarks cited on this page. Every account we run reports into views like these, and you keep ownership of all of them.

    These are demo dashboards. They show the reporting surfaces this engagement is run and measured from, with representative figures generated around the published benchmarks cited on this page — not a client account and not a client result. Live reporting for your own account replaces every number here.

    Google Analytics 4

    Real Estate · all web data

    Demo
    Acquisition overview
    Last 12 months vs. preceding period

    Sessions

    1,529

    +59.4%

    Key events

    40

    +74.2%

    Session key event rate

    2.6%

    +0.7%

    Engagement rate

    58.2%

    +6.5%

    Sessions by month

    AprJunAugOctDecFeb

    Dashed line marks the month the engagement started.

    Session default channel groupSessionsKey eventsRate
    Organic Search587132.2%
    Paid Search412143.4%
    Direct25152.0%
    Referral15753.2%
    Organic Social12154.1%

    CRM pipeline

    Real Estate · inbound and outbound

    Demo
    Pipeline by source
    Last 12 months

    Leads created

    96

    +49.4%

    Qualified

    45

    +56.8%

    Meetings booked

    21

    +59.2%

    Answered on first attempt

    73.9%

    +9.5%

    Leads created by month

    AprJunAugOctDecFeb

    Dashed line marks the month the engagement started.

    First-touch sourceLeadsQualifiedMeetings
    Google Ads — high intent30146
    Organic search26125
    Business Profile — call1884
    LinkedIn outbound1363
    Referral942

    Honestly

    What we would do differently

    The first version stored the headshot as a file path inside the agent record. Renaming the asset folder emptied every headshot on the site at once, silently, and nobody noticed until a listing page was shared. Moving to an asset reference resolved by the asset system removed the entire class of failure, and it should have been the design from the start rather than a fix.

    Next

    Start the same conversation

    Start the same conversation

    Tell us what you are working on and we will say plainly whether this is the right shape of engagement for it.

    We use your details only to respond to this request. No lists, no resale.