---
title: Building a site for this owner
description: 'Read this before you build a new site or rebuild most of one: the authoring
  guides (`vzk/authoring` and the focused guides it names) make a page valid, and
  this one makes the site belong to the person whose name is on it.'
sidebar:
  order: 2
---

Read this before you build a new site or rebuild most of one: the authoring
guides (`vzk/authoring` and the focused guides it names) make a page valid,
and this one makes the site belong to the person whose name is on it. Copying
a site the owner already has? Read `copying` too: its articles, case studies
and other repeated items belong in tables.

A site that renders but could belong to anybody in the same trade has failed.
The owner wants a site that sounds like them, shows their work and gives their
prices.

## Start from a brief, never a blank page

Before you write a page, collect the brief. Take what you can from
`get_site`, `list_files` and the conversation, and ask for the rest:

- the trade, and the business name the way the owner writes it;
- the city, and the area they serve;
- three to six services, each with a real price (or a "from" price) and what
  it includes;
- who the clients are, and what they ask before they book;
- the one thing a visitor should do: call, book, send a message, visit;
- the owner's own sentences: a bio, captions, a reply they send customers;
- the languages the site speaks;
- the pictures on the disk, and which of them are the owner's own work.

Ask for everything that's missing in one message, once. If a fact still
isn't there, leave its slot visibly empty and tell the owner it is waiting for
them. A price you made up is a promise on their site, under their name, that
they never made.

## Pages by trade, not by starter set

Decide what a client of this trade needs to know before they get in touch,
then choose the pages that carry it. If the trade has a playbook (the
`guides` topic lists them under `playbooks/`), read it: it names the pages
and points at a whole worked site in the `sites` topic. Without one, start
from the nearest trade below.

- **Photographer or videographer.** The work first, then services with
  prices, then who they are. They don't need a blog unless they will write
  one, or a feature grid before the first picture.
- **Plumber, electrician, other trades.** The phone number, the area served,
  the hours and the prices on the first screen, then real jobs and
  credentials. They don't need a mission statement, a blog or a gallery of
  tools.
- **Trainer or coach.** What a session is, where and when, what it costs, and
  how to book the first one. They don't need before-and-after photos they
  can't show.
- **Advisor (finance, tax, marketing).** Who they help with which problem,
  how working together goes, how pricing is set, and the credentials a
  client checks. They don't need a handshake photo or a page of "values".

Two rules hold for every trade:

- **One `h1` per page, and the first screen says what and where.** Either in
  the heading itself ("Plumber in South Manchester") or in the line right
  above a heading that says something sharper ("Photographer, Berlin" over
  "Honest photographs of people in love."). A slogan with no trade and no
  place near it tells a visitor nothing.
- **One call to action, repeated.** Pick it from the brief and use the same
  words in the bar, the first screen, the end of each page and the phone's
  bottom bar. It has to work: a `tel:` link, a form that writes to a table
  (`vzk/tables`), or a link to where booking happens. Two competing
  primary buttons weaken both.

Don't add pages to look complete: an empty blog, a testimonials page with no
testimonials or a FAQ you wrote yourself is worse than no page. The one page
you may not skip is one the law requires, such as an Impressum in Germany
and Austria; ask the owner for its details.

## Copy rules

- **The owner's words over yours.** Edit their sentences for length, not for
  voice. A sole trader writes "I", not "we".
- **Concrete over adjectives.** "Preview gallery within 48 hours" beats "fast
  turnaround"; "a fixed price before I start" beats "transparent pricing". A
  sentence that would be just as true of every competitor gets cut or
  replaced by a fact.
- **Short.** A lead is two sentences. A service is a name, a price and one or
  two sentences about what is included.
- **Never write** "welcome to my website", "passionate about", "one-stop
  shop", "quality service", "look no further", "we pride ourselves", lorem
  ipsum, or a name that is not the owner's.
- **Never invent** a review, a quote, a client, a rating, a years-in-business
  number, a count of jobs, a certification, a regulated job title or a
  price. If it is not in the brief or the owner's files, it is not on the
  site.
- **Never carry a sentence over** from a worked site or a playbook. Its
  promises ("I call back within the hour") are its own owner's, and this
  owner never made them.
