Layouts · Listings, rooms and tours · The full pattern

Listings, rooms and tours: the full pattern

Plan it first: the blueprint It lists the pages you need and what to write on each one.

I have things people browse and compare, and each one needs its own page.

Sites like this: estate agent, property developer, car dealer or hire, hotel or guesthouse, tour operator, showroom with a catalog.

What a visitor comes to find out

“What’s available, and the way in.”

Untested Worked out from research and real briefs. No site has been built from it yet, so treat it as reasoning to check, not a tested template.

Illustration · one way it could look
The pattern, on a phone
Left: an illustration of one way the homepage could look, with example wording. It isn’t a finished site, and the look is chosen in Design. Right: the same homepage as the pattern draws it, on a phone.

Planning a site? Read from the top. Designing or building one? Jump to the structure or the file.

Explore the website

Four kinds of page. Home and One page per item are on every site like this; the other two depend on the business. Pick a situation to see which pages stay.

Show the plan for

On every page, when the business needs itLanguage switch

On every siteDepends on the businessLeft out for this businessOne page for each item

Home

“What’s available, and the way in.”

Status
Always
Address
/
Six sections, top to bottom
What this is · The items · Narrow it down · Main action · Proof · What clients say

How visitors move through it

  • HomeAll itemsOne page per item
  • Every other page is one click from the homepage.
  • The main action (get in touch until the business says otherwise) sits on three of the four pages.

Why it works

A visitor compares items on the facts that matter to them, then needs one clear action per item: arrange a viewing, book the dates, buy.

So the homepage leads with The items, findable by the facts people decide on. The business comes second.

What each part of the homepage is for

  1. What this is always

    What kind of items, where.

  2. The items always

    A selection, or the whole set if small.

  3. Narrow it down depends

    Only a large inventory earns filters.

  4. Main action depends

    The site-level second path (book a valuation), when there is one.

  5. Proof depends

    Licenses, memberships, review counts.

  6. What clients say optional

    Attributed and dated.

On every page

  • Language switch required when it applies

    Several languages: a way to switch is required on every page. Where and how it shows is Design’s.

Which button leads

The main action changes with how people buy. The first rule that matches the business wins.

  1. What do people do with one item? Book dates

    Book a time or dates, then message (WhatsApp, Viber, SMS)

    Rooms, tours and cars are booked by date, often with a deposit. observed

  2. What do people do with one item? Buy it

    Buy online, then message (WhatsApp, Viber, SMS)

    Products hand off to a basket (online-shop territory). untested

  3. Otherwise

    Send an enquiry, then phone

    Property and vehicles: a viewing or test drive starts with an enquiry about one item. observed

Check before you build

Thin evidence: The bookings half rests on one market study.

  • Whether bookings deserve their own pattern (every bookable brief is Albanian). unknown
  • Whether a 40-room hotel wants an index at all. unknown
  • Where the handoff to a booking engine sits. unknown
  • Investment-yield disclosure for holiday lets. unknown
  • Photos of the real item, renders labeled as renders, plans with dimensions as text, and the facts a buyer is entitled to. our reasoning

Make it yours

A pattern is a starting point. Some of it holds for every business like this, some of it bends, and some of it only you can answer.

Holds for every site

  • Home
  • One page per item
  • On the homepage: What this is, The items

Depends on the business

  • All items If: How many items, listings or projects will the site show? More than 12
  • Enquire or book If: What do people do with one item? Enquire or arrange a viewing or Book dates

One pattern, two situations

The same homepage, drawn by the pattern from each situation’s answers. Sections the answers leave out are gone.

A few items No index, no filters: the rooms sit on home.
Main button
Book
Pages
Home, One page per item, Enquire or book
Left out
All items
Large inventory An index with filters on the facts people decide by.
Main button
Get in touch
Pages
Home, All items, One page per item, Enquire or book

What you’ll need to supply

For the homepage alone. Nobody can write these for you; the file marks each one as still to supply.

