Layouts · Software product · The full pattern

Software product: the full pattern

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

I make software people sign up for, try or buy.

Sites like this: SaaS tool, app with a waitlist, B2B platform sold through sales.

What a visitor comes to find out

“What it is, whether it fits, and the honest next step.”

Built in code and tested (homepage) The homepage is built in code and was tested on Aesthetary’s own homepage and on two briefs written without seeing it. The Pricing and Customer stories pages drawn here are proposed, not built.

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

Three kinds of page. Homepage is on every site like this; two are proposed, not built. Pick a situation to see which pages stay.

Show the plan for

On every siteDepends on the businessLeft out for this businessOne page for each itemProposed, not built

Homepage

“What it is, whether it fits, and the honest next step.”

Status
Always
Address
/
Seven sections, top to bottom
What this is · Main action · Prices · What happens next · Proof · Questions people ask · Where next

How visitors move through it

  • Every page is one click from the homepage.
  • The main action (start until the business says otherwise) sits on every page.

Why it works

A visitor has to understand what the product does and whether it fits, then take the step the product can actually offer: start, join a waitlist, or talk to sales.

So the homepage leads with What it does and for whom, then the honest next step.

What each part of the homepage is for

  1. What this is always

    What the product is and for whom.

  2. Main action always

    The honest next step: start, join the waitlist or talk to sales, depending on access.

  3. Prices optional

    Pricing, when it can be shown.

  4. What happens next optional

    How it works, step by step.

  5. Proof depends

    Proof, only with evidence behind it.

  6. Questions people ask optional

    Only the questions people actually ask.

  7. Where next always

    The next step at the end of the page.

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? Send an enquiry

    Send an enquiry, then see the work

    Sales-led: fit has to be evaluated, so the action is a conversation. our decision

  2. Otherwise

    Start using the product

    Only when the product can actually be used today; otherwise a waitlist or a conversation about fit. our decision

Check before you build

  • Multi-page product sites. unknown
  • Comparison pages (no evidence yet). unknown
  • Proof needs a claim to prove; without evidence, the page makes no customer, adoption or leadership claims. our decision

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

  • Homepage
  • On the homepage: What this is, Main action, Where next

Your call

  • Pricing Proposed, not built
  • Customer stories Proposed, not built

One pattern, two situations

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

Self-serve The product can be used today, so “Start” leads.
Main button
Start
Pages
Homepage, Pricing, Customer stories
Pre-launch, no proof yet Nothing to prove yet: the proof sections go, and nothing is invented.
Main button
Start
Pages
Homepage, Pricing, Customer stories

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
Where next
Closing line

Questions only you can answer

  1. What should a ready visitor do?
  2. What proof do you actually have?

What changes with the answers

What should a ready visitor do? Send an enquirySales-led: a conversation about fit replaces “start”.
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.

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.

Homepage answers “What it is, whether it fits, and the honest next step.”

On a phone · Directly under the proposition; proof and pricing follow.

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
3 pages, 18 sections in order, the main action, and what each section needs from you
Still to decide
4 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: built in code and tested (homepage).

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

Software product

No project named · 2026-10-06 · pattern maturity: built in code and tested

From the Strategy brief

  • What should a ready visitor do?Sign up or start using it
  • What proof do you actually have?Clients who agreed to be named

Primary action

Start using the product

Begin using the product, or join the queue for it

Build decides (likely navigate)

Pages, in order · modules in reading order

  1. Homepage

    /

    1. What this is orient · explain1 required slot
    2. Main action act1 required slot
    3. Prices reassure · explain optional2 required slots
    4. What happens next explain · reassure optional1 required slot
    5. Proof prove · reassure0 required slots
    6. Questions people ask reassure optional1 required slot
    7. Where next act · recover1 required slot
  2. Pricing

    /pricing

    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
  3. Customer stories × each project

    /customers/{project}

    1. Item summary orient · explain2 required slots
    2. Pictures of the real thing demonstrate · prove1 required slot
    3. Who did what explain · prove1 required slot
    4. What happens next explain · reassure optional1 required slot
    5. What changed prove1 required slot
    6. What clients say prove optional1 required slot
    7. Where next act · recover1 required slot

Left out, and why

  • Nothing yet

