Layouts · Advisers, practices and clinics · The full pattern

Advisers, practices and clinics: the full pattern

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

People come to me for advice or treatment, and they need to know which service, which person and what it costs.

Sites like this: accountant, solicitor, insurance broker, surveyor, dentist, vet, private GP, nursery, translation agency.

What a visitor comes to find out

“Is my situation one you handle, and how do I start?”

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

Eight kinds of page. Home is on every site like this; the other seven depend on the business. Pick a situation to see which pages stay.

Show the plan for

On every page, when the business needs itAlways-there call or bookLanguage switch

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

Home

“Is my situation one you handle, and how do I start?”

Status
Always
Address
/
Nine sections, top to bottom
What this is · Services · Main action · Open now · Proof · Who you’ll deal with · What happens next · What clients say · How to find us

How visitors move through it

  • HomeAll servicesOne page per service
  • HomePeopleOne page per person
  • Every other page is one click from the homepage.
  • The main action (get in touch until the business says otherwise) sits on seven of the eight pages, and on urgent work a call-or-book bar follows the visitor everywhere.

Why it works

A client with a situation (a divorce, a tax return, a toothache) has to find which of your services fits, who they’d see, the fee, and how to start, without feeling sold to.

So the homepage leads with Need first, then person, then fee, then the first step.

What each part of the homepage is for

  1. What this is always

    What you do and for whom, in the client’s words.

  2. Services always

    Entry by need or client type, not by department.

  3. Main action always

    Book, free call or enquiry, as declared.

  4. Open now depends

    Clinics and vets: hours and the out-of-hours route.

  5. Proof depends

    Regulator line and registrations, linked.

  6. Who you’ll deal with depends

    Who you’d see.

  7. What happens next always

    What happens at the first appointment or call.

  8. What clients say depends

    Attributed and dated.

  9. How to find us depends

    One premises: where, and getting there.

On every page

  • Always-there call or book required when it applies

    Vets and urgent dental: the out-of-hours route stays reachable from every view. How it looks is Design’s.

  • 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 should a ready visitor do? Phone us

    Phone, then book a time or dates

    Phone-led practices: the number big, the hours clear (dentist-call brief). observed

  2. What should a ready visitor do? Book a time

    Book a time or dates, then phone

    Clinics and fixed-fee services can be booked outright. observed

  3. What should a ready visitor do? Ask for a quote

    Request a quote, then phone

    Fixed-scope work such as surveys is quoted. observed

  4. Otherwise

    Send an enquiry, then phone

    Advice work usually starts with a conversation. Don’t ask for a stronger commitment than the page has prepared people for. our reasoning

Check before you build

  • Whether advisers and clinics are one pattern or two. They share sections; only real sites built side by side will show whether they differ. unknown
  • Whether a GP practice is this pattern with a task-first home. unknown
  • Every regulator named in the briefs is unresearched. unknown
  • A regulator line that can be checked, and personal registrations where the person is regulated. Which regulators apply depends on the field. our reasoning
  • Fees in plain words are proof of a kind: they show nothing is hidden. untested

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
  • On the homepage: What this is, Services, Main action, What happens next

Depends on the business

  • All services If: How many distinct services or offers? 7 or more
  • One page per service Not if: How many distinct services or offers? One
  • Fees If: Can you publish prices? Yes, fixed prices or “From” prices or ranges
  • People If: Do clients care which person they get? Yes, they pick or meet a named person or The team matters, not who
  • One page per person If: Do clients care which person they get? Yes, they pick or meet a named person
  • Locations If: How many places can people visit? Several
  • Book or enquire Not if: What should a ready visitor do? Phone us

One pattern, two situations

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

Clinic, book a named clinician Hours and booking lead; clinicians chosen by name.
Main button
Book
Pages
Home, All services, One page per service, Fees, People, One page per person, Book or enquire
Left out
Locations
Adviser, first conversation Need, then fees, then a first conversation; no opening hours.
Main button
Get in touch
Pages
Home, All services, One page per service, Fees, People, Locations, Book or enquire
Left out
One page per person

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
Services
Services
What happens next
Step