What this is
What you do, in plain words
The items
Item: title, key fact, image, price or status

Questions only you can answer

  1. How many items, listings or projects will the site show?
  2. What do people do with one item?
  3. Does the site serve one kind of visitor or two with different goals?
  4. What should a ready visitor do?
  5. What proof do you actually have?
  6. How many languages?

What changes with the answers

How many items, listings or projects will the site show? Up to about 12No index page and no filters: items sit on home.
What do people do with one item? Book datesItem pages gain dates and the price for them.
Does the site serve one kind of visitor or two with different goals? Two, wanting different thingsHome gets a second path (sellers: book a valuation). The library can’t give each audience its own journey yet.
Answer for your own business

The plan, every drawing and the file on this page redraw as you answer.

Your brief

Answer what you know and the drawings redraw. Anything you skip stays open, and goes into your site plan as a question, never a guess.

Or start from a real brief

What proof do you actually have?

Inspect the structure

Every page as a wireframe: the sections in order, what each one is for, and what moves on a phone. Select a violet label for its job, the content it needs and every page it appears on.

Home answers “What’s available, and the way in.”

On a phone · One column, the deciding fact (price, dates) under each title.

On a phone · Folds into one “Filter (3)” control; the list stays first.

Example wording.

Use it in Design and Build

Everything above, as one file you can hand on. It describes the site’s structure. It doesn’t design or build anything.

In the file
4 pages, 19 sections in order, the main action, and what each section needs from you
Still to decide
10 open questions. Anything you haven’t answered travels as a question, never a guess.
In Design
The order of pages and sections is the hierarchy to design. The look, type and images are yours to choose.
With a coding agent
Give it the file with your design. It lists every page, its address and its sections in order, and marks the content you still have to write.

JSON is for coding agents and other tools. Markdown reads like a document, for people.

What it isn’t: a finished site, a template to publish, or proof the structure works for your business. Status: untested.

For designers and developers: what each stage reads

Design reads

  • pages[].name, job and order (the hierarchy)
  • pages[].modules[] in order, with jobs and role
  • status “depends” (unresolved) vs optional
  • page_frame with required/recommended strength
  • pages[].phone_first and phone_notes (the phone order)
  • primary_action label and intent

Read pages[] in order and modules[] in order: that is the hierarchy. jobs[] say what each module must achieve; status "depends" means unresolved, not optional. Look, type, imagery and Elements are Design’s; nothing here prescribes them.

Build reads

  • pages[].route and one_per (routes and repeating pages)
  • pages[].modules[] in order
  • modules[].slots with need, many and any profile obligation
  • primary_action.intent and second_routes (implemented per platform)
  • page_frame (required/recommended)
  • left_out (must stay out)
  • entities, when the project names them

Make one route per page (one per entity where one_per is set), modules in the given order, every slot with need "required" filled before ship. Implement each action so it achieves its intent on this project’s platform. Do not read why as an instruction.

QA checks: Check that each included module does its jobs, required slots are filled with real content, left_out items stayed out, and the primary action leads where its label says.

Your site plan, as a file

Project IA file · 0.2

Listings, rooms and tours

No project named · 2026-10-06 · pattern maturity: reasoned, not built

From the Strategy brief

  • What do people do with one item?Enquire or arrange a viewing
  • Does the site serve one kind of visitor or two with different goals?Two, wanting different things
  • What should a ready visitor do?Book a time
  • How many items, listings or projects will the site show?unanswered
  • What proof do you actually have?unanswered
  • How many languages?unanswered

Primary action

Send an enquiry

Ask a question and get a reply

Build decides (likely submit)

Second route: Phone

On every page

  • Language switch required depends

