Generative Assets / Brightcurrent Electrical / guide

How Brightcurrent was made

Brightcurrent Electrical is a fictional Perth residential & emergency electrician — an industry demonstration of the landing page Sapience Analytics would build for a real sparky. One page, one job: turn a worried homeowner with a tripping RCD or a 1980s switchboard into a phone call or a quote request.

01Palette — the meter box at night

The whole page is argued from what an electrician actually sells: clean current in a dark enclosure. Graphite is the workshop and the switchboard cabinet; porcelain is switchgear housing and carries every line of body copy; amber is the energised conductor — reserved for lines, marks, the primary CTA fill and display-size figures, never small copy; blue is the neutral/data side — secondary buttons, form focus, the cold half of the circuit diagram.

#17191E graphiteground — the cabinet
#E9EAE6 porcelainbody ink — switchgear white
#F2B90D live amberLINE/MARK + CTA — the conductor
#3D7BD9 insulation bluesecondary — neutral/data
#8FB4EE blue-inkderived — links & small blue text
#A6ABB4 ink-dimderived — muted copy, 6.9:1 on graphite

Two inks were derived per the collection's line/ink split: raw #3D7BD9 measures ~4.1:1 on graphite, so links and small blue text use #8FB4EE (~8:1) while the raw blue keeps to strokes and fills. Amber passes contrast on graphite but stays out of small copy by rule — during hardening the two places it had crept in (the header fault-line label, the triage tags) were demoted to porcelain/ink with amber dot marks.

02Type

Power sorted.

Sora 700/800 — display. Geometric with a terminal-block squareness; it reads engineered, not decorated. Tight -0.02em tracking at display sizes.

Tested & certified, every job.

Inter Tight 400–700 — body and UI. A workhorse that stays legible at 13–16px on a 4G phone, which is where most trade traffic lives.

03The signature — Switchboard Health Check

One detailed SVG switchboard — meter, main switch, RCD block, an eight-pole circuit bank — wired to four questions. Everything is a single hand-drawn SVG with the breaker and ceramic-fuse banks built procedurally in JS (eight modules each, generated into two swappable groups). Each answer visibly re-wires the board: fuses swap to breakers, the RCD row ghosts, empties to a dashed blank slot or lights blue, a pre-2000 board swaps its enclosure gradient and test sticker for a skewed 1987 one, and "yes, something trips" runs an animated amber fault trace through the enclosure. Four transparent tap zones over the board (role="button", keyboard-operable) drive the same state machine as the chip buttons, so you can literally tap the meter sticker to age the board.

The verdict is a three-tier state machine, and the honesty is in the tiers: ceramic fuses, or a pre-2000 board with no RCDs → upgrade recommended ($1,800–$3,500); symptoms, fewer than two RCDs, or an old-but-breakered board → book a $180 inspection (with "RCDs from $350" only when RCDs are actually short); everything else → OK for now, which says so plainly, shows no price and no CTA — just "save our number and test your RCDs twice a year". Every anchor equals the services grid figure for the same job, so the page never argues with itself. The verdict CTA pre-fills the enquiry form with the configured scenario and the matching service, turning the demo interaction into a warmer lead. At rest the board sits mid-rewire — two questions answered, a dashed amber wire still being pulled, verdict pending — so the static thumbnail reads as a demonstration already underway.

Techniques overall: inline SVG throughout (board, hero meter-box illustration, Perth service-area map with coastline, Swan River and drive-time rings from Wangara), CSS keyframe dash-flow for the fault trace and rest wire, a state probe at window.__electrician exposing answers/verdict/form status for headless QA, and zero libraries — the page is one file on a 4G budget.

04Conversion decisions

05Local SEO we'd implement for the real business

This demo page ships only WebPage schema naming it a demonstration — fictional structured data in a real index would be dishonest markup. A real Brightcurrent would ship this, fed by live data:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Electrician",
  "name": "Brightcurrent Electrical",
  "url": "https://brightcurrentelectrical.com.au",
  "telephone": "+61-8-XXXX-XXXX",
  "image": "https://brightcurrentelectrical.com.au/og.jpg",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Wangara",
    "addressRegion": "WA",
    "postalCode": "6065",
    "addressCountry": "AU"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": -31.79, "longitude": 115.83 },
  "areaServed": ["Wangara","Joondalup","Wanneroo","Hillarys","Duncraig",
                 "Balcatta","Stirling","Scarborough","Morley","Perth"],
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "07:00", "closes": "17:00" }
  ],
  "hasCredential": "EC licence number",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9", "reviewCount": "187"
  }
}
</script>

Plus per-review Review markup from a live Google reviews feed, a Google Business Profile wired to the same NAP, suburb service pages for the top 8–10 areas, and FAQ schema from the questions section — each answer above is already written to earn a featured snippet.

06What would change for the real client

07Iteration log

Pass 1 — Craft

Screenshot review at 1440 and 375 caught three real defects the DOM asserts sailed past: the two conductor paths between meter, main switch and bank were missing fill="none", so their L-bends rendered as filled black wedges; the 0-RCD state's "no RCD protection fitted" note collided with the ghosted module labels; and at 375 the header phone number clipped off the right edge. Fixed with explicit fills, a dashed empty-slot treatment that hides the modules entirely, and dropping the wordmark's "Electrical" suffix below 480px. Also removed an inline hero padding that was silently overriding the mobile media queries. The 43-check headless suite (empty + filled form submits, five verdict scenarios including the honest-OK tier, board tap zones, sticky bar geometry, FAQ) came back green.

Pass 2 — Depth

Added the second-read detail — the meter's kWh reading quietly ticks over every four seconds like a real disc meter (paused when the tab is hidden, off under reduced motion) — and a micro-interaction: an amber highlight flashes around whichever board region an answer just re-wired, so cause and effect read instantly. Both driven and asserted in the harness (meter measured 48 214 → 48 217 across the run; flash rect's target region checked after each answer), which grew to 46 checks. Screenshot review confirmed the ceramic-fuse bank, the dashed empty RCD slot and the blue "board healthy" lamp all render as designed.

Pass 3 — Hardening

Amber demoted out of all small copy per the palette rule — the header's 24/7 fault-line label and the triage tags moved to porcelain/ink with colored dot marks, keeping amber for lines, CTA fills and display figures. One ornament removed (a third circuit stub in the hero trace). Re-verified: reduced-motion path renders a settled board with every animation off, [hidden]{display:none !important} guard asserted against the confirmation panel, 375px shows no horizontal overflow with wordmark and phone inside the viewport, above-fold h1 + 48px CTA + trust line all land within the first 375×667 screen, and every price in this guide was re-read against the shipped code before commit.