Generative Assets · Industry demo guide

How the Stillwater demo was made

Stillwater Remedial Massage is a fictional Mount Lawley clinic — a landing-page demonstration for the allied-health trades, designed & built by Sapience Analytics. Its audience is the person whose neck won't turn; its single job is a booking enquiry that arrives with treatment, duration and price already chosen.

The concept

The wave's calm dark site: an evening treatment room, not a day spa brochure. Deep green-charcoal ground, eucalyptus-oil linework, warm amber marks like low lamplight — and clinical honesty underneath the calm. Every price on the page is computed live; the one number we refuse to print (your health-fund rebate) is refused deliberately, on the page, in words.

Palette — the treatment room at evening

Dusk green-charcoal#232823 — the page ground. A room with the lights low, not a black void.
Linen#EDE9E0 — body ink, 12.6:1 on the ground. Towels and sheets.
Lamp amber#C99B4E — CTAs and the stroke-flow highlights. Marks and buttons, never small text.
Eucalyptus#8FA68E — rules, links and the figure's muscle-group linework.

The ink/line split is deliberate: amber carries marks and surfaces (buttons get dark text on amber at ~7:1), eucalyptus carries structure, and all running text is linen or muted linen (#B9B3A4, 7.1:1) — the mid-tone accents never set small type.

Type

Fraunces (600, high optical size) for display — soft warmth with a clinical spine, exactly the register of a good remedial clinic: kind, but it will find the spot. The display moment is the headline itself: "Where the tension actually is — your lower back", where the italic amber focus-area name swaps live as the planner's chips change. Inter carries body, forms and the ledger — legible at 16.5px on a dark ground, tabular numerals for prices.

Signature — the Treatment Planner

An SVG back-view figure built at runtime from mirrored point data: every outline and muscle-fibre path is defined once for the left side as quadratic curves and reflected across the spine, so the figure is symmetric by construction. Focus-area chips light the selected region's muscle groups with stroke-flow lines — amber dashes (52% of each path's measured length) travelling the fibre direction via stroke-dashoffset in a single rAF loop. The frame delta is clamped at zero and capped (dt = min(max(now−last,0)/1000, .05)), each fibre pulses on its own phase with an opacity floor of 0.62 — never invisible at any capture instant — and the loop pauses when the tab hides.

State changes are race-safe by construction: chip handlers bump an animation token and rebuild the fibre set synchronously before the next frame, so no in-flight animation ever closes over a stale region's paths — verified with rapid-fire multi-click drives. The first render earns a staggered entrance (~1.5s birth window); every subsequent chip swap redraws snappy (0.35s cap). Duration, add-on and concession chips reprice the ledger instantly; focus and duration pre-fill the booking form; and the whole scenario is exposed on window.__massage with a settled flag for testing. Reduced motion renders the fibres as static visible strokes and skips the loop entirely. For accessibility the figure is mirrored as a plain-text focus-area list beside the planner, every control is a real button (keyboard-driven in testing, Enter and Space), and the ledger total is an aria-live region.

Honest pricing

Every figure is anchor arithmetic, measured from the running page and cross-checked against an independently reimplemented oracle in the test harness.

ItemRulePrice
Remedial / sports session30 · 45 · 60 · 90 min$70 · $95 · $120 · $170
Dry needlingwithin session+$25
Cuppingwithin session+$20
Concession (seniors / students)weekdays before 3pm, 60 & 90 min only−$15
Mobile home visit60 min, metro, travel & table included$180
Health-fund rebateset by your fund — HICAPS on the spotno number

Conversion decisions

Local SEO we'd implement for the real business

This demo page ships only demonstration schema (WebPage/CreativeWork) — fictional structured data in a real index would be dishonest markup. For a real clinic we'd ship the block below. Schema.org has no massage-therapy business type, so the correct top-level type is MedicalBusiness — the closest actual organization subtype. (Tokens like Physiotherapy look plausible but are MedicalSpecialty enumeration values, not business types — using one as the organization @type is a classification error that costs you the rich result.)