Pages, in order · modules in reading order

  1. Home

    /

    1. What this is orient · explain1 required slot
    2. The items explore · demonstrate1 required slot
    3. Narrow it down explore depends1 required slot
    4. Main action act1 required slot
    5. Proof prove · reassure depends0 required slots
    6. What clients say prove optional1 required slot
  2. All items depends

    /listings

    1. Narrow it down explore1 required slot
    2. The items explore · demonstrate1 required slot
  3. One page per item × each item

    /listings/{item}

    1. Item summary orient · explain2 required slots
    2. Pictures of the real thing demonstrate · prove1 required slot
    3. The facts explain · reassure1 required slot
    4. How to find us orient · act optional1 required slot
    5. What happens next explain · reassure optional1 required slot
    6. Main action act1 required slot
  4. Enquire or book

    /enquire

    1. The form act · recover3 required slots
    2. What happens next explain · reassure1 required slot
    3. Main action act optional1 required slot
    4. It’s sent reassure · recover2 required slots

Left out, and why

  • One page per item: Dates and booking left out because the answer to “What do people do with one item?” is “Enquire or arrange a viewing”

Open questions

  • How many items, listings or projects will the site show?
  • What proof do you actually have?
  • How many languages?
  • Whether bookings deserve their own pattern (every bookable brief is Albanian).
  • Whether a 40-room hotel wants an index at all.
  • Where the handoff to a booking engine sits.
  • Investment-yield disclosure for holiday lets.

Design reads Read pages[] in order and modules[] in order: that is the hierarchy. jobs[] say what each module must achieve; status "depends" means unresolved, not optional. Look, type, imagery and Elements are Design’s; nothing here prescribes them.

Build reads Make one route per page (one per entity where one_per is set), modules in the given order, every slot with need "required" filled before ship. Implement each action so it achieves its intent on this project’s platform. Do not read why as an instruction.

QA checks Check that each included module does its jobs, required slots are filled with real content, left_out items stayed out, and the primary action leads where its label says.