- **Every declared language gets real copy**, in the page's own dictionary
  (`vzk/languages`). A second language that is the first one again is a
  broken page in that language.
- **Title and description are the search result.** Lead with the page's
  subject ("Wedding photography in Lviv", not the site's name alone), keep
  the title to about 60 characters, and write the description as one or two
  sentences of about 150 characters, not a list of keywords.

## Look and pictures

Pick the look by what the site has to carry (the `looks` topic has the
stylesheets):

- `mineral` is quiet and editorial and gets out of the pictures' way:
  photographers, videographers, makers, designers.
- `claret` is warm paper and a serif, trust built over a conversation:
  advisors, finance, therapists, tutors.
- `cobalt` is bright, plain and round-cornered, for when the phone number and
  the prices are the point: plumbers, electricians, cleaners, repairs.
- `press` is loud and tight, for a strong personal brand: trainers, coaches,
  events, marketing.

Re-skin rather than pick when the owner already has a brand: a colour on
their van, a typeface on their cards, a logo. Start from the nearest look and
change its `@theme` tokens (`vzk/styling`). Pages never branch on
the look.

For pictures, call `list_files` and look before you place anything:

- The owner's own work beats anything else, including a better-lit stock
  photograph.
- The hero is the single best picture: of the work for a photographer, of the
  owner at work for a trade or a trainer.
- Match the frame to the picture: a wide picture in a wide frame, a portrait
  in a tall one. Never crop a face through the eyes.
- Alt text says what is in the picture, not "image" or the file name.
- Each picture appears once on a page.
- No picture for a slot: leave the empty frame, and tell the owner what should
  go there.

## The review before publish

Run this against your own draft before you send the preview link, and fix
what fails:

1. At phone width, the first screen says what the owner does, where, and for
   whom, and shows the call to action.
2. Every price, hour, place, number and credential comes from the brief or the
   owner's files. You can say where each one came from.
3. Nothing from the "never write" list, and no sentence a competitor could
   use unchanged.
4. One `h1` per page. One call to action, worded the same everywhere, and it
   works: the number dials, the form's table exists, the anchor is on the
   page.
5. Every declared language reads right. Open the preview under each
   language's path, not only the default.
6. Every page has its own `title` and `meta` description in every declared
   language, the others under `settings.translations[locale]`, and each says
   what that page is about. `get_site` lists what a page is missing under
   `missing_meta`; a table's page takes its title from each row.
7. The preview works at about 390 pixels wide: no sideways scrolling, no
   clipped words, and a menu that opens. If you cannot open a browser, check
   that every grid collapses to one column below `md:`.
8. The write results and `list_notifications` report nothing missing: no
   dangling asset, link or component.
9. Editing one row of each table (posts, case studies, services and the
   like), its title, body or other fields, changes its page and every
   listing that shows it, because all of them read the row (`copying`).
10. Nothing your build replaced is left behind: delete the pages you rebuilt
    elsewhere, and every component nothing names any more.
11. Every post and portfolio item meant to be live has a `published_at` day
    that has come. `get_site` shows `published` beside `records` on `posts`
    and `portfolio`; if it is short, ask the owner which rows are ready rather
    than dating them yourself.

Then send the preview URL, with the list of empty slots and anything you
assumed. Publish only after the owner approves.

## What generic looks like

Each of these is a draft to rewrite, however well it renders:

- A hero that says "Welcome to Mira Halden Photography" or "Capturing life's
  precious moments", where it should say "Wedding and portrait photographer
  in Berlin".
- Three cards with an icon each, titled "Quality", "Reliability" and
  "Passion". None of them is a service, a price or a fact.
- "About us" for one person, in the third person, opening "With over 10 years
  of experience" when the brief gave no number.
- A testimonials band quoting "Sarah K." with five stars nobody gave.
- A stats row: "500+ happy clients, 98% satisfaction".
- A stock photograph of a smiling plumber, a camera on a table, or a
  handshake.
- "Book now", "Learn more" and "Contact us" side by side on the first screen.
- "Contact for pricing" when the owner gave you prices.
- A photographer's site and a plumber's site that are the same page with the
  nouns changed.