{
  "@context": "https://schema.org",
  "@type": "MedicalBusiness",
  "name": "Stillwater Remedial Massage",
  "description": "Remedial and sports massage clinic in Mount Lawley,
    Perth. HICAPS health-fund rebates processed on the spot.",
  "url": "https://stillwaterremedial.com.au",
  "telephone": "+61 8 9000 0309",
  "priceRange": "$70–$215",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Beaufort Street",
    "addressLocality": "Mount Lawley",
    "addressRegion": "WA",
    "postalCode": "6050",
    "addressCountry": "AU"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": -31.934, "longitude": 115.871 },
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Friday"], "opens": "08:00", "closes": "17:00" },
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday","Wednesday","Thursday"], "opens": "08:00", "closes": "20:00" },
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday", "opens": "08:00", "closes": "13:00" }
  ],
  "areaServed": ["Mount Lawley","Highgate","North Perth","Menora","Inglewood",
    "Maylands","Bedford","Bayswater","Dianella","Yokine","Coolbinia","Perth"],
  "aggregateRating": { "@type": "AggregateRating",
    "ratingValue": "4.9", "reviewCount": "87" },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "P. Sharma" },
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "reviewBody": "Three sessions and I can shoulder-check again."
  }]
}

Beyond schema: a Google Business Profile with service-level categories, suburb-scoped service pages, review acquisition wired to the booking flow, and FAQ markup on the questions the clinic actually gets asked.

What changes for the real clinic

The demo's form becomes a live diary. We'd integrate Cliniko or Nookal (the practice-management systems most WA remedial clinics already run) so the planner's focus + duration selection lands directly in the booking diary with the right appointment type and length; SMS reminders and intake forms come with them. The HICAPS terminal stays the source of truth for rebates — the site's job is the honest declaration, the terminal's job is the number. Add Google Reviews feeding the testimonial strip, and the clinic's real photography replacing exactly nothing structural: the procedural figure stays, because it's the thing clients remember.

Iteration log

Pass 1 — Craft. The fold had the copy and none of the signature.

The first 1200×750 capture showed the hero plus only the planner's top edge (planner top at 521px, the lumbar stroke-flow at ~759px — below the fold). Tightened the hero (smaller display clamp, wider measure, trimmed lede) and the figure column: planner top moved to ~494px and the amber lumbar flow, the focus chips and the $120 ledger with its HICAPS line all entered the thumbnail frame. Also fixed an invalid <dl>-inside-<p> nesting in the hours block and vertically centred the figure in its panel.

Pass 2 — Depth. Making the fibres read as strokes, not ticks.

At rest the lumbar dashes (42% of path length) read as scattered ticks; lengthened the erector runs and raised the dash fraction to 52% so the flow reads as massage strokes travelling the fibre direction. Gave the region glow per-region opacity (the full-body ellipse at .09 dominated the figure; now .045). Second-read details: the headline's focus-area name swaps with the chips, full body lights a thoracic mid-back group the three single regions never show, and the form's focus chips drive the planner back — one shared state.

Pass 3 — Hardening. Drive everything, measure everything.

61-assert headless suite: rest state $120 with declaration; every worked example against an independently reimplemented oracle (215 / 200 / 155 / 105 / 95 / 70); concession disabled with visible reason on 30 and 45 and stripped from the price on step-down; two rapid-fire multi-click bursts (state coherent, fibre set correct, zero errors); keyboard drives (Enter/Space on chips and switches, focus-visible outline asserted); empty submit leaves the confirmation panel hidden, valid submit shows it with the declaration; 375px scrollWidth clean on both pages with the masthead measured edge-to-edge (wordmark right 136px vs call-link left 193px); reduced-motion renders static visible fibres and settles immediately; live JSON-LD allowlist-clean; zero console errors. Native-resolution screenshot review then caught what no assert models: the map's ~10-minute ring label colliding with Dianella and Highgate crowding the clinic marker (labels re-seated), and a trust-strip item duplicating the hero's evening-appointments signal — removed, one ornament fewer.