Questions only you can answer

  1. What should a ready visitor do?
  2. Can you publish prices?
  3. How many distinct services or offers?
  4. Do clients care which person they get?
  5. Do opening hours decide whether people come or call?
  6. How soon do people usually need you?
  7. How many places can people visit?
  8. What proof do you actually have?
  9. How many languages?

What changes with the answers

Do opening hours decide whether people come or call? Yes, set opening hoursOpening hours and the out-of-hours route go on home (clinic shape).
Do opening hours decide whether people come or call? By appointment onlyNo hours block; the first step is the appointment (adviser shape).
Do clients care which person they get? Yes, they pick or meet a named personPer-person pages with “book with”.
Do clients care which person they get? Not reallyNo people pages; a short “who we are” instead.
What should a ready visitor do? Phone usNo enquiry page; the number and hours lead.
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 “Is my situation one you handle, and how do I start?”

On a phone · One “what do you need help with?” list, one tap per need.

On a phone · Rises to the first screen: someone worried at 8pm needs hours and the out-of-hours route first.

On a phone · Drops below the steps: first “do you handle my situation?”, then who.

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
8 pages, 37 sections in order, the main action, and what each section needs from you
Still to decide
12 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

Advisers, practices and clinics

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

From the Strategy brief

  • What should a ready visitor do?Book a time
  • Can you publish prices?Yes, fixed prices
  • How many distinct services or offers?2 to 6
  • Do clients care which person they get?It’s just me
  • What proof do you actually have?Registrations, licenses, memberships
  • Do opening hours decide whether people come or call?unanswered
  • How soon do people usually need you?unanswered
  • How many places can people visit?unanswered
  • How many languages?unanswered

Primary action

Book a time or dates

Secure a time or dates

Build decides (likely navigate)

Second route: Phone

On every page

  • Always-there call or book required depends
  • Language switch required depends

Pages, in order · modules in reading order

  1. Home

    /

    1. What this is orient · explain1 required slot
    2. Services explain · explore1 required slot
    3. Main action act1 required slot
    4. Open now orient · act depends1 required slot
    5. Proof prove · reassure0 required slots
    6. What happens next explain · reassure1 required slot
    7. How to find us orient · act depends1 required slot
  2. One page per service × each service

    /services/{service}

    1. Item summary orient · explain2 required slots
    2. Prices reassure · explain2 required slots
    3. What happens next explain · reassure1 required slot
    4. Proof prove · reassure0 required slots
    5. Questions people ask reassure optional1 required slot
    6. Main action act1 required slot
  3. Fees

    /fees

    1. Prices reassure · explain2 required slots
    2. On today explore · act optional2 required slots
    3. Questions people ask reassure optional1 required slot
    4. Main action act1 required slot
  4. Locations × each location depends

    /locations/{location}

    1. Open now orient · act1 required slot
    2. How to find us orient · act1 required slot
    3. Services explain · explore optional1 required slot
    4. Who you’ll deal with reassure · prove optional2 required slots
    5. Main action act1 required slot
  5. Book or enquire

    /book

    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

  • Home: Who you’ll deal with left out because the answer to “Do clients care which person they get?” is “It’s just me”
  • Home: What clients say left out because the answer to “What proof do you actually have?” is “Registrations, licences, memberships”
  • page: All services left out because the answer to “How many distinct services or offers?” is “2 to 6”
  • One page per service: Who you’ll deal with left out because the answer to “Do clients care which person they get?” is “It’s just me”
  • One page per service: What clients say left out because the answer to “What proof do you actually have?” is “Registrations, licences, memberships”
  • page: People left out because the answer to “Do clients care which person they get?” is “It’s just me”
  • page: One page per person left out because the answer to “Do clients care which person they get?” is “It’s just me”

