Decisions — Bojana Hair Studio

Mode: draft-first, lead build. The business has not been contacted (2026-08-13/14). Per the

skill's lead rule, none of the choices below waited on a question: each is the option I would have

recommended, with the reasoning attached so the operator can override it in one edit.

---

Operator decisions (asked and answered, 2026-08-13)

| # | Question | Answer | Effect |

|---|---|---|---|

| O1 | Site languages | DE + EN | DE at / and canonical for local SEO, EN at /en/. Matches the suite default and the other Zürich salons in the portfolio. |

| O2 | Use her Google Business Profile photos in the draft | Yes, with a rights caution | 8 own-attribution photos ship; the third-party photo (Melissa Milani) was excluded before download. Rights work tracked in content/cautions.md + [T5]. |

| O3 | How far to take the lead build | Full lead pipeline | Styleguide → copy deck → build → private GitHub repo → Cloudflare draft preview (noindex + ribbon) → directory kit → registry + build report. |

---

D1 — Positioning: blonde specialist, and a person rather than a salon

The dossier's strongest asset is a 5★ review from Blonde Zurich GmbH, her former studio, calling

her "a fabulous blonde specialist". That is a third-party endorsement from a competitor-adjacent

business, which is worth more than any self-description we could write, and it is quotable verbatim.

Six of nine photos are blonde work.

The site therefore leads on blonde/colour work and speaks in first person singular. Every review

names Bojana; no photo shows a second chair. Writing "wir" would be the first false note a client

notices.

Risk, stated plainly: a specialist framing turns away the "just a trim" walk-in. For a

one-chair studio that is usually the right trade — a full head of balayage is worth several trims —

but it is her business decision, not ours. Flagged as the sixth question for first contact in

content/operator-notes.md.

D2 — Palette: eyedropped, and the one gate warning I am overriding

Every colour was sampled from her own photos with sample-colors.mjs; the audit trail is in

brand/styleguide.md § Where each colour comes from. Summary: graphite #2E3036 from the awning,

steel #4F6579 from the shopfront glazing and facade, clay-rose #B07A72 from the interior walls,

warm paper #FBF8F6 from the daylit ceiling.

check-distinctiveness.mjs initially warned four times. Two were fair and I fixed them: the accent

was the clay-rose, which sat 50 RGB units from rm-beauty-lounge and 58 from

institut-de-beaute — two warm mid-tones in the same portfolio. Moving the interactive colour to

the steel-blue cleared both, and improved the design: cool tone is literally what a blonde

specialist reaches for to kill warmth, so the accent now means something. The rose stays in the

palette as rose/blush doing decorative and field work, which is what a wall does.

Two warnings remain and are deliberate:

```

⚠ primary #2E3036 is within 39 RGB units of 'coiffeur-yanu-central' (#141A24)

⚠ primary #2E3036 is within 13 RGB units of 'silvia-jayet-reflexologie' (#2a302a)

```

#2E3036 is her awning. sample-colors.mjs returns #2C2E32 at 9.4 % of photo 02, with point

samples #272731/#353541. It is the one colour she actually paid a signmaker for. Every dark

neutral is within 60 RGB units of every other dark neutral, so the only way to clear this warning

is to stop using her signage colour — which is the opposite of what the checklist is for. I checked

the two flagged sites: coiffeur-yanu-central is a blue-black with an olive-gold accent and a

left-text-photo-right hero; silvia-jayet-reflexologie is a green-black with terracotta,

Cormorant Garamond, also left-text-photo-right. Nobody would confuse the three. Accent, fonts and

hero layout are all clear.

→ Logged as a suite lesson in the build report: the RGB-distance test cannot distinguish

dark-neutral *brands*, and near-neutral pairs (chroma below ~8 %) probably deserve a wider

threshold or a hue-aware comparison.

D3 — Light field, not the sixth dark salon

The category spec offers "moody dark" as one option and this portfolio has taken it six times

(andre-coiffeur, coiffeur-ali-barber, the-barber-shop-prilly, mad-the-barber-shop,

coiffure-bernina-gmbh, beauty-by-dilek). Her room is the opposite: one big window, white

ceiling, pale walls, daylight in every photo. A dark build would misrepresent the space *and*

converge with the portfolio. Graphite is used as banding — the awning — over a light photographic

field.

Secondary reason: the spec's most-repeated accessibility warning is that moody salon palettes fail

contrast. A light field makes that trap structurally impossible.

D4 — Typography: Instrument Serif + Schibsted Grotesk + Caveat

Neither of the first two appears anywhere in the 29-entry registry (which already contains Playfair

×2, Fraunces ×4, Jost ×2, Karla ×3). Instrument Serif is high-contrast and narrow — it carries a

display size without shouting, which is the "magazine typography" the category asks for. Schibsted

Grotesk is a Swiss-flavoured grotesque that stays out of the serif's way.

Caveat is used only for the wordmark, as the closest free match to the monoline handwriting on

her awning, and is flagged [TBD:] for replacement by her real logo as SVG ([T17]). Using a

lookalike script for a wordmark is a compromise, and it is marked as one rather than hidden.

D5 — Hero: awning-band-script-mark-photo-bleed-left

The registry's last five heroes are left-text-photo-right ×3, left-text-arch-photo-right,

centered-text-wide-arch-below. This build takes its structure from her actual facade instead: a

graphite band across the top carrying the script wordmark (the awning), a tall portrait photograph

bleeding off the left viewport edge (the window), and a narrow text column to its right, over a

graphite info strip (the second awning band). Photo-left is itself a deliberate inversion of the

portfolio's default.

D6 — Sitemap: no Team page, no Book page

Both dropped, with the reasoning in build/category-mapping.md. One stylist means a "Team" page

with one card, and no booking system exists to embed. Booking is phone-first (tap-to-call on her

mobile), with WhatsApp and a form as alternates. A booking page returns the day she picks a tool.

D7 — Prices: visible [TBD:] bands, not "Preis auf Anfrage"

No price list exists publicly — not on Google, not on a shopfront board. The category spec is

explicit that hidden pricing bounces clients fast, so hiding behind "Preis auf Anfrage" would be a

known-bad choice; inventing Zürich market rates would be worse. The draft ships the *structure* of a

price list with [TBD:] in each band, which doubles as the review prompt at first contact.

publish-preflight.mjs blocks these from production, which is the intended safety net.

D8 — Register: Sie, de-CH, no ß

Sie is the safe default for a solo professional serving an adult clientele in Zürich; switching to

du is one copy-deck pass if she prefers it. de-CH orthography throughout — Strasse, never ß.

D9 — Neighbour differentiation

coiffure-bernina-gmbh (already in this portfolio) is ~400 m away on the same tram corridor, same

postcode. Its build is black + wine, Gilda Display, dark-panel-text-left-no-photo. This build is

deliberately its opposite on every axis — light field, steel accent, Instrument Serif, photo-led

hero. Two salons this close must not look like the same agency's output.

D10 — Copy-deck section names

Agreed block names, consumed mechanically by the build (copy-deck.md asks for these to be pinned

here): hero, intro, specialty, services-teaser, gallery, quotes, visit, cta

(home); intro, approach, studio (about); bands, notes (prices); intro, groups

(services); intro, details, form (contact); items (faq); plus _shared.md for nav, footer

and button labels.

D11 — Draft-mode guards

noindex + a visible draft ribbon on every page while status: lead; the contact form has no live

delivery endpoint and says so; deployed to a preview Pages project, never a custom domain. The

aggregateRating schema is omitted deliberately (Google policy + preflight).