Generative Assets · Industry demo guide

How Coldwater Stone Co. was made

Coldwater Stone Co. is a fictional stone benchtop fabricator in O'Connor, WA — stone worked wet, the saw running cold water, the dust kept down. Its landing page has one job: get a kitchen renovator, builder or engineered-stone replacer to book a slab viewing & template. The audience is the customer standing at the slab rack; the prospect is the fabricator who should think "that could be my site".

Palette — argued from the slab rack

The shed at 11am: a honed marble face, wet basalt, a verde-alpi slab in the rack, iron-oxide banding in the granite. This ground plus a warm accent lives near the banned cream-and-terracotta default, so the line is held deliberately: the display face is carved roman capitals, not an editorial serif, the accent duty is carried by verde green (dimension lines, template marks, CTA), and oxide stays secondary — links, focus rings, active chips — with a darker oxide-ink derived for small text (the raw oxide measures ~4.8:1 on honed white; the ink token clears it with margin).

#F4F3EF honed whiteground — the honed marble face, warmer than gallery white
#2B2E30 basalt inkstructure & primary ink — wet basalt, the saw bed
#2E6B52 verde deepline/mark — the verde-alpi slab: dimensions, CTA
#9C5B33 oxide rustsecondary — granite's iron banding: links, chips; #7C4626 ink for small text

Type

Marcellus for display — inscriptional roman capitals, letterforms literally designed by chisels; the masthead and section marks read like an incised sign above a workshop door. Figtree carries body and UI, warm and legible at 16px+. Spline Sans Mono does the honest numbers — lm, mm, dollars — so every figure on the page reads like it came off a cutting ticket.

The Benchtop Studio — signature & implementation

The signature is a conversion tool: material chips (granite / porcelain / marble), a 2–8 lm stepper (0.1 steps), a 0–2 waterfall-end stepper, cutout chips (sink / cooktop / drainer grooves) and a 40 mm mitred-edge toggle drive a procedural SVG plan-view benchtop plus a front-elevation strip and a mono price card. Everything is drawn in millimetre space and scaled with s = min(0.2, 840/L) — a zoom-to-fit template drawing whose verde dimension lines always tell the true mm.

The stone faces are seeded procedural textures (mulberry32, deterministic per configuration): granite is a speckle field of ~1 rotated ellipse per 2,400 mm² (capped at 1,200) in basalt, oxide, quartz-light and mid tones; porcelain is a fine even dot grain with two faint near-straight printed-vein hints; marble is 3–4 quadratic random-walk veins with branch veinlets and one faint oxide micro-vein. A soft white sheen gradient clipped to the slab is the "light banding off the polished face" from the art direction. Cutouts are drawn to actual appliance scale (sink 780×430, cooktop 560×490, five 450 mm grooves) in a flow layout; if a short run can't honestly hold the chosen cutouts, the drawing says so ("tight run — the template confirms spacing") rather than pretending. Waterfall ends appear as dashed fold lines in plan and fold to the floor in the elevation — and on marble, vein strokes chase through the fold, echoing the review copy. A state probe window.__stonemason carries material, metres, toggles, subtotal, total, clamp state and form status on every interaction.

Pricing model — shape and anchors

All anchors pinned by the wave spec (20 mm stone, 600 mm depth, templated + fabricated + installed): granite $850/lm, porcelain $1,100/lm, marble $1,500/lm; waterfall ends +$750 each; sink +$180, cooktop +$160, drainer grooves +$220; mitred 40 mm-look edge +$140/lm as its own line when toggled; minimum job $2,200 — small runs clamp up to it with the reason stated on-card, which is also why the services grid's "vanity tops from $2,200" equals the studio's cheapest possible output (granite 2.0 lm = $1,700 → clamp). Engineered-stone replacements deliberately inherit the same per-lm meters — stated flatly on the card rather than invented as a separate gradient. The rest state (granite, 4.2 lm, one waterfall, sink) computes 4.2×850 + 750 + 180 = $4,500 measured from the running model, matching the spec's anchor arithmetic exactly — no correction needed.

Rest-state lineAmount
Granite · 4.2 lm × $850$3,570
Waterfall end × 1$750
Undermount sink cutout$180
Total, installed (measured)$4,500

Conversion decisions

Local SEO we'd implement for the real business

The demo page ships only honest WebPage schema naming it a demonstration — fictional LocalBusiness/Review markup in a real search index would be dishonest. For a real fabricator we would ship:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://coldwaterstone.com.au/#business",
  "name": "Coldwater Stone Co.",
  "description": "Stone benchtops — granite, porcelain and natural marble —
    templated, fabricated and installed across Perth.",
  "telephone": "+61 8 XXXX XXXX",
  "url": "https://coldwaterstone.com.au",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "O'Connor",
    "addressRegion": "WA",
    "postalCode": "6163",
    "addressCountry": "AU"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": -32.06, "longitude": 115.79 },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "07:00", "closes": "16:00"
  }],
  "priceRange": "$$$",
  "areaServed": "Perth metropolitan area",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9", "reviewCount": "180"
  },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "Real Customer" },
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "reviewBody": "Fed live from the review platform, never hand-written."
  }]
}
</script>

What would change for the real client

Iteration log

Pass 1 — Craft

Drove every control headlessly against an independently reimplemented pricing oracle (44 asserts: rest state, three scenarios including the $2,200 min-job clamp and the 8 lm/2WF/mitre upper bound, empty submit on a fresh load, filled submit, FAQ, steppers at their bounds) and took real screenshots. Found and fixed: (a) the min-job clamp row — a single td[colspan=2] is also its row's :last-child, so the price card's td:last-child{white-space:nowrap} made the whole clamp sentence unbreakable (~930px min-content) and blew the hero grid out whenever the clamp appeared; only the screenshot caught it — scoped the nowrap to td + td. (b) The depth "600" dimension label clipped off the left viewBox edge at full-width runs — rotated it −90°. (c) Cutout labels floated above the slab edge colliding with the length dimension — moved inside the voids (auto-shrinking with scale) and below the grooves with material-aware ink. (d) The 375px masthead wrapped both the wordmark and the phone to two lines — nowrap plus a size step-down. (e) A screenshot showed toggled-off chips still "pressed"; DOM said aria-pressed=false — the 150ms background transition caught mid-flight, a harness artifact, not a page bug.

Pass 2 — Depth

Enriched the signature: a soft sheen gradient clipped to the slab (the polished-face light banding from the art direction), marble veins now chase through the waterfall fold in the elevation strip — the second-read detail that echoes the Applecross review — and waterfall legs cast a floor shadow. Micro-interactions: the total row pulses when the price changes (skipped under reduced motion), chips compress 4% on press. Re-drove the full suite after each change: 44/44, zero console errors.

Pass 3 — Hardening

Chanel rule: removed the h1's double-rule ornament — the eyebrow dash and oxide review stars carry enough. Moved the Fremantle map label clear of the O'Connor base ring. Re-verified: 375px fold shows h1 + call CTA + trust chip without scrolling; sticky call bar sits in the bottom 140px with ≥44px targets; scrollWidth stays 375 through every studio state; reduced-motion renders the studio settled and priced with the entrance skipped; exactly one h1 per page; signature bounding box inside the first 750px at 1200×750. Final honest-numbers read: measured rest total $4,500 equals the spec's anchor arithmetic; the studio's cheapest output ($2,200 clamp) equals the services grid's vanity floor; guide figures re-read against shipped code.