Open questions

  • Do opening hours decide whether people come or call?
  • How soon do people usually need you?
  • How many places can people visit?
  • How many languages?
  • Whether advisers and clinics are one pattern or two. They share sections; only real sites built side by side will show whether they differ.
  • Whether a GP practice is this pattern with a task-first home.
  • Every regulator named in the briefs is unresearched.

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": "practice",
    "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": {
      "main_action": {
        "question": "What should a ready visitor do?",
        "answer": "Book a time",
        "value": "book"
      },
      "prices": {
        "question": "Can you publish prices?",
        "answer": "Yes, fixed prices",
        "value": "fixed"
      },
      "services": {
        "question": "How many distinct services or offers?",
        "answer": "2 to 6",
        "value": "few"
      },
      "people": {
        "question": "Do clients care which person they get?",
        "answer": "It’s just me",
        "value": "solo"
      },
      "proof": {
        "question": "What proof do you actually have?",
        "answer": "Registrations, licences, memberships",
        "value": [
          "register"
        ]
      }
    },
    "unanswered": [
      {
        "fact": "hours",
        "question": "Do opening hours decide whether people come or call?"
      },
      {
        "fact": "urgency",
        "question": "How soon do people usually need you?"
      },
      {
        "fact": "locations",
        "question": "How many places can people visit?"
      },
      {
        "fact": "languages",
        "question": "How many languages?"
      }
    ]
  },
  "site_pattern": {
    "id": "practice",
    "name": "Advisers, practices and clinics",
    "problem": "A client with a situation (a divorce, a tax return, a toothache) has to find which of your services fits, who they’d see, the fee, and how to start, without feeling sold to.",
    "leads_with": "Need first, then person, then fee, then the first step."
  },
  "primary_action": {
    "role": "book",
    "label": "Book a time or dates",
    "intent": "Secure a time or dates",
    "outcome": "booking_handoff",
    "implementation": "Build decides (likely navigate)",
    "decided": true,
    "second_routes": [
      {
        "role": "call",
        "label": "Phone",
        "intent": "Reach the business by phone, now"
      }
    ],
    "why": "Clinics and fixed-fee services can be booked outright.",
    "stated_preference": {
      "role": "book",
      "label": "Book a time or dates",
      "answer": "Book a time"
    },
    "follows_preference": true
  },
  "page_frame": [
    {
      "module": "persistent-action",
      "name": "Always-there call or book",
      "strength": "required",
      "status": "depends",
      "depends_on": [
        "urgency"
      ],
      "why": "Vets and urgent dental: the out-of-hours route stays reachable from every view. How it looks is Design’s.",
      "presentation": "Design decides; Build implements.",
      "copy": {
        "formula": "[Same main action] + [when it’s answered]",
        "why_it_works": "Keeps the main action one tap away as people scroll, so nobody has to hunt for your number.",
        "illustrative_example": "“Book a call · Mon–Fri, 9 to 5”"
      }
    },
    {
      "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": [
        "action",
        "opening-hours",
        "service-index"
      ],
      "phone_notes": [
        {
          "module": "opening-hours",
          "note": "Rises to the first screen: someone worried at 8pm needs hours and the out-of-hours route first."
        },
        {
          "module": "service-index",
          "note": "One “what do you need help with?” list, one tap per need."
        },
        {
          "module": "people",
          "note": "Drops below the steps: first “do you handle my situation?”, then who."
        }
      ],
      "status": "include",
      "job": "Is my situation one you handle, and how do I start?",
      "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 you do and for whom, in the client’s words.",
          "copy": {
            "formula": "[Who you help + the situation you handle], then [how your fees work + how to start]",
            "why_it_works": "Clients come with a situation (a tax return, a toothache), not a service name. Naming the people and situations you handle lets them recognize themselves, and saying how fees work answers the question they’re often too polite to ask.",
            "illustrative_example": "“Fixed monthly fees for sole traders, landlords and small companies.” Then: “Know the fee before we talk. Book a free 20-minute call.”"
          }
        },
        {
          "module": "service-index",
          "name": "Services",
          "jobs": [
            "explain",
            "explore"
          ],
          "status": "include",
          "role": "Service navigation",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Services",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "grouping",
              "name": "Grouped by need, client type or life event",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "price-hint",
              "name": "Price or “from” price per service",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "Entry by need or client type, not by department.",
          "copy": {
            "formula": "[Client type or situation + what you do], one line each",
            "why_it_works": "Visitors pick the line that describes them. Grouping by who they are or what happened to them is quicker than making them decode your service names.",
            "illustrative_example": "“Sole traders: your tax return and bookkeeping”, “Landlords: rental income and allowances”, “Limited companies: accounts, payroll and VAT”."
          }
        },
        {
          "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": "Book, free call or enquiry, as declared.",
          "copy": {
            "formula": "[Book a first conversation + with whom], with [what it costs + what happens next]",
            "why_it_works": "Advice feels risky to ask for. A first step that’s small, priced and clear (a free call, a fixed first appointment) makes starting feel safe, without a hard sell.",
            "illustrative_example": "“Book a free 20-minute call”, with “No obligation · fee agreed before any work” beside it."
          }
        },
        {
          "module": "opening-hours",
          "name": "Open now",
          "jobs": [
            "orient",
            "act"
          ],
          "status": "depends",
          "depends_on": [
            "hours"
          ],
          "role": "Local information",
          "latitude": null,
          "slots": [
            {
              "slot": "regular",
              "name": "Regular hours, as text",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "exceptions",
              "name": "Holidays and seasonal changes",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "out-of-hours",
              "name": "What to do when closed",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "Clinics and vets: hours and the out-of-hours route.",
          "copy": {
            "formula": "[Today’s status] + [regular hours] + [holidays and what to do when closed]",
            "why_it_works": "Tells people whether they can come or call right now, and what to do when you’re closed.",
            "illustrative_example": "“Open now · closes 5pm. Closed bank holidays. Out of hours? Book a call online.”"
          }
        },
        {
          "module": "proof-strip",
          "name": "Proof",
          "jobs": [
            "prove",
            "reassure"
          ],
          "status": "include",
          "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": "Regulator line and registrations, linked.",
          "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": "“ICAEW chartered accountants · firm no. — · Check the register ↗”"
          }
        },
        {
          "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 at the first appointment or call.",
          "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 book a free 20-minute call. 2 We agree the fee in writing. 3 You send us your paperwork. 4 We file it and send you a copy.”"
          }
        },
        {
          "module": "location",
          "name": "How to find us",
          "jobs": [
            "orient",
            "act"
          ],
          "status": "depends",
          "depends_on": [
            "locations"
          ],
          "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": "One premises: where, and getting there.",
          "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": "“2 Park Row, Leeds, opposite the station’s north entrance. Step-free access; no parking on site.”"
          }
        }
      ]
    },
    {
      "page": "services",
      "name": "One page per service",
      "route": "/services/{service}",
      "page_pattern": "service",
      "one_per": "service",
      "status": "include",
      "job": "Is this service mine, and what does it involve?",
      "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": "Names the service and who it is for, in the visitor’s words.",
          "copy": {
            "formula": "[The job, named the way customers say it] + [who it’s for + price from + how soon]",
            "why_it_works": "Confirms the visitor found the exact job they searched for, and answers the first two questions: how much, and how soon.",
            "illustrative_example": "“Landlord tax returns: for one to five properties, from £— a year.”"
          }
        },
        {
          "module": "price-list",
          "name": "Prices",
          "jobs": [
            "reassure",
            "explain"
          ],
          "status": "include",
          "role": "Price",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Item and price (or “from” price)",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "includes",
              "name": "What’s included",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "tax",
              "name": "Tax shown or included",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "extras",
              "name": "Extra fees (call-out, deposit, travel)",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "depends",
              "name": "What changes the price",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "updated",
              "name": "Last updated",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "The price for this service, with what’s included and any extra fees.",
          "copy": {
            "formula": "[This job + fixed or “from” price] + [what’s included] + [what could add to it]",
            "why_it_works": "The price of this one job, what’s included and what could add to it.",
            "illustrative_example": "“Self assessment for landlords · £— a year including VAT · extra properties £— each.”"
          }
        },
        {
          "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 from the first call to the finished job: the question that stops people booking.",
          "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 book a free 20-minute call. 2 We agree the fee in writing. 3 You send us your paperwork. 4 We file it and send you a copy.”"
          }
        },
        {
          "module": "proof-strip",
          "name": "Proof",
          "jobs": [
            "prove",
            "reassure"
          ],
          "status": "include",
          "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": "The registration or licence that covers this specific work (a gas engineer’s categories, a solicitor’s practice area).",
          "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": "“ICAEW chartered accountants · firm no. — · Check the register ↗”"
          }
        },
        {
          "module": "faq",
          "name": "Questions people ask",
          "jobs": [
            "reassure"
          ],
          "status": "optional",
          "role": "Reassurance",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Question and answer",
              "need": "required",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "Only the questions people ask about this service.",
          "copy": {
            "formula": "[Real customer objection + direct answer]",
            "why_it_works": "Answers the doubts that stop people acting, in the words they use when they ask.",
            "illustrative_example": "“Can I switch from my current accountant mid-year? Yes. We ask them for your records; you sign one letter.”"
          }
        },
        {
          "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 page’s one action, with this service’s terms beside it.",
          "copy": {
            "formula": "[Book a first conversation + with whom], with [what it costs + what happens next]",
            "why_it_works": "Advice feels risky to ask for. A first step that’s small, priced and clear (a free call, a fixed first appointment) makes starting feel safe, without a hard sell.",
            "illustrative_example": "“Book a free 20-minute call”, with “No obligation · fee agreed before any work” beside it."
          }
        }
      ]
    },
    {
      "page": "fees",
      "name": "Fees",
      "route": "/fees",
      "page_pattern": "prices",
      "status": "include",
      "job": "What it costs, in plain words.",
      "modules": [
        {
          "module": "price-list",
          "name": "Prices",
          "jobs": [
            "reassure",
            "explain"
          ],
          "status": "include",
          "role": "Price",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Item and price (or “from” price)",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "includes",
              "name": "What’s included",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "tax",
              "name": "Tax shown or included",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "extras",
              "name": "Extra fees (call-out, deposit, travel)",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "depends",
              "name": "What changes the price",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "updated",
              "name": "Last updated",
              "need": "optional",
              "content": "to supply"
            }
          ],
          "why": "The list itself, with tax, extras and what changes the price.",
          "copy": {
            "formula": "[Service as customers name it + what’s included + price], with tax and extras on the same line",
            "why_it_works": "Answers “what will this cost me?” before anyone has to ask, including tax, extras and what changes the price.",
            "illustrative_example": "“Self assessment for landlords · £— a year including VAT · extra properties £— each.”"
          }
        },
        {
          "module": "today",
          "name": "On today",
          "jobs": [
            "explore",
            "act"
          ],
          "status": "optional",
          "role": "The offer",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Today’s items",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "date",
              "name": "Date it applies to",
              "need": "required",
              "content": "to supply"
            }
          ],
          "why": "Menus that change daily: what’s on today, dated.",
          "copy": {
            "formula": "[What’s different this week, dated] + [price]",
            "why_it_works": "Shows any price that only applies now, dated, so the main list stays true.",
            "illustrative_example": "“Booking now for January returns: calls available this week.”"
          }
        },
        {
          "module": "faq",
          "name": "Questions people ask",
          "jobs": [
            "reassure"
          ],
          "status": "optional",
          "role": "Reassurance",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Question and answer",
              "need": "required",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "Payment, deposits, finance, cancellations: only if people ask.",
          "copy": {
            "formula": "[Real customer objection + direct answer]",
            "why_it_works": "Answers the doubts that stop people acting, in the words they use when they ask.",
            "illustrative_example": "“Can I switch from my current accountant mid-year? Yes. We ask them for your records; you sign one letter.”"
          }
        },
        {
          "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": "Book, order or ask for a quote from the page where the decision is made.",
          "copy": {
            "formula": "[Book a first conversation + with whom], with [what it costs + what happens next]",
            "why_it_works": "Advice feels risky to ask for. A first step that’s small, priced and clear (a free call, a fixed first appointment) makes starting feel safe, without a hard sell.",
            "illustrative_example": "“Book a free 20-minute call”, with “No obligation · fee agreed before any work” beside it."
          }
        }
      ]
    },
    {
      "page": "locations",
      "name": "Locations",
      "route": "/locations/{location}",
      "page_pattern": "location",
      "one_per": "location",
      "status": "depends",
      "depends_on": [
        "locations"
      ],
      "job": "Which branch, and when it’s open.",
      "modules": [
        {
          "module": "opening-hours",
          "name": "Open now",
          "jobs": [
            "orient",
            "act"
          ],
          "status": "include",
          "role": "Local information",
          "latitude": null,
          "slots": [
            {
              "slot": "regular",
              "name": "Regular hours, as text",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "exceptions",
              "name": "Holidays and seasonal changes",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "out-of-hours",
              "name": "What to do when closed",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "This branch’s hours, including holidays.",
          "copy": {
            "formula": "[Today’s status] + [regular hours] + [holidays and what to do when closed]",
            "why_it_works": "Tells people whether they can come or call right now, and what to do when you’re closed.",
            "illustrative_example": "“Open now · closes 5pm. Closed bank holidays. Out of hours? Book a call online.”"
          }
        },
        {
          "module": "location",
          "name": "How to find us",
          "jobs": [
            "orient",
            "act"
          ],
          "status": "include",
          "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": "Address as text, directions, access.",
          "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": "“2 Park Row, Leeds, opposite the station’s north entrance. Step-free access; no parking on site.”"
          }
        },
        {
          "module": "service-index",
          "name": "Services",
          "jobs": [
            "explain",
            "explore"
          ],
          "status": "optional",
          "role": "Service navigation",
          "latitude": null,
          "slots": [
            {
              "slot": "items",
              "name": "Services",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "grouping",
              "name": "Grouped by need, client type or life event",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "price-hint",
              "name": "Price or “from” price per service",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "What this branch does, if branches differ.",
          "copy": {
            "formula": "[Client type or situation + what you do], one line each",
            "why_it_works": "Visitors pick the line that describes them. Grouping by who they are or what happened to them is quicker than making them decode your service names.",
            "illustrative_example": "“Sole traders: your tax return and bookkeeping”, “Landlords: rental income and allowances”, “Limited companies: accounts, payroll and VAT”."
          }
        },
        {
          "module": "people",
          "name": "Who you’ll deal with",
          "jobs": [
            "reassure",
            "prove"
          ],
          "status": "optional",
          "role": "Trust & proof",
          "latitude": null,
          "slots": [
            {
              "slot": "name",
              "name": "Name and role",
              "need": "required",
              "many": true,
              "content": "to supply"
            },
            {
              "slot": "register",
              "name": "Personal registration and number",
              "need": "conditional",
              "content": "to supply"
            },
            {
              "slot": "photo",
              "name": "Photo (consented)",
              "need": "optional",
              "content": "to supply"
            },
            {
              "slot": "does",
              "name": "What they do for you",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "book-with",
              "name": "Book with this person",
              "need": "conditional",
              "content": "to supply"
            }
          ],
          "why": "Who works here, if people are chosen.",
          "copy": {
            "formula": "[Name + role] + [what this person does for the customer]",
            "why_it_works": "Puts names and faces on the business. That matters most when you come into someone’s home or handle their money or health.",
            "illustrative_example": "“Priya Nair, chartered accountant. Looks after landlords and sole traders. ICAEW no. —. Book with Priya.”"
          }
        },
        {
          "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": "Call or book this branch.",
          "copy": {
            "formula": "[Book a first conversation + with whom], with [what it costs + what happens next]",
            "why_it_works": "Advice feels risky to ask for. A first step that’s small, priced and clear (a free call, a fixed first appointment) makes starting feel safe, without a hard sell.",
            "illustrative_example": "“Book a free 20-minute call”, with “No obligation · fee agreed before any work” beside it."
          }
        }
      ]
    },
    {
      "page": "start",
      "name": "Book or enquire",
      "route": "/book",
      "page_pattern": "enquiry",
      "status": "include",
      "job": "Start, and know 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": "“Tell us about your situation” with name, email and “What do you need help with?”. Button: “Send, we reply within one working day”."
          }
        },
        {
          "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 book a free 20-minute call. 2 We agree the fee in writing. 3 You send us your paperwork. 4 We file it and send you a copy.”"
          }
        },
        {
          "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": "[Book a first conversation + with whom], with [what it costs + what happens next]",
            "why_it_works": "Advice feels risky to ask for. A first step that’s small, priced and clear (a free call, a fixed first appointment) makes starting feel safe, without a hard sell.",
            "illustrative_example": "“Book a free 20-minute call”, with “No obligation · fee agreed before any work” 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": "“Sent. We’ll email you within one working day to book your call.”"
          }
        }
      ]
    }
  ],
  "left_out": [
    {
      "what": "Home: Who you’ll deal with",
      "why": "left out because people is “It’s just me”"
    },
    {
      "what": "Home: What clients say",
      "why": "left out because proof is “Registrations, licences, memberships”"
    },
    {
      "what": "page: All services",
      "why": "left out because services is “2 to 6”"
    },
    {
      "what": "One page per service: Who you’ll deal with",
      "why": "left out because people is “It’s just me”"
    },
    {
      "what": "One page per service: What clients say",
      "why": "left out because proof is “Registrations, licences, memberships”"
    },
    {
      "what": "page: People",
      "why": "left out because people is “It’s just me”"
    },
    {
      "what": "page: One page per person",
      "why": "left out because people is “It’s just me”"
    }
  ],
  "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": [
    "Do opening hours decide whether people come or call?",
    "How soon do people usually need you?",
    "How many places can people visit?",
    "How many languages?",
    "Whether advisers and clinics are one pattern or two. They share sections; only real sites built side by side will show whether they differ.",
    "Whether a GP practice is this pattern with a task-first home.",
    "Every regulator named in the briefs is unresearched."
  ],
  "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 it10 statements · 2 sourced · 5 untested or unknown

