Generative Assets · Industry demonstration 428
A page that prices a block of sessions, and refuses to price anybody else’s money.
Steadyline Exercise Physiology is a fictional Bentley practice. The single job of its landing page is to answer, in about ten seconds, the question every allied-health website in Perth answers with “fees on enquiry”: what does a block cost, and what do I need to bring.
The concept
Two accredited exercise physiologists, a two-room studio in Bentley and home visits across the southern suburbs. The audience is one of two people: someone holding a referral or a plan with no idea what it will cost them, or a support coordinator ringing on a participant’s behalf. Both want the same two facts, and neither can get them from a competitor’s site.
So the page publishes the figure the trade hides — and the hidden figure here is not the fee. It is that the fee does not change with the funding door. A self-funded client and a plan-funded client pay Steadyline exactly the same, which almost nobody in the sector states in public, and which the proof element lets you check yourself by clicking through four doors and watching the total sit still.
The proof element — “Which door are you coming through”
Three controls. The first is the door: a GP chronic condition plan, an NDIS plan, a workers’ comp or DVA claim, or no referral at all. The second is the block length, at one, four, six or ten sessions. The third is the mode: clinic, home visits, or an assessment followed by group classes. The arithmetic is one line:
total = (145 + homeSurcharge) + (sessions − 1) × followUpRate homeSurcharge = 40 for home visits, otherwise 0 followUpRate = 35 for the group class, otherwise 110 + homeSurcharge
The door is not in that formula, and that is the whole point. Below the total, three lanes draw the same block on one fixed 0–465 minute axis — the two modes you did not pick are priced in the same card, at the same size, at the same block length, so the option you rejected is visible beside the one you chose rather than buried in a paragraph.
| What | Figure |
|---|---|
| Initial assessment alone, clinic, 60 minutes | $145 |
| Four-session block, clinic | $475 |
| Six-session block, clinic — the rest state | $695 |
| Ten-session block, clinic | $1,135 |
| Six sessions with home visits | $935 |
| What the home visits actually add | +$240 |
| Assessment then five group classes | $320 |
| What moving to the class saves | $375 |
Every one of those figures is computed by check-w54.mjs from the four published anchors before the page was written, and re-measured out of the running page in all three passes. The sentence that costs the seller money is generated, not typed: at six clinic sessions the card says the class does this block for $375 less, and the page means it.
Why a fixed axis
The minute axis runs to 465 minutes — a ten-session block — whatever you pick. A four-session block therefore leaves the track visibly half empty, which is the second-read detail: the drawing shows you what you are not buying as well as what you are. Hour ticks under the lanes make that readable rather than mysterious.
Colour is never the only carrier
Each door changes its glyph, its word and its ground: a referral form, a plan grid, a claim clipboard, a payment card, tagged Referral, Plan, Claim and Self-funded. The chosen lane changes its ground, its border, its type weight, gains a ▶ marker and prints its price three points larger. Home visits get a leading travel tick per session; class sessions carry two pale bands for the other people in the room; the 60-minute assessment always carries a highlight cap so it reads as a different thing from the 45s.
What this page declined to publish
This is the site in the wave that sits deepest inside somebody else’s pricing, so the real-regulation carve-out did most of the work. Not one Medicare, NDIS, DVA, WorkCover or private-fund figure appears anywhere on either page, and the following were all considered and declined:
- Any rebate amount or schedule fee, and any statement of what a patient gets back.
- Any item number or billing code.
- Any hourly rate, cap or price-guide line from the national scheme’s published price arrangements.
- Any veterans’ or workers’ compensation payable rate.
- Any private fund benefit, annual limit or gap figure.
- Any entitlement rule at all — what a referral or a plan is worth in sessions, who qualifies, and the tests and thresholds a scheme applies to decide.
- Any claim about what exercise will do for a person — no outcome, no percentage, no risk reduction, no “prevents”. The page describes the service and says out loud that it does not promise results.
- Any before-and-after body imagery, drawn or otherwise. The only figure on the page is a session on a time axis.
Those numbers belong to Medicare, the NDIA, insurers and funds. They move, and a web page that freezes them is wrong the week after it ships. What the page prints instead is Steadyline’s own fee, and a block — sitting against the total, not in the FAQ — that says so plainly and asks you to bring the plan to the phone call.
The mechanical proof
A scan runs over the rendered text of all forty-eight control vectors, the rendered guide, and both HTML sources with scripts and styles stripped. It splits the text into sentences and fails any sentence that carries a scheme word alongside a digit, plus two dedicated patterns for item numbers and entitlement language:
SCHEME = /\b(?:medicare|ndis|ndia|dva|veterans['’]? affairs|workcover|worksafe|
workers['’]? comp\w*|private health|health fund|health insurer|
insurer|rebates?|bulk[- ]?bill\w*|schedule fee|item number|
price guide|benefits?)\b/i
ENTITLE = /you (?:are|'?re) entitled|entitles? you|covers? up to|allows? you \d+|
\b\d+\s+(?:funded|subsidised|subsidized|rebated)\s+sessions?\b|
\b\d+\s+sessions?\s+(?:a|per)\s+(?:year|calendar year|plan)\b|
claim(?: it)? back|you can claim|eligible (?:for|if|when)|
activity test|income (?:test|threshold)/i
ITEMNO = /\b(?:item|code)\s*(?:no\.?|number)?\s*\d{3,6}\b/i
Result: zero offending sentences on both pages. The scheme words do appear — they have to, because the refusal names them — but never in the same sentence as a number. The scan block directly above is the single exclusion, by id: a pattern that describes forbidden language is necessarily written in it. The scan is also negative-tested against three planted offences — a rebate amount, a subsidised-session entitlement and a billing item number — and catches all three, because a check that has never fired proves nothing.
Palette
Bone clinic paper and a deep plum band: warm-clinical rather than hospital-blue, and deliberately not the cream-and-terracotta or the near-black-and-acid-green that generated design falls into. Teal carries the funded pathway, plum the private one. Every hex and every ratio below is quoted from one row of contrast-w54.log, and no colour was minted during the build — the eighteen declared tokens covered every surface, including the map and the drawn lanes.
#F8F5F1The ground. Ink measures 15.67:1 on it, muted 7.14:1.#EBE4DDCards and alternating bands. Ink 13.52:1, muted 6.16:1.#3B2B4AButtons, sticky bar, Sapience band. Paper reverses at 11.85:1.#1E1B20Body and figures. Also the map label, 14:1 on land.#57505CSecondary copy, 7.14:1 on paper. Not licensed on the two lit doors.#0F5750The funded pathway, 7.73:1 on paper and 6.6:1 on the funded door.#6E2947The private pathway, 9.33:1 on paper, 8.01:1 on the private door.#12695FThe chosen lane’s session blocks, 6.02:1 on paper.#8E3459The refusal border and the error state, 5.99:1 on panel.#716A76Control borders and the unchosen lanes, 4.14:1 on panel, 4.8:1 on paper.#D9E7E4The lit ground for the three funded doors.#EFE1E6The lit ground for “paying myself”.#E2DDD6The three doors you have not picked.#436A6CCoast, rivers, suburb dots and the visit ring, 4.91:1 on land.One correction the log forced during pass 1: the control borders were originally doorEdge #9A9089, which the sweep declares forbidden on panel at 2.48:1 — and every input, chip and door on this page sits on a panel ground. They moved to field #716A76, which the same file licenses at 4.14:1 there.
Two reversed pairs are worth naming, in W50’s vocabulary: the pale caps drawn inside the session blocks are paper over tealMark and paper over field. Contrast is symmetric, so those reuse the identical measured rows — 6.02:1 and 4.8:1 — rather than introducing an unmeasured colour.
Type
Newsreader for headings: a calm reading serif with an optical-size axis, because this is a health page for a person who may be worried, not a gym page. Inter for everything else, with tabular numerals on every price so the three lane totals line up in a column and a changing figure does not shuffle the layout. The scale is deliberate rather than arithmetic: 11.5 for the control labels, 13–14 for chips and lists, 16–17.5 for body, a clamped 31–52 headline, and one 36–46 serif total that is the largest thing on the page after the headline.
Technique
No libraries, no build step, no raster images, both pages self-contained and under 70 KB. The lanes are inline SVG rebuilt from state on every change; the map is hand-plotted SVG; everything else is CSS.
The load reveal is wall-clock only. Progress is (performance.now() − start) / duration against a stamp taken once, never a per-frame delta accumulated into a counter — a capped accumulator produces a near-start-state preview in a headless renderer that only services a request-animation-frame when a frame is asked for, which is exactly how the seven-second thumbnail is captured. Hiding the tab freezes the loop and shifts the start stamp forward on return, so nothing jumps. Reduced-motion draws the settled frame immediately.
The desktop layout is one grid with named areas. The mandated stack order is the mobile one — masthead, hero, services, proof element — and at 900 px the areas re-lay to "hero proof" / "svc proof", putting the answer beside the headline where a thumbnail can see it, with the services grid filling the left column underneath. The DOM order never changes.
window.__exercisephysiology exposes the live inputs and outputs as plain numbers — door index, session count, mode index, all three mode totals, the home premium, the class saving, the minute total, the floor and a settled flag — so the passes and the wave sweep read state instead of scraping text.
Conversion decisions
Why this converts
The primary call to action sits directly under the headline and again in a bar fixed to the bottom of every phone screen, so the two things a worried caller wants, a price and a phone number, are never more than a thumb away. The form asks five things and four of them are what the practice actually needs in order to ring back: a name, a phone number, a suburb, and which funding door you are coming through. The proof element answers the one question this industry refuses to answer in public, which is what a block costs, and it answers it in the same breath as the sentence that costs the practice money, because the class does the same six sessions for $375 less. The trust strip is three numbers rather than three adjectives, since $145, $110 and one working day can each be checked and “caring, professional, experienced” cannot. And the block headed “what we will not print” sits against the total rather than in the FAQ, because the business that tells you what it does not know is the one you believe about what it does.
Field by field
- Name, phone, suburb — the minimum to return the call and to know whether a home visit is even possible.
- Which door — the single field that decides who gets invoiced, and it carries a “not sure yet” option because that is a real answer and refusing it loses the enquiry.
- Clinic or home — a scheduling fact, not a sales question.
- What you would like to be able to do — phrased as a goal rather than a diagnosis, with a hint asking people not to send test results through a web form.
The confirmation is local: no network, no fake round-trip, a designed panel that names a callback window and says plainly that this is a demonstration and nothing was sent anywhere.
The three passes
Pass 1 — Craft
- The proof card ran 1,415 px tall beside the hero, which put the total at y 952 and left only 65 px of the lane drawing inside the 750 px thumbnail frame. Cut the card’s intro paragraph, merged two control labels into one, went four-across on the doors at desktop, tightened the lane pitch from 54 to 50 px and the lane height from 30 to 26, and rewrote the neutrality line so it fits one line. The total now finishes at 524 and 164 px of the drawing sits in frame, with all three lane prices visible.
- The desktop grid was
"hero proof" / "svc svc", which stretched the hero row to the card’s height and left roughly 660 px of dead paper between the headline and the services grid. Re-cut to"hero proof" / "svc proof". - The masthead call to action wrapped to two lines at 375 and pushed the masthead to 78 px. It now carries a short label under 640, and both label spans are asserted to match something.
- The hero eyebrow ran to two lines at 375. Cut from “Bentley & the southern suburbs” to “Bentley”, which also bought 18 px above the fold.
- Every control border was
doorEdge #9A9089against a panel ground, a pair the contrast log marks forbidden at 2.48:1. Moved tofield #716A76at 4.14:1. Placeholder colour was the browser default; pinned to muted at 7.14:1. - Drove the estimate through all four doors at 1, 4, 6 and 10 sessions in all three modes and read the totals off the probe. Drove the form empty and filled.
Pass 2 — Depth
- Added the fixed 0–465 minute axis and the hour ticks, so a short block visibly leaves the track empty. This is the second read: the drawing shows what you are not buying.
- Gave the three lanes texture rather than only colour — a leading travel tick per home visit, two pale companion bands on every class session, and a highlight cap on the 60-minute assessment so it reads as a different object from the 45-minute follow-ups.
- The chosen lane now changes ground, border, type weight, price size and gains a ▶ marker; each door changes glyph, word and ground. Nothing on the page is signalled by hue alone.
- Rewrote the neutrality sentence to regenerate per mode and always name a figure that costs Steadyline money: the class saving at the clinic, the home premium on a visit, and an acknowledgement on the class itself that we said it would be cheaper.
- Added arrow-key movement inside each of the three radio groups, which re-runs the estimate as focus moves.
- Re-derived the reveal from
performance.now()deltas against a single start stamp, withvisibilitychangeshifting the stamp, replacing what would otherwise have been a per-frame accumulator. - Drove all forty-eight vectors again and asserted that the three lane prices always equal the three mode totals for the current block length.
Pass 3 — Hardening
- The full drive: 4 doors × 4 block lengths × 3 modes = 48 vectors, each asserting the probe total, the printed total and all three lane prices. The door is price-neutral on all forty-eight, which is the claim the page makes in three separate places, and no vector prices below the $145 services-grid floor.
- The form three ways: empty (no confirmation, four fields marked bad), junk in the phone field — the literal string ring me maybe — which the browser rejects, moves focus to, and refuses to confirm, and good data, which confirms locally. The phone
patternis compiled with the v flag in the checker, not eyeballed, because a class like[0-9 ()+-]is valid in Node and dead in Chrome. - Negative test: the 375 fold assertion was grown a 520 px sticky bar and watched to fail on the trust line, then restored. A check that has never fired is not evidence.
- Selector match counts asserted for every rule whose job is to hide or move something at a breakpoint — the optional map suburbs, the sticky bar, the masthead phone, and both masthead label spans. The map class sits on each drawn element, never on a parent group, and the optional suburb dots are hidden with their labels so no orphan dots remain at 375.
- The scheme scan above, over forty-eight rendered states, the rendered guide and both sources.
- Placement asserted: the refusal is inside the proof card, directly under the total and the lanes, is not inside the FAQ, and no copy of it appears there. That assertion is what stops a later pass tidying it into the small print.
- One ornament removed (the Chanel rule): the third control label, “3 · Where it happens”. Two labelled steps and an obvious third read better than three.
Local SEO we would implement for the real practice
This page ships WebPage and CreativeWork only, both naming it a demonstration. Marking up a fictional practice as a real one would put invented data into a real index, so the markup a real client would get is shown here as a sample instead of being emitted. Note what is not in it: no fee is marked up as an offer, no scheme figure appears, and the address is locality and region only until the practice confirms the suite it wants published.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": ["LocalBusiness", "MedicalBusiness"],
"name": "<the practice’s registered trading name>",
"telephone": "<their real number>",
"address": {
"@type": "PostalAddress",
"addressLocality": "Bentley",
"addressRegion": "WA",
"postalCode": "6102",
"addressCountry": "AU"
},
"areaServed": ["Bentley", "Cannington", "Willetton", "Riverton", "Melville"],
"openingHoursSpecification": [ /* the real roster */ ],
"aggregateRating": { /* only once real reviews exist, from the real feed */ }
}
</script>
Alongside it: a verified Google Business Profile with the real category and real photographs, the practitioners’ names on the page, and the reviews pulled live from the profile rather than typed into the HTML. The three quotes on the demonstration page are demo copy, labelled as such, and deliberately not marked up.
What would change for a real client
- Their practice-management system. The enquiry form would post into whatever they already run — Cliniko, Halaxy, Nookal, Coreplus or Power Diary — rather than into a mailbox somebody has to remember to check.
- Real availability. The “we ring back within one working day” line becomes a live next-appointment slot read from that system, which is the single strongest thing an allied-health page can put above the fold.
- Their claiming and invoicing setup — the terminal or platform they already use at the desk — wired to the door the enquirer selected, so the front desk knows before the call who is being invoiced.
- Their photographs and their practitioners. Everything on this page is drawn because the collection is procedural; a real practice has a room and two faces, and both belong here.
- Their fee list as data. One table the practice edits, feeding the services grid, the estimate and the schema at once, so a price rise is one edit and not five.
This is a demonstration build by Sapience Analytics. Want one pointed at your customers?
Steadyline is not a real practice — the page is. A prospect holding a referral gets a total, a checklist and a plain refusal in about ten seconds, in a sector where every competitor says “fees on enquiry”. That gap between what buyers ask and what an industry publishes is the same in most trades. We build the page that closes it.