Generative Assets · Industry demo guide
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 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.
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.
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.
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.
Every figure is anchor arithmetic, measured from the running page and cross-checked against an independently reimplemented oracle in the test harness.
| Item | Rule | Price |
|---|---|---|
| Remedial / sports session | 30 · 45 · 60 · 90 min | $70 · $95 · $120 · $170 |
| Dry needling | within session | +$25 |
| Cupping | within session | +$20 |
| Concession (seniors / students) | weekdays before 3pm, 60 & 90 min only | −$15 |
| Mobile home visit | 60 min, metro, travel & table included | $180 |
| Health-fund rebate | set by your fund — HICAPS on the spot | no number |
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.
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.
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.
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.
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.