Blackline Chauffeurs

Generative Assets · Industry Demos · how it was made

How the Blackline Chauffeurs demo was built

Blackline Chauffeurs is a fictional chauffeur, stretch limousine and Sprinter transfer operator working out of a Belmont depot beside Perth Airport — airport runs with the flight tracked, hourly charter, wedding cars and Swan Valley wine tours across the metro. The page exists for the Applecross couple who need the airport at 4:40 am, the bride's mother booking three cars for Cottesloe, the Subiaco firm with a board visiting and eight mates heading to the valley. Its single job is a booking request with the vehicle, service, hours and passenger count already priced — honestly, to the whole dollar.

The Trip Quoter

The signature element is a drawn SVG side elevation of the chosen car on a night road — gloss-black duco with a champagne pinstripe, headlights raking the road, a city skyline and stars behind, the waiting passengers on the kerb. Every control redraws the scene and reprices the trip from the pinned anchors:

Pinned anchors (GST inclusive, metro Perth included, no tolls)

VehicleSeatsHourly rateAirport flat fareHourly-charter floorWedding floorWine-tour floor
Sedan3$110$1202 h3 h5 h
SUV6$130$1502 h3 h5 h
Stretch limousine8$240$3803 h3 h5 h
Sprinter11$190$2903 h3 h5 h

Airport transfers are the vehicle's flat fare with the hours stepper disabled and the reason on-page ("Airport transfers are a flat fare — hours don't apply"); the hours value is remembered and restored when another service is chipped, clamping up to that service's floor. Hourly charter, weddings and wine tours multiply the hourly rate by the hours; weddings add a flat $120 for ribbons, red carpet and sparkling (always on for a wedding, absent on every other service); the wine tour's tastings and lunch stop are a declared "$0 — we book the cellar doors for you" line; after-hours pickups (11 pm – 5 am) add a flat $40 at every combination, airport included. Passengers change no price — they pick the car: more passengers than seats FORCES the smallest vehicle that seats them, disables every smaller chip with "seats n", and restores the remembered vehicle when they fit again. The hours stepper's minimum is the applicable floor; a change that raises the floor clamps hours up and flashes the stepper; nothing ever auto-lowers. Beyond the metro carries no number anywhere — "quoted by the kilometre" on the card, the ledger, the screen-reader mirror and the FAQ. Every rate is a whole dollar and every stepper is whole units, so no total ever needs rounding; there is no empty state — a vehicle and a service are always selected.

Worked examples measured from the running page

ScenarioArithmeticTotalNote / lock
Rest — stretch, wedding, 4 h, 6 passengers, after-hours off4 × 240 + 120$1,080note absent (4 > 3); line 2 "ribbons, red carpet and sparkling included"
Sedan, airport, 2 passengers (grid floor)flat 120$120hours disabled with reason; after-hours on → $160
SUV, hourly, 2 h, 4 passengers2 × 130$260note "2-hour minimum for hourly charter in the SUV"
Stretch, hourly, 3 h → 4 h, 8 passengers3 × 240 → 4 × 240$720 → $960note present → absent
Sprinter, wine tour, 5 h, 11 passengers5 × 190$950note "5-hour minimum for wine tours in the Sprinter"; sedan/SUV/stretch disabled "seats 3 / 6 / 8"
Sedan, wedding, 3 h · sedan, wine tour, 5 h330 + 120 · 5 × 110$450 · $550wedding + wine-tour floors
Capacity force: sedan hourly 2 h 2 pax → 4 → 7 → 2 pax220 → SUV 260 → stretch 3 h 720 → sedan 3 h 330$220 → $260 → $720 → $330memory intact; hours stay at 3; note absent at the end (3 ≠ 2)
Memory invalidation: … 7 pax (forced stretch) → chip Sprinter → 2 pax3 × 190$570vehicle stays Sprinter — explicit chip cleared the memory
Rapid-fire: hourly 2 pax 2 h, vehicle sedan → Sprinter → stretch → SUV in one evaluate3 × 130$390Sprinter clamped hours to 3, SUV left them; one road loop after settle

All pinned worked figures, the cheapest-output floors ($120 / $220 / $450 / $550 / $380 + $720 / $290 + $570, equal to the services grid) and 36 random control vectors were cross-checked against an oracle reimplemented from the anchors in the verification harness, not from the page's own code — 302 assertions in Pass 2 and 330 in the final pass (site + this guide), all green. The rest-state figure measured from the running page is $1,080; the grid floor is $120.

Palette — argued from black duco and a champagne pinstripe

Gloss-black ground, ivory body ink, champagne for the CTA fill, rules, chip outlines, the headlight glow and the card's pinstripe, and a dusk blue that does real work in the scene's sky and the map's water. Contrast ratios below were computed with WCAG arithmetic from the shipped tokens in Pass 1 (role, hex and ratio from the same script row).