Where it goes next
The raw file
{
  "format": "aesthetary.ia-structure",
  "version": "0.2",
  "made": {
    "by": "Aesthetary IA Library",
    "on": "2026-10-06",
    "pattern": "listings",
    "pattern_maturity": "reasoned, not built"
  },
  "project": {
    "name": null,
    "note": "Facts below are the brief. Anything unanswered is listed, never assumed."
  },
  "copy_guidance": {
    "source": "Aesthetary Website Blueprints: the same copywriting guidance the blueprint pages show",
    "how_to_use": {
      "formula": "An instruction, not text to publish. Write original copy for this project that does what the formula describes, using the project’s real facts. Never publish the formula, or anything in square brackets.",
      "why_it_works": "The reasoning behind the section, for whoever writes the copy. Use it to judge a draft; don’t put it on the page.",
      "illustrative_example": "Written for a made-up business to show the formula applied. Never reuse its wording, names, places, numbers or quotes.",
      "project_content": "The project’s own facts are the brief’s answers, any entities and project decisions, and the slots marked “to supply”. Fill slots only with real content from the business. If it isn’t available, leave the slot visibly empty and list it; never invent reviews, ratings, registrations, prices or results."
    }
  },
  "brief": {
    "answered": {
      "item_action": {
        "question": "What do people do with one item?",
        "answer": "Enquire or arrange a viewing",
        "value": "enquire"
      },
      "audiences": {
        "question": "Does the site serve one kind of visitor or two with different goals?",
        "answer": "Two, wanting different things",
        "value": "two"
      },
      "main_action": {
        "question": "What should a ready visitor do?",
        "answer": "Book a time",
        "value": "book"
      }
    },
    "unanswered": [
      {
        "fact": "items",
        "question": "How many items, listings or projects will the site show?"
      },
      {
        "fact": "proof",
        "question": "What proof do you actually have?"
      },
      {
        "fact": "languages",
        "question": "How many languages?"
      }
    ]
  },
  "site_pattern": {
    "id": "listings",
    "name": "Listings, rooms and tours",
    "problem": "A visitor compares items on the facts that matter to them, then needs one clear action per item: arrange a viewing, book the dates, buy.",
    "leads_with": "The items, findable by the facts people decide on. The business comes second."
  },
  "primary_action": {
    "role": "enquire",
    "label": "Send an enquiry",
    "intent": "Ask a question and get a reply",
    "outcome": "inquiry",
    "implementation": "Build decides (likely submit)",
    "decided": true,
    "second_routes": [
      {
        "role": "call",
        "label": "Phone",
        "intent": "Reach the business by phone, now"
      }
    ],
    "why": "Property and vehicles: a viewing or test drive starts with an enquiry about one item.",
    "stated_preference": {
      "role": "book",
      "label": "Book a time or dates",
      "answer": "Book a time"
    },
    "follows_preference": false,
    "why_different": "Property and vehicles: a viewing or test drive starts with an enquiry about one item."
  },
  "page_frame": [
    {
      "module": "language-switch",
      "name": "Language switch",
      "strength": "required",
      "status": "depends",
      "depends_on": [
        "languages"
      ],
      "why": "Several languages: a way to switch is required on every page. Where and how it shows is Design’s.",
      "presentation": "Design decides; Build implements.",
      "copy": {
        "formula": "[Each language, named in itself]",
        "why_it_works": "Lets people switch to their language, named in that language.",
        "illustrative_example": "“English · Shqip”"
      }
    }
  ],
  "pages": [
    {
      "page": "home",
      "name": "Home",
      "route": "/",
      "phone_first": [
        "collection"
      ],
      "phone_notes": [
        {
          "module": "filters",
          "note": "Folds into one “Filter (3)” control; the list stays first."
        },
        {
          "module": "collection",
          "note": "One column, the deciding fact (price, dates) under each title."
        }
      ],
      "status": "include",
      "job": "What’s available, and the way in.",
      "modules": [
        {
          "module": "proposition",
          "name": "What this is",
          "jobs": [
            "orient",
            "explain"
          ],
          "status": "include",
          "role": "Positioning",
          "latitude": null,
          "slots": [
            {
              "slot": "what",
              "name": "What you do, in plain words",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "who",
              "name": "Who it is for",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "where",
              "name": "Where (town or area)",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "What kind of items, where.",
          "copy": {
            "formula": "[What you have + where], then [what every listing includes + your second path]",
            "why_it_works": "Visitors come to browse. Saying what you have and where, then what they’ll find on every listing, gets them into the list fast, and the second path (selling, a valuation) catches the other audience.",
            "illustrative_example": "“Homes for sale across the villages we cover.” Then: “Proper photos and floor plans for every home. Selling? Book a valuation.”"
          }
        },
        {
          "module": "collection",
          "name": "The items",
          "jobs": [
            "explore",
            "demonstrate"
          ],
          "status": "include",
          "role": "Browse",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Item: title, key fact, image, price or status",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "count",
              "name": "How many in total",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "A selection, or the whole set if small.",
          "copy": {
            "formula": "[Item + deciding fact + price], on every tile",
            "why_it_works": "People rule items out before they rule them in. The deciding facts on the tile let them skip what doesn’t fit without opening every page.",
            "illustrative_example": "“Three-bedroom cottage · freehold · £—”, “Two-bedroom terrace · leasehold · £—”."
          }
        },
        {
          "module": "filters",
          "name": "Narrow it down",
          "jobs": [
            "explore"
          ],
          "status": "depends",
          "depends_on": [
            "items"
          ],
          "role": "Browse",
          "latitude": null,
          "slots": [
            {
              "slot": "facets",
              "name": "Facets people actually decide by",
              "need": "required",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "Only a large inventory earns filters.",
          "copy": {
            "formula": "[What people decide by], as filters",
            "why_it_works": "Helps people with a long list get to the handful that fit.",
            "illustrative_example": "“Price · Bedrooms · Village · Garden”"
          }
        },
        {
          "module": "action",
          "name": "Main action",
          "jobs": [
            "act"
          ],
          "status": "include",
          "role": "Primary action",
          "latitude": null,
          "slots": [
            {
              "slot": "primary",
              "name": "Primary action (a role, not a label)",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "secondary",
              "name": "Second route",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "reassurance",
              "name": "Terms at the action",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "The site-level second path (book a valuation), when there is one.",
          "copy": {
            "formula": "[Arrange a viewing or book + how fast you reply], with [in person or by video]",
            "why_it_works": "Once someone has found an item, the only question is how to see it or get it. One clear action per item, with your reply time, keeps them from enquiring elsewhere.",
            "illustrative_example": "“Arrange a viewing”, with “In person or by video · we reply within —” beside it."
          }
        },
        {
          "module": "proof-strip",
          "name": "Proof",
          "jobs": [
            "prove",
            "reassure"
          ],
          "status": "depends",
          "depends_on": [
            "proof"
          ],
          "role": "Trust & proof",
          "latitude": null,
          "slots": [
            {
              "slot": "registers",
              "name": "Registrations",
              "need": "conditional",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "insurance",
              "name": "Insurance",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "reviews-summary",
              "name": "Review source, count and date",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "clients",
              "name": "Named clients (with permission)",
              "need": "conditional",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "Licences, memberships, review counts.",
          "copy": {
            "formula": "[Verifiable evidence that reduces hesitation], each with a way to check it",
            "why_it_works": "Gives people something they can check, so they don’t have to take your word for it.",
            "illustrative_example": "“Member of The Property Ombudsman · no. — · Check ↗”"
          }
        },
        {
          "module": "reviews",
          "name": "What clients say",
          "jobs": [
            "prove"
          ],
          "status": "optional",
          "role": "Supporting evidence",
          "latitude": null,
          "slots": [
            {
              "slot": "quotes",
              "name": "Quote, name or initials, context, date, where it was left",
              "need": "required",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "Attributed and dated.",
          "copy": {
            "formula": "[A real customer’s words + the specific result], with name or initials, place, date and where it was left",
            "why_it_works": "Lets someone like the visitor say it for you. A quote about the job they need does more than general praise.",
            "illustrative_example": "An illustration of the shape, for a made-up business: “Sold in six weeks, and they told us honestly why the first offer was low.” The Clarks, sellers, May, on Google. Use your real reviews."
          }
        }
      ]
    },
    {
      "page": "index",
      "name": "All items",
      "route": "/listings",
      "status": "depends",
      "depends_on": [
        "items"
      ],
      "job": "Find the few worth opening.",
      "modules": [
        {
          "module": "filters",
          "name": "Narrow it down",
          "jobs": [
            "explore"
          ],
          "status": "include",
          "role": "Browse",
          "latitude": null,
          "slots": [
            {
              "slot": "facets",
              "name": "Facets people actually decide by",
              "need": "required",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "On the facts people decide by, with a list alternative to any map.",
          "copy": {
            "formula": "[What people decide by], as filters",
            "why_it_works": "Helps people with a long list get to the handful that fit.",
            "illustrative_example": "“Price · Bedrooms · Village · Garden”"
          }
        },
        {
          "module": "collection",
          "name": "The items",
          "jobs": [
            "explore",
            "demonstrate"
          ],
          "status": "include",
          "role": "Browse",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Item: title, key fact, image, price or status",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "count",
              "name": "How many in total",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "Each item with the one or two facts that decide whether to open it.",
          "copy": {
            "formula": "[Item + deciding fact + price], on every tile",
            "why_it_works": "People rule items out before they rule them in. The deciding facts on the tile let them skip what doesn’t fit without opening every page.",
            "illustrative_example": "“Three-bedroom cottage · freehold · £—”, “Two-bedroom terrace · leasehold · £—”."
          }
        }
      ]
    },
    {
      "page": "item",
      "name": "One page per item",
      "route": "/listings/{item}",
      "page_pattern": "item",
      "one_per": "item",
      "status": "include",
      "job": "Is this the one, and how do I get it?",
      "modules": [
        {
          "module": "item-header",
          "name": "Item summary",
          "jobs": [
            "orient",
            "explain"
          ],
          "status": "include",
          "role": "Positioning",
          "latitude": null,
          "slots": [
            {
              "slot": "title",
              "name": "Title",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "summary",
              "name": "One-line summary",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "status",
              "name": "Price, status or date",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "Title, price or status, where it is.",
          "copy": {
            "formula": "[Item name + deciding fact] + [price or status + where it is]",
            "why_it_works": "Tells people straight away whether this item is worth reading on: what it is, the price and where it is.",
            "illustrative_example": "“Three-bedroom cottage, Little Ashby: £—, freehold, garden backing onto fields.”"
          }
        },
        {
          "module": "media",
          "name": "Pictures of the real thing",
          "jobs": [
            "demonstrate",
            "prove"
          ],
          "status": "include",
          "role": "Supporting evidence",
          "latitude": null,
          "slots": [
            {
              "slot": "images",
              "name": "Image with alt text and caption",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "credit",
              "name": "Photographer or source",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "Photos of the actual item; renders labelled as renders.",
          "copy": {
            "formula": "[A photo of the real thing] + [what it shows + where or when]",
            "why_it_works": "Shows the real thing, so people can judge it for themselves.",
            "illustrative_example": "“The kitchen, photographed in April. Floor plan below.”"
          }
        },
        {
          "module": "item-facts",
          "name": "The facts",
          "jobs": [
            "explain",
            "reassure"
          ],
          "status": "include",
          "role": "Detail",
          "latitude": null,
          "slots": [
            {
              "slot": "facts",
              "name": "Label and value",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "documents",
              "name": "Documents (plans, spec sheets)",
              "need": "optional",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "Size, tenure, specification, documents such as a floor plan.",
          "copy": {
            "formula": "[Label + value] for each fact people compare",
            "why_it_works": "Gives people the details they need to compare and decide, as text they can scan.",
            "illustrative_example": "“Bedrooms: 3 · Tenure: freehold · Council tax: band — · Heating: oil · EPC: —”"
          }
        },
        {
          "module": "location",
          "name": "How to find us",
          "jobs": [
            "orient",
            "act"
          ],
          "status": "optional",
          "role": "Local information",
          "latitude": null,
          "slots": [
            {
              "slot": "address",
              "name": "Address, as text",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "landmark",
              "name": "Landmark line",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "getting-there",
              "name": "Parking, transport, access",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "map",
              "name": "Map link",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "Where it is, when location decides.",
          "copy": {
            "formula": "[Address as text] + [a landmark people recognize] + [parking, transport, access]",
            "why_it_works": "Gets people to your door: the address as text, how to get there and a link that opens in their map app.",
            "illustrative_example": "“Church Lane, Little Ashby: five minutes’ walk to the primary school.”"
          }
        },
        {
          "module": "steps",
          "name": "What happens next",
          "jobs": [
            "explain",
            "reassure"
          ],
          "status": "optional",
          "role": "What happens next",
          "latitude": null,
          "slots": [
            {
              "slot": "step",
              "name": "Step",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "when",
              "name": "Time per step",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "cost",
              "name": "Cost per step",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "Buying off-plan, viewing, collecting: when the process is unfamiliar.",
          "copy": {
            "formula": "[What they do first] → [what you do next + how fast] → [the work] → [how it ends + what it costs]",
            "why_it_works": "Takes the unknown out of getting in touch: what happens after the first click, who does it, how long it takes and what it costs.",
            "illustrative_example": "“1 You ask for a viewing. 2 We confirm a time. 3 You view in person or by video. 4 You make an offer or ask more.”"
          }
        },
        {
          "module": "action",
          "name": "Main action",
          "jobs": [
            "act"
          ],
          "status": "include",
          "role": "Primary action",
          "latitude": null,
          "slots": [
            {
              "slot": "primary",
              "name": "Primary action (a role, not a label)",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "secondary",
              "name": "Second route",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "reassurance",
              "name": "Terms at the action",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "Enquire, book or buy this item.",
          "copy": {
            "formula": "[Arrange a viewing or book + how fast you reply], with [in person or by video]",
            "why_it_works": "Once someone has found an item, the only question is how to see it or get it. One clear action per item, with your reply time, keeps them from enquiring elsewhere.",
            "illustrative_example": "“Arrange a viewing”, with “In person or by video · we reply within —” beside it."
          }
        }
      ]
    },
    {
      "page": "enquire",
      "name": "Enquire or book",
      "route": "/enquire",
      "page_pattern": "enquiry",
      "status": "include",
      "job": "Viewing request or booking, with what happens next.",
      "modules": [
        {
          "module": "form",
          "name": "The form",
          "jobs": [
            "act",
            "recover"
          ],
          "status": "include",
          "role": "Conversion point",
          "latitude": null,
          "slots": [
            {
              "slot": "fields",
              "name": "Fields",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "attach",
              "name": "Attachments (photos, documents)",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "consent",
              "name": "What happens to their details",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "error",
              "name": "Error summary and messages",
              "need": "required",
              "content": "to supply"
            }
          ],
          "why": "Only what is needed to respond; attachments where photos help.",
          "copy": {
            "formula": "[What they’re asking for] + [only the fields you need] + [what happens to their details] + [send + what happens next]",
            "why_it_works": "Makes asking easy: only the fields you need, and a clear promise of what happens next.",
            "illustrative_example": "“Arrange a viewing” with name, phone and preferred times. Button: “Request a viewing, we reply within —”."
          }
        },
        {
          "module": "steps",
          "name": "What happens next",
          "jobs": [
            "explain",
            "reassure"
          ],
          "status": "include",
          "role": "What happens next",
          "latitude": null,
          "slots": [
            {
              "slot": "step",
              "name": "Step",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "when",
              "name": "Time per step",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "cost",
              "name": "Cost per step",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "What happens after sending, and when.",
          "copy": {
            "formula": "[What they do first] → [what you do next + how fast] → [the work] → [how it ends + what it costs]",
            "why_it_works": "Takes the unknown out of getting in touch: what happens after the first click, who does it, how long it takes and what it costs.",
            "illustrative_example": "“1 You ask for a viewing. 2 We confirm a time. 3 You view in person or by video. 4 You make an offer or ask more.”"
          }
        },
        {
          "module": "action",
          "name": "Main action",
          "jobs": [
            "act"
          ],
          "status": "optional",
          "role": "Primary action",
          "latitude": null,
          "slots": [
            {
              "slot": "primary",
              "name": "Primary action (a role, not a label)",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "secondary",
              "name": "Second route",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "reassurance",
              "name": "Terms at the action",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "The second route (call, message) for people who won’t fill a form.",
          "copy": {
            "formula": "[Arrange a viewing or book + how fast you reply], with [in person or by video]",
            "why_it_works": "Once someone has found an item, the only question is how to see it or get it. One clear action per item, with your reply time, keeps them from enquiring elsewhere.",
            "illustrative_example": "“Arrange a viewing”, with “In person or by video · we reply within —” beside it."
          }
        },
        {
          "module": "confirmation",
          "name": "It’s sent",
          "jobs": [
            "reassure",
            "recover"
          ],
          "status": "include",
          "role": "Conversion point",
          "latitude": null,
          "slots": [
            {
              "slot": "reference",
              "name": "Reference",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "next",
              "name": "What happens next, and when",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "contact",
              "name": "Contact meanwhile",
              "need": "required",
              "content": "to supply"
            }
          ],
          "why": "After sending: a reference, the next step and when, a contact.",
          "copy": {
            "formula": "[It’s sent] + [what happens next, and when] + [how to reach you meanwhile]",
            "why_it_works": "Confirms it worked and says what to expect, so nobody sends it twice or rings to check.",
            "illustrative_example": "“Requested. We’ll call you to confirm a time. Questions meanwhile? Ring the office on —.”"
          }
        }
      ]
    }
  ],
  "left_out": [
    {
      "what": "One page per item: Dates and booking",
      "why": "left out because item_action is “Enquire or arrange a viewing”"
    }
  ],
  "constraint_profiles": [],
  "field_rules": "Not applied. Rules for this field (what it must show) will add requirements to existing sections once they are approved; they never change the structure.",
  "open_questions": [
    "How many items, listings or projects will the site show?",
    "What proof do you actually have?",
    "How many languages?",
    "Whether bookings deserve their own pattern (every bookable brief is Albanian).",
    "Whether a 40-room hotel wants an index at all.",
    "Where the handoff to a booking engine sits.",
    "Investment-yield disclosure for holiday lets."
  ],
  "receives": {
    "design": [
      "pages[].name, job and order (the hierarchy)",
      "pages[].modules[] in order, with jobs and role",
      "status “depends” (unresolved) vs optional",
      "page_frame with required/recommended strength",
      "pages[].phone_first and phone_notes (the phone order)",
      "primary_action label and intent"
    ],
    "build": [
      "pages[].route and one_per (routes and repeating pages)",
      "pages[].modules[] in order",
      "modules[].slots with need, many and any profile obligation",
      "primary_action.intent and second_routes (implemented per platform)",
      "page_frame (required/recommended)",
      "left_out (must stay out)",
      "entities, when the project names them"
    ]
  },
  "handoff": {
    "design": "Read pages[] in order and modules[] in order: that is the hierarchy. jobs[] say what each module must achieve; status \"depends\" means unresolved, not optional. Look, type, imagery and Elements are Design’s; nothing here prescribes them.",
    "build": "Make one route per page (one per entity where one_per is set), modules in the given order, every slot with need \"required\" filled before ship. Implement each action so it achieves its intent on this project’s platform. Do not read why as an instruction.",
    "qa": "Check that each included module does its jobs, required slots are filled with real content, left_out items stayed out, and the primary action leads where its label says.",
    "copy": "Write each section’s copy from copy.formula and the project’s real facts; check it against copy.why_it_works. Never reproduce copy.illustrative_example or publish text in square brackets. The guidance is a set of recommendations to test with real visitors, not a promise of results."
  }
}
The research behind it7 statements · 1 sourced · 5 untested or unknown · thin evidence

Use it when

  • Distinct items with their own facts and their own action. observedour brief studyour brief study
  • our decisionAesthetary

Not when

Boundary cases

Which sections go on which pages

● required · ◐ conditional on the brief · ○ common, not required. Select a section to find it in the drawings.

Job on the page · sectionHomeAll itemsOne page per itemEnquire or book
PositioningRequired
Required
BrowseRequiredRequired
ConditionalRequired
Primary actionConditionalRequiredCommon
Trust & proofConditional
Supporting evidenceCommon
Required
DetailRequired
Conversion pointConditional
Required
Required
Local informationCommon
What happens nextCommonRequired

What the research says

  • 18 of the briefs we studied needed listings, rooms or tours; 12 of those came from one market study in Albania. observedAesthetaryour brief study
  • UK property: Trading Standards guidance puts price, tenure and council tax (Part A) on the first page of each listing. Parts B and C are set out in the Nov 2023 guidance, whose placement rules we haven’t been able to open yet. sourcedTrading Standards 2022

Rules for your field

What a business in this field must show (a registration, prices with tax) depends on its own rules, not on this pattern. Those rules are still being worked out, so none are applied here as requirements.

Common structural mistakes

  • A map-only search with no list. convention
  • “Book direct for the best rate” when it isn’t true. our decisionfrom our software-site guidance, untested here
  • Filters and search on a guesthouse with five rooms. untested