Generative Assets · Industry demo build notes

How Deepshine Mobile Detailing was made

A fictional Osborne Park mobile detailer, built as a conversion demonstration: one landing page whose single job is a booking enquiry with the package, vehicle size and add-ons already priced. This page documents the design decisions and the build.

Concept

Deepshine's customer is selling a car this month, or owns a dual-cab that has had a hard year, or has watched black paint go grey with swirl. The page answers the three questions that decide the call — what does it cost for my car, do I need to be home, will it fix my problem — and the Panel Board answers the first one before a word is read. It is the wave's dark site: gloss black under LED strips, the drawn car's paint reading as wet reflection.

Palette

#17181Cgloss black — page ground
#E9EAEEpanel white — body ink, 14.6:1
#43B0A5beading teal — CTAs, gloss sweep
#8A93A5brushed alloy — car linework, rules

Every colour is argued from black paint under workshop lights: the ground is the paint, the white is the LED strip, the teal is a beading droplet after the wax, the alloy is the trim. Per the collection's ink/line split, the teal carries lines, chrome and CTAs — body text on dark is always the panel-white ink (14.6:1), and muted copy runs #A7ACB8 (≥7:1 on every panel it sits on). No backdrop-filter anywhere on conversion chrome — headers, sticky bar and cards use solid fills, because headless Chrome (which renders the collection's thumbnails) composites blur differently.

Type

Sora 600/700 for display and prices — machined geometry that suits panel gaps and dimension callouts; the display moment is the package price set at 38px inside the price badge as the gloss sweep crosses the door. Inter for everything else: body 16.5px, form labels, chips — a workhorse that stays legible at 13px on the ledger rows.

The signature — the Panel Board

An SVG car side profile whose body is generated from a parametric geometry table: four vehicles (hatch, sedan, SUV, dual-cab) share one outline builder that takes nose, tail, beltline, roofline, sill, wheelbase and rear-treatment parameters — the dual-cab grows a tub and tray, the SUV lifts its roofline and rides on 48px wheels, the hatch pulls its tail in behind a steep rear glass. Every panel the selected package covers is a closed path in a clip-path union; a skewed gradient band — the gloss sweep — travels the covered set left to right at 118 px/s (62 px/s for correction), lighting each panel teal as it crosses and leaving a tick at the panel's centroid.

Package semantics are drawn, not just priced: the wash sweeps paint only; the full detail adds glass, wheels and the seats visible through the side glass; the interior deep clean works through the glass and leaves the paint alone; correction runs a slower two-pass cut over a swirl pattern-fill that fades 0.5 → 0.22 → 0 behind a rotating buffing head. The sweep's opacity floor is 0.55 (0.75 ± 0.2 sine), so the signature is visibly alive at any capture instant, and the computed price lives on the car — a 220×92 badge on the front door whose figure is the full total, add-ons included.

Engineering guards from the collection's playbook: the rAF delta is clamped at zero and capped at 50ms; chip handlers bump an animation token before the state swap so an in-flight rebuild can never run against stale geometry; first draw gets the entrance stagger (26ms/element, 1.2s cap) while every subsequent chip tap redraws snappy (9ms, 480ms cap) behind a firstDraw flag; reduced motion renders a settled static frame — every tick shown, the band parked mid-door at 0.8 opacity. State is probed at window.__detailing with a settled flag.

Honest pricing

The whole board is a pinned 4×4 matrix plus three flat add-ons — no derived factors, no rounding decisions. The measured rest state is $430 (full detail $370 dual-cab + $60 pet hair), and the board's cheapest output ($80 hatch wash) equals the services grid's "washes from $80" floor. Mobile service is a deliberate flat statement — no callout line, no travel meter, stated on-card. Ceramic coating is the designed price-less state: quoted after a paint inspection, with the reason on the page.

PackageHatchSedanSUVDual-cab
Maintenance wash & wax$80$90$110$120
Full detail$260$290$340$370
Interior deep clean$190$210$250$270
Paint correction + sealant$520$580$660$700
Add-ons, live in every cell: pet-hair removal +$60 · engine bay +$70 · headlight restoration (pair) +$90

The verification harness reimplements this matrix as an independent oracle and drives all sixteen package × size cells plus every add-on toggle against the displayed badge, ledger and probe — 94 assertions, plus a rapid-fire eight-click drive with no settle between clicks to hunt swap races.

Conversion decisions

Iteration log

Pass 1 — Craft

Found a real deadlock: add-on toggles bumped the scene token, so a toggle fired inside a redraw's settle window left the settled flag false forever — scoped the token to scene-rebuilding controls only (add-ons change price, never geometry). The hatch silhouette read as a notchback sedan — pulled the tail in 40px and steepened the rear glass. The bonnet's tick sat on the front wheel arch; moved it up to the shut line. The wash caption said "paint only" while the services grid promised wheel faces — rewrote the caption so the sweep and the service stop arguing. Widened the price badge to 220px and dropped its sub-line to 11.5px so "interior deep clean · suv · 1 add-on" fits.

Pass 2 — Depth

Correction now shows its tool: a rotating buffing head rides the sweep at beltline height, cross-spokes spinning at 300°/s, and the swirl pattern clears behind it in two passes. Added the second-read detail: when a panel completes under wash or full detail, three beading droplets spawn on the panel and fade — the brand's droplet mark, made literal. Confirmed the dual-speed redraw: entrance choreography once, 480ms-capped snappy redraws on every later chip tap.

Pass 3 — Hardening

375px masthead checked explicitly — wordmark right edge vs call-button left edge, with the nav and header CTA folded away and the tel link icon-only. Sticky bar sits inside the bottom 140px with tap targets ≥50px. Reduced motion renders the settled frame with no loop running. Phone pattern written v-flag-safe (escaped specials) and proven by the zero-console assert. Chanel rule: removed the teal floor-glow ellipse under the car — the reflection line carries it alone. Full harness: 94 assertions green, zero console errors, rest badge and board both inside the first 750px at 1200 wide.

Local SEO we'd implement for the real business

This demo page ships only demonstration schema (WebPage + BreadcrumbList) because fictional structured data in a real index is dishonest markup. For a real detailing client we'd ship AutoWash — the closest LocalBusiness-family subtype schema.org offers for detailing (there is no Detailer type) — plus a genuine review feed:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "AutoWash",
  "name": "Deepshine Mobile Detailing",
  "description": "Mobile car detailing and paint correction across metro Perth.",
  "telephone": "+61 8 XXXX XXXX",
  "url": "https://deepshine.example.com.au",
  "areaServed": { "@type": "City", "name": "Perth" },
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Osborne Park",
    "addressRegion": "WA",
    "addressCountry": "AU"
  },
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
    "opens": "07:00", "closes": "17:00"
  },
  "priceRange": "$80–$700",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9", "reviewCount": "180"
  },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "Real customer" },
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "reviewBody": "Pulled from the live Google Business Profile feed."
  }]
}
</script>

Plus suburb-level service pages for the highest-intent corridors, GBP posts fed from completed jobs, and before/after photo schema on real work.

What changes for the real client

Their paint, their photos: the procedural car swaps for before/after galleries of real corrections. The booking form posts to their calendar — for detailers that's Urable or Squeegee, or ServiceM8/Tradify where they run a broader mobile operation — with SMS confirmation and a deposit link for correction bookings. Reviews pull live from their Google Business Profile. The Panel Board stays: it is the quote calculator their competitors make you call for.

Techniques