Gloss black#121316 page ground; cards #1C1E24, soft cards #15161B
Ivory#F1ECE2 body ink · 15.78:1 on the ground, 14.15:1 on cards; the booking card's paper, map labels (7.80:1 over dusk water)
Muted ivory#B8B2A6 secondary copy · 8.81:1 on the ground, 7.90:1 on cards; the waiting figures
Champagne#CDAF75 CTA fill (dark labels 8.83:1; hover #DABD86 10.27:1), rules, chip outlines, headlight glow, the pinstripe; as display copy 8.83:1 on the ground
Champagne ink#E3CC98 small champagne copy — eyebrows, notes, links · 11.82:1 on the ground, 10.60:1 on cards
Dusk blue#2E4A66 the sky gradient, the map's ocean and river, the trust strip (ivory on it 7.80:1), the T1 · T2 sign · 2.02:1 on the ground — lines and fills, never text
Card muted#4F4A3E the booking card's spec line · 7.49:1 on ivory paper
Card accent#7A5E2A the card's eyebrow and minimum note · 5.15:1 on ivory paper

Every spec figure held on the shipped grounds; no token moved. Two tokens were minted beyond the spec: the muted ivory for secondary copy (the spec's champagne is for lines and CTAs, not a second body ink) and the two paper inks for the ivory booking card.

Type

$1,080 · Stretch
Cormorant Garamond 600 — a long-stemmed, chauffeur-card serif. Headings, the display line over the scene, the card price, stepper values, the ledger total.
Gloss-black cars from a depot beside the airport: the 4:40 am pickup with your flight tracked.
DM Sans 400–700 — the workhorse: 17 px body (16 px minimum on mobile), labels, ledger, form. Eyebrows in 12.5 px caps at .16 em tracking.

The display moment is the rest-state line set over the scene — "$1,080 · STRETCH · WEDDING · 4 HOURS" — rebuilt from state on every change so the figure is always the live total; the separators travel with the token that follows them so a wrap never strands a dot at a line end.

Techniques

Conversion decisions

Local SEO we'd implement for the real business

The live page carries only WebPage, WebSite and BreadcrumbList structured data naming it a demonstration — a fictional operator must not mark itself up as a real one. For the real client we would ship the block below. schema.org has no chauffeur or limousine organisation subtype, and TaxiService is a Service type rather than an organisation, so the top-level type is the plain LocalBusiness with the trade named through additionalType, knowsAbout and a hasOfferCatalog of TaxiService offers. Real reviews would be pulled from Google Business Profile and marked up only with the reviewer's consent.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "additionalType": "https://www.wikidata.org/wiki/Q1373441",
  "name": "Blackline Chauffeurs",
  "description": "Chauffeured cars, stretch limousines and Sprinter transfers from Belmont beside Perth Airport — airport, weddings, wine tours, corporate.",
  "url": "https://www.example-blackline.com.au/",
  "telephone": "+61 8 9000 0366",
  "image": "https://www.example-blackline.com.au/fleet.jpg",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Belmont",
    "addressRegion": "WA",
    "postalCode": "6104",
    "addressCountry": "AU"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": -31.95, "longitude": 115.93 },
  "areaServed": ["Perth", "Subiaco", "Cottesloe", "Applecross", "Joondalup", "Fremantle", "Swan Valley", "Rockingham"],
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], "opens": "00:00", "closes": "23:59" }
  ],
  "knowsAbout": ["chauffeur hire", "airport transfers", "stretch limousine hire", "wedding cars", "Swan Valley wine tours", "corporate transport"],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Chauffeur services",
    "itemListElement": [
      { "@type": "Offer", "itemOffered": { "@type": "TaxiService", "name": "Airport transfer — sedan" }, "priceSpecification": { "@type": "PriceSpecification", "price": "120", "priceCurrency": "AUD", "description": "flat fare, Perth Airport to anywhere metro" } },
      { "@type": "Offer", "itemOffered": { "@type": "TaxiService", "name": "Hourly chauffeur — sedan" }, "priceSpecification": { "@type": "PriceSpecification", "price": "220", "priceCurrency": "AUD", "description": "from, 2-hour minimum" } },
      { "@type": "Offer", "itemOffered": { "@type": "TaxiService", "name": "Wedding car — sedan" }, "priceSpecification": { "@type": "PriceSpecification", "price": "450", "priceCurrency": "AUD", "description": "from, 3 hours, ribbons and sparkling included" } },
      { "@type": "Offer", "itemOffered": { "@type": "TaxiService", "name": "Swan Valley wine tour — sedan" }, "priceSpecification": { "@type": "PriceSpecification", "price": "550", "priceCurrency": "AUD", "description": "from, 5 hours, cellar doors booked" } }
    ]
  },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "212" },
  "review": [
    {
      "@type": "Review",
      "author": { "@type": "Person", "name": "Real customer, with consent" },
      "datePublished": "2026-05-02",
      "reviewRating": { "@type": "Rating", "ratingValue": "5" },
      "reviewBody": "Pulled from the live Google Business Profile feed — never hand-written."
    }
  ]
}
</script>

Alongside the schema: a Google Business Profile with the Belmont depot pinned and the booking link wired, "chauffeur Perth Airport" / "limousine hire Perth" / "Swan Valley wine tour transport" as the page's core phrases with the suburbs above as secondary, NAP consistency across the wedding and corporate-travel directories, and a reviews feed that updates without anyone touching the page.

What changes for the real client

Iteration log

Two semantics the spec left to composition were resolved here: lowering passengers from a forced vehicle to a count the remembered car still can't seat leaves the current (larger) car in place until the remembered one fits (7 → 4 keeps the stretch when the memory is the sedan; 4 → 3 restores it), and a forced change applies the new car's floor with a visible clamp rather than a silent one. The restore memory is cleared only by an explicit vehicle-chip change while forced; otherwise it survives until the passengers fit again.