Decisions
Lead build — the business has not been contacted. Per the skill's lead-mode rule, every choice below that would normally be a client question instead got a recommended default, applied, and recorded here for review once contact is made.
Operating mode
- Draft-first. Build a full draft site with visible
[TBD:]placeholders where a fact is missing, deploy it with a draft ribbon +noindex, and use it as the outreach artifact itself. Rationale: this is a prospect, not a client — there's no one to gate on yet, and a working draft is a stronger opener than a proposal doc.
Category
- Mapped to
hairdresser(Google typehair_salon), with an explicit deviation note inbuild/category-mapping.md: this is a unisex salon with barbershop roots (men's grooming + women's colour/cut), not a men's-only barbershop, based on the review sample.
Brand / visual identity
- Palette derived from the business's own Google Places photos, not from category vibes: warm off-white walls, near-black chairs/fixtures, a warm-oak floor, and — the chosen differentiator — a dusty-rose velvet accent chair, deepened to
#8F5866as the primary brand color. Seebrand/styleguide.md"Distinctiveness note" for full reasoning. - Explicitly avoided the gold/brass-on-dark-charcoal barbershop look, even though the source photos do contain brass (vintage cash register, gilt mirror frame), because the project registry (
portfolio/_registry.json) already has four hairdresser/barber sites leaning heavily on that exact palette (andre-coiffeur, coiffeur-ali-barber, the-barber-shop-prilly, lr-coiffure-pully). Brass/oak kept only as a secondary accent token. - Typography: Newsreader (headline) + Work Sans (body) — checked against the registry, neither font is used by any existing portfolio site, hairdresser or otherwise.
- Hero layout:
rose-panel-photo-right-light— a bright, light-toned hero, chosen specifically to differ from the dark-photo-scrim hero pattern several sibling hairdresser sites already use.
Voice / language
- Primary locale: fr (Prilly, Vaud) with an en secondary locale, per the multilingual default (local language + EN) — not confirmed with the owner. TODO.md T6 asks the owner directly once in contact; languages actually spoken in-salon may differ from what's assumed here.
- Register: *vous*, warm but not informal — a default guess for a first-time-visitor-facing site; flag for owner confirmation (many small Swiss salons prefer *tu* with regulars — this shows on the public site to strangers, so *vous* is the safer default).
Pricing & claims
- No prices published, despite reviews mentioning specific numbers (CHF 23 combo, CHF 78 subscription, CHF 50 women's cut) — those are client-reported and dated (one explicitly "2024 price"), not operator-confirmed. Site shows "sur demande" / contact for current pricing. See
content/cautions.md. - No certifications, training, or product-brand partnerships claimed — none confirmed.
Conversion mechanics
- Primary CTA: call + contact form, not a booking-platform embed — no booking platform found in the dossier or reviews. Sticky mobile CTA: yes (tap-to-call), per category spec.
Photos
- Draft site uses the business's own 10 Google Places photos as placeholders (downloaded to
content/assets/source-photos/) — real photos of the actual salon, better than stock, but still flagged incontent/cautions.mdas pitch-only pending the owner's own photo set and explicit rights confirmation before any real go-live.
Form access keys (phase 2 build, agent-facing follow-up)
- Main site contact form (
site/src/components/ContactForm.astro, Web3Forms Tier 1): wired
with a placeholder access key (YOUR_ACCESS_KEY_HERE), not a working one — there's no
operator email yet to create a real Web3Forms key with, and fabricating a working key was
explicitly out of scope. Before go-live, create the real key with the salon's own email
(once contact is made) and swap it in; documented in site/README.md.
- Dossier reply form (
site/src/config.mjs→ANSWER_FORM.email): set to
a_jayet@icloud.com (the agent operator), not the salon's — this surface
(/dossier-scb7prilly/) is agent-facing scaffolding for Alexia to receive facts back, not a
client-facing form, so it doesn't need the salon's own address at all.
Distinctiveness check adjustment
check-distinctiveness.mjs(compared against the 5 most recent client sites) flagged the original accent#B08A5Eas within 58 RGB units of two beauty-salon sites' accent/primary colors (rm-beauty-lounge, institut-de-beaute-si-j-etais-moi-a-lutry) — different category, but close enough to flag. Nudged the accent to#9A8264, which is actually a closer match to the raw photo-sampled floor tones (#928b73,#b6aa9c) than the original pick, and clears all three flagged distances. No hairdresser-category overlap was flagged — the primary distinctiveness goal (not looking like the portfolio's other barbershop sites) is met.- Also had to symlink
~/Projects/_registry.json→~/Projects/website-builder-suite/portfolio/_registry.jsonforcheck-distinctiveness.mjs/project-status.mjs/registry-update.mjsto find the registry at all — those scripts hardcode<parent-of-project-dir>/_registry.json, but this operator's registry lives inside the website-builder-suite repo instead. Worth a suite-level fix (flagged in the build report) so future runs don't need this workaround. - After the nudge, re-running the check still shows 2 soft warnings: accent
#9A8264within 48 units ofsilvia-jayet-reflexologie(#8a5e48), and primary#8F5866within 58 units ofinstitut-de-beaute-si-j-etais-moi-a-lutry(#8c6b2f) — both different categories (reflexology, beauty salon), and the tool itself frames these as advisory, not blocking. Accepted rather than chased further: warm-neutral/earth accents will always sit near *some* existing site in a ~19-site portfolio, the primary distinctiveness goal (no overlap with sibling hairdresser sites) is fully met, and the swap test passes — photography, hero layout (rose-panel-photo-right-light, not reused by any recent site), and typography (Newsreader/Work Sans, unused elsewhere) are all distinct from both flagged neighbors.
Publish scope (this run)
- Per the skill's own guardrail ("don't push to GitHub or deploy without the operator's go-ahead") this refers to Alexia (the person running this build), since the business itself is not yet in contact. Phase 1 preview (styleguide + dossier) and the phase 2 site preview will each be offered to Alexia for a go/no-go before any GitHub repo creation or Cloudflare Pages deploy.