Use it when

  • Clients arrive with a situation and need routing to a service, then reassurance about the person and the fee. observedour brief study
  • We tried five kinds of adviser against one structure, swapping only the nouns; a dentist, a private GP and a vet came out almost identical. our reasoningour brief study

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 servicesOne page per serviceFeesPeopleOne page per personLocationsBook or enquire
PositioningRequired
Required
Service navigationRequiredRequiredCommon
Primary actionRequiredRequiredRequiredRequiredConditionalRequiredCommon
Local informationConditionalRequired
ConditionalRequired
Trust & proofConditionalConditionalConditionalConditional
ConditionalConditionalRequiredRequiredCommon
What happens nextRequiredRequiredRequired
Supporting evidenceConditionalConditional
PriceConditionalRequired
ReassuranceCommonCommon
The offerCommon
Conversion pointRequired
Required

What the research says

  • Advisers and clinics were the largest group in the 118 business briefs we studied. observedour brief studyAesthetary
  • For UK vets the CMA now requires a price list at most one click from the home page without scrolling, with “price”, “pricing” or “fees” in the navigation. When the inquiry began only 16% of practices had any prices online. sourcedCMACMA
  • In NN/g’s studies, price was the information business customers most wanted, and people left for competitors when a site hid it. sourcedNN/g 2013

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

  • Services organized by the firm’s departments, so a bereaved client has to know the word “probate”. untested
  • A “book a consultation” button on every section before saying what the consultation is or costs. our reasoningfrom our software-site guidance, untested here
  • Building a separate structure for nervous or stressed visitors. The answer is clearer steps and fees, not a different structure. our decision