Generative Assets · Industry demo build notes

How Chalkline Pest Control was made

Chalkline Pest Control is a fictional Perth pest control operator — inspections and treatments, based in Morley, metro-wide. The page has one job: get a homeowner who heard something in the roof to book a treatment or a termite inspection. The direction is field-guide precision — a naturalist's calm applied to the enemy, zero panic marketing.

View the site Collection index

Palette — chalk, gum, and the enemy colour

Chalk #F5F3EBGround. The chalk line itself — calm, clinical, light.
Gum green #22342AStructure & primary ink. The eucalypt canopy every Perth backyard fights.
Threat ochre #B24A22Line/mark only — pest artwork, active galleries, threat highlights. The treated state never wears it.
Inspection slate #476E85Secondary — links, form focus, and the booked/treated state. The cool colour of a job done.

Per the ink/line split, ochre is never body text; copy runs in gum green on chalk (≈12:1), secondary copy in a derived ink #57655C (≈5.6:1), and link text in a darkened slate #38596D (≈6.5:1). Ochre appears as artwork strokes and one card heading at display size.

Type

Barlow Semi Condensed (500–700) carries the display voice — van-signage utility, field-manual headings, the small-caps zone labels inside the cutaway. Mulish handles body and UI at 16px+ — plain, legible, unpanicked. The typographic bravery moment is the field-guide card: the pest's name set large in ochre over a ruled specimen table, exactly like a plate caption in a naturalist's handbook.

Signature — the Cutaway House Inspector

A procedural SVG cross-section of a Perth home (760×560 viewBox): gabled roof void, kitchen with kickboard, stumped subfloor, perimeter garden beds, and a timber fence line. Five tappable zones (SVG <g role="button"> with keyboard handlers, mirrored by chip buttons for mobile and accessibility) each reveal that zone's resident pest drawn in threat ochre: rats tracking the roof void, German cockroaches behind the kickboard, termite galleries climbing a stump, coastal brown ants breaching the perimeter, red-backs on the fence rails.

The draw is done with pathLength="1" + stroke-dasharray animation — the mud lead literally climbs the stump. At rest the subfloor is pre-selected with a 12-second intro draw, so the static thumbnail catches the termite lead mid-climb; any interaction drops to a 1.4s draw. Pest groups toggle via a CSS class, never the hidden IDL property — SVG groups don't have one (a W13 lesson), and the stylesheet keeps the [hidden]{display:none !important} guard for the HTML form/confirmation swap.

Each zone surfaces a field-guide card: what it usually is in plain language, the treatment, an honest price that must equal the services grid floor for the same treatment ($189 general / $165 rodent / $275 termite inspection), and the season it peaks. "Book this treatment" pre-fills the enquiry form with the zone scenario. After a successful submit, a slate "Booked" badge lands on that zone and its outline turns solid slate — the treated/scheduled state deliberately never wears ochre. Second-read detail: a tiny bee near the garden bed opens a card explaining we refer bees to a swarm collector, never treat them. Live state is exposed at window.__pest (zone, pest, price, season, form status, prefill, booked).

Conversion decisions

Local SEO we'd implement for the real business

This demo page carries only WebPage schema naming it a demonstration — fictional structured data in a real index is dishonest markup. A real Chalkline would ship LocalBusiness + Review schema like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "PestControlService",
  "name": "Chalkline Pest Control",
  "telephone": "+61 8 XXXX XXXX",
  "url": "https://chalklinepest.com.au",
  "areaServed": ["Morley WA", "Dianella WA", "Bayswater WA", "Perth WA"],
  "address": { "@type": "PostalAddress",
    "addressLocality": "Morley", "addressRegion": "WA", "postalCode": "6062" },
  "openingHours": ["Mo-Fr 07:00-17:00", "Sa 08:00-13:00"],
  "priceRange": "$160-$4,800",
  "aggregateRating": { "@type": "AggregateRating",
    "ratingValue": "4.9", "reviewCount": "187" },
  "review": [{ "@type": "Review",
    "author": { "@type": "Person", "name": "…real customer…" },
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "reviewBody": "…from the live reviews feed…" }]
}
</script>

Plus: Google Business Profile with service areas, per-suburb service pages fed from one template, and review markup wired to a real feed — never hand-typed.

What would change for the real client

Their licence number, their reviews feed, and their booking flow. For WA pest operators that means wiring the form and reminder service into Formitize (the pest industry's standard for AS 3660 inspection reports and job forms), ServiceM8 or GorillaDesk for scheduling and recurring annual-treatment reminders, and SMS confirmation on booking. The Cutaway Inspector stays — pointed at their price list, with each card's treatment mapped to a bookable job type.

Iteration log

Pass 1 — Craft

Pass 2 — Depth

Pass 3 — Hardening