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