Open questions

  • Multi-page product sites.
  • Comparison pages (no evidence yet).

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": "saas",
    "pattern_maturity": "built in code and tested"
  },
  "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": "Sign up or start using it",
        "value": "start"
      },
      "proof": {
        "question": "What proof do you actually have?",
        "answer": "Clients who agreed to be named",
        "value": [
          "clients"
        ]
      }
    },
    "unanswered": []
  },
  "site_pattern": {
    "id": "saas",
    "name": "Software product",
    "problem": "A visitor has to understand what the product does and whether it fits, then take the step the product can actually offer: start, join a waitlist, or talk to sales.",
    "leads_with": "What it does and for whom, then the honest next step."
  },
  "primary_action": {
    "role": "start",
    "label": "Start using the product",
    "intent": "Begin using the product, or join the queue for it",
    "outcome": "signup",
    "implementation": "Build decides (likely navigate)",
    "decided": true,
    "second_routes": [],
    "why": "Only when the product can actually be used today; otherwise a waitlist or a conversation about fit.",
    "stated_preference": {
      "role": "start",
      "label": "Start using the product",
      "answer": "Sign up or start using it"
    },
    "follows_preference": true
  },
  "page_frame": [],
  "pages": [
    {
      "page": "home",
      "name": "Homepage",
      "route": "/",
      "phone_first": [
        "action"
      ],
      "phone_notes": [
        {
          "module": "action",
          "note": "Directly under the proposition; proof and pricing follow."
        }
      ],
      "status": "include",
      "job": "What it is, whether it fits, and the honest next step.",
      "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 the product is and for whom.",
          "copy": {
            "formula": "[What the product does + for whom], then [the result they get + the doubt you remove]",
            "why_it_works": "Visitors decide quickly whether the product is for them. Saying what it does and who it’s for, in plain words, beats a clever tagline; the supporting line answers the first objection, like price or setup time.",
            "illustrative_example": "“Invoices that chase late payments for you.” Then: “For freelancers and small studios. Send an invoice in a minute; we send the reminders.”"
          }
        },
        {
          "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 honest next step: start, join the waitlist or talk to sales, depending on access.",
          "copy": {
            "formula": "[Start, join the waitlist or talk to sales], with [free or paid + card needed or not + how to cancel]",
            "why_it_works": "Offer the step your product can actually take today. If people can use it now, let them start; if buyers need to check fit, a conversation is the honest action.",
            "illustrative_example": "“Start free”, with “No card needed · cancel any time” beside it."
          }
        },
        {
          "module": "price-list",
          "name": "Prices",
          "jobs": [
            "reassure",
            "explain"
          ],
          "status": "optional",
          "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": "Pricing, when it can be shown.",
          "copy": {
            "formula": "[Plan + who it’s for + price], with what each plan includes",
            "why_it_works": "People compare plans to find the one that fits them. Saying who each plan is for helps them choose without reading every feature.",
            "illustrative_example": "“Solo · £— a month · up to — clients · reminders included.”"
          }
        },
        {
          "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": "How it works, step by step.",
          "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 Sign up with your email. 2 Add your first client. 3 Send an invoice. 4 Pick a plan when you’re ready.”"
          }
        },
        {
          "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": "Proof, only with evidence behind it.",
          "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": "“Used by —, — and — (named with permission).” Before launch, with nothing to show yet, leave this section out."
          }
        },
        {
          "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 actually 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": "“What happens to my data if I cancel? You can export everything as CSV, and we delete it after — days.”"
          }
        },
        {
          "module": "continuation",
          "name": "Where next",
          "jobs": [
            "act",
            "recover"
          ],
          "status": "include",
          "role": "Next step",
          "latitude": null,
          "slots": [
            {
              "slot": "line",
              "name": "Closing line",
              "need": "required",
              "content": "to supply"
            }
          ],
          "why": "The next step at the end of the page.",
          "copy": {
            "formula": "[The next step, for anyone still reading] + [specific action]",
            "why_it_works": "Catches people who read to the end and gives them one clear next step.",
            "illustrative_example": "“Send your first invoice today. Start free.”"
          }
        }
      ]
    },
    {
      "page": "pricing",
      "name": "Pricing",
      "route": "/pricing",
      "page_pattern": "prices",
      "status": "include",
      "job": "Plans and what each includes. Proposed, not built.",
      "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": "[Plan + who it’s for + price], with what each plan includes",
            "why_it_works": "People compare plans to find the one that fits them. Saying who each plan is for helps them choose without reading every feature.",
            "illustrative_example": "“Solo · £— a month · up to — clients · reminders included.”"
          }
        },
        {
          "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": "“Prices from 1 November: —.” Only for a change that’s really coming."
          }
        },
        {
          "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": "“What happens to my data if I cancel? You can export everything as CSV, and we delete it after — days.”"
          }
        },
        {
          "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": "[Start, join the waitlist or talk to sales], with [free or paid + card needed or not + how to cancel]",
            "why_it_works": "Offer the step your product can actually take today. If people can use it now, let them start; if buyers need to check fit, a conversation is the honest action.",
            "illustrative_example": "“Start free”, with “No card needed · cancel any time” beside it."
          }
        }
      ]
    },
    {
      "page": "stories",
      "name": "Customer stories",
      "route": "/customers/{project}",
      "page_pattern": "case-study",
      "one_per": "project",
      "status": "include",
      "job": "Proof from named customers. Proposed, not built.",
      "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": "Project, client (if named), what it was.",
          "copy": {
            "formula": "[The project + who it was for] + [the problem it solved + the result]",
            "why_it_works": "Tells a future client in one look whether this project is like theirs.",
            "illustrative_example": "“How a two-person studio stopped chasing invoices by hand.”"
          }
        },
        {
          "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": "The real work. Before/after only of the same job, same angle.",
          "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 reminder settings the studio uses, screenshot from March.”"
          }
        },
        {
          "module": "credits",
          "name": "Who did what",
          "jobs": [
            "explain",
            "prove"
          ],
          "status": "include",
          "role": "Supporting evidence",
          "latitude": null,
          "slots": [
            {
              "slot": "role",
              "name": "Role and scope",
              "need": "required",
              "content": "to supply"
            },
            {
              "slot": "collaborators",
              "name": "Collaborators",
              "need": "optional",
              "many": true,
              "content": "to supply"
            }
          ],
          "why": "What this business did, and who else worked on it.",
          "copy": {
            "formula": "[Your role + scope] + [who you worked with]",
            "why_it_works": "Makes clear what you did, so the work proves your part and not someone else’s.",
            "illustrative_example": "“Set up by the studio; we helped import their old invoices.”"
          }
        },
        {
          "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": "How it was done, when the process is part of the proof.",
          "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 Sign up with your email. 2 Add your first client. 3 Send an invoice. 4 Pick a plan when you’re ready.”"
          }
        },
        {
          "module": "outcome",
          "name": "What changed",
          "jobs": [
            "prove"
          ],
          "status": "include",
          "role": "Supporting evidence",
          "latitude": null,
          "slots": [
            {
              "slot": "measure",
              "name": "Measure, method, date",
              "need": "required",
              "content": "to supply"
            }
          ],
          "why": "Only a measured result, attributed correctly.",
          "copy": {
            "formula": "[Measured result + how and when it was measured]",
            "why_it_works": "Shows the result in a way people can believe: what changed, measured how, and when.",
            "illustrative_example": "“Average days to get paid fell from — to — over six months, from the studio’s own records.” Only include it if it was measured."
          }
        },
        {
          "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": "The client’s words about this project, with permission.",
          "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 product: “I haven’t written a reminder email since March.” —, illustrator. Use real, attributed quotes."
          }
        },
        {
          "module": "continuation",
          "name": "Where next",
          "jobs": [
            "act",
            "recover"
          ],
          "status": "include",
          "role": "Next step",
          "latitude": null,
          "slots": [
            {
              "slot": "line",
              "name": "Closing line",
              "need": "required",
              "content": "to supply"
            }
          ],
          "why": "The next project, or the action.",
          "copy": {
            "formula": "[The next step, for anyone still reading] + [specific action]",
            "why_it_works": "Catches people who read to the end and gives them one clear next step.",
            "illustrative_example": "“Send your first invoice today. Start free.”"
          }
        }
      ]
    }
  ],
  "left_out": [],
  "constraint_profiles": [],
  "open_questions": [
    "Multi-page product sites.",
    "Comparison pages (no evidence yet)."
  ],
  "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 it4 statements · 0 sourced · 2 untested or unknown

Use it when

  • Built in code and tested on Aesthetary’s own homepage and on two briefs written without seeing the pattern. our decisionAesthetary

Not when

  • A multi-page product site: the built pattern covers the homepage only. Pricing and customer-story pages are proposed (the Prices and Case study page patterns would serve).

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 · sectionHomepagePricingCustomer stories
PositioningRequired
Required
Primary actionRequiredRequired
PriceCommonRequired
What happens nextCommonCommon
Trust & proofConditional
ReassuranceCommonCommon
Next stepRequiredRequired
The offerCommon
Supporting evidenceRequired
Required
Conditional
Common

What the research says

  • The guidance behind it is Aesthetary’s own reasoning; its external sources are not yet attached. our decisionAesthetary

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

  • “Start free” when access is unavailable. our decision