Groundset · How it was made

Generative Assets · site 402 · industry demonstration

The ground decides the depth, so the drawing decides the page

Groundset Screw Piling is a fictional Bibra Lake helical-piling contractor, built to show a real one what a landing page can do. Its audience is the builder whose engineer has specified screw piles and who wants to know, before ringing anyone, how deep they will have to go and what that costs. The page's single job is to turn "can you get piles in on my block" into a booking — and to say out loud the thing the trade knows and the customer does not: a fatter shaft does not buy you soft ground.

The signature — the Log

One SVG panel carrying two coupled drawings on a fixed 0–12.0 metre depth axis. On the left, the soil profile in banded strata with a helical pile wound into it to the solved depth, drawn to true scale — a 114 mm shaft is 114 mm on the depth scale, and its 400 mm helix is 400 mm. On the right, the torque trace: installation torque across, depth down, climbing as the pile goes in, with the target torque drawn as a vertical amber line and the rig's torque-head ceiling drawn in coral. Where the trace crosses the target, that is your depth.

The axis is fixed and that is the argument. Four grounds give four different depths for the same pile — 6.5 m in Bassendean sand, 4.2 m in Spearwood over limestone, 8.8 m in the peaty flats, 9.2 m in Guildford clay. An axis that rescaled itself per ground would draw all four the same length and destroy the only comparison the page exists to make. The shallowest solve on the whole grid is 3.6 m, which is 30% of the axis, so nothing on it draws too small to dimension.

How it is drawn

Palette

Argued from the rig at six in the morning: painted slate, galvanised shaft, gauge amber, and the coral that means the head has stalled. This is the only dark site in its wave and it is dark for a reason — piling starts before light and the cab's instrument is a torque gauge. Held off the near-black-plus-acid default by having no acid in it: the amber is a hydraulic gauge amber and the coral is a warning lamp, both argued from the machine. Every ratio below was measured from the shipped custom properties in the running page, not estimated — 27 pairs, 0 under 4.5:1.

Night slate#14171APage ground. Cards #1D2126, hairlines #2C3238. Also the reversed label ink on the pile-steel fill, at 6.92:1 — a machinery label reads better reversed than a machine reads lightened.
Light ink#E6E9ECBody. 14.76:1 on the page, 13.28:1 on cards, 10.63:1 on the hairline tint, 14.06:1 on the trace panel. It carries every word on every scene fill.
Torque amber#D8A23AThe trace, the gauge, the target line, the primary CTA. 7.84:1 on the page, 7.05:1 on cards, 5.65:1 on the hairline, 7.46:1 on the trace panel; as a button fill it carries slate labels at 7.84:1, hover #EDB752 at 9.85:1. Forbidden as text on dense sand (4.14), limestone (3.29) and pile steel (1.13) — so the depth dimension is cased in a slate tag with an amber hairline rather than set loose on the strata.
Refusal coral#F08476The torque-head ceiling, the "never reaches" flag, the twelve-metre stop. 7.08:1 on the page, 6.37:1 on cards, 6.74:1 on the trace panel. Forbidden as text on every scene fill; on the trace panel it is cased with a panel-coloured halo where it crosses the faint curve.
Galvanised#8FA3B5A lines-and-marks token only. It draws the shaft, the helix, the ground hatch, the layer tie-lines and the faint ground curve. It never sets a word, with one licensed exception: the shaft callout is a solid galvanised plate carrying slate type at 6.92:1.
Scene fills#3A3630 #4A453C #3E3A42 #57544C #2A2721Loose sand 9.85:1, dense sand 7.81:1, clay 9.12:1, limestone 6.20:1, peat 12.22:1 — all measured against the light ink, which is the only ink that labels them. Stratum labels are drawn as a top layer cased in their own band colour so the pile shaft never breaks a word.

Type

Oswald 500/600/700 for display — a condensed grotesque that reads as a gauge face and stacks a depth scale without crowding. Barlow 400/500/600 for body. JetBrains Mono 500 in exactly one role: torque, depth and any number with a unit on it — 10,000 N·m · 6.5 m · Kt 23. The typographic moment is the readout beside the trace: the solved depth set enormous in Oswald 700 with its target underneath in mono at wide tracking, and the pile count, the price and the billed metres stamped along the bottom.

The model

Every rate is a whole dollar by construction, depth is held in decimetres and torque in whole newton-metres, so the depth-to-torque solve is an integer search and no percentage, average or unit conversion can introduce a float. Number.isInteger() is asserted on every field the price function returns, not just on the total.

T(d)   = a two-segment integer ramp per ground, summed per decimetre
depth  = the smallest d in 1..120 dm with T(d) >= the shaft's target torque, else NEVER
piles  = ceil(load_kN / working capacity)     working = (Kt x target) / 1000 / 2.0
billed = ceil(depth_dm / 10)                  piles come in extensions; we bill the metre you use

subtotal = rig mobilisation
         + piles x (per-pile rate incl. the first 6.0 m + max(0, billed - 6) x per-metre rate)
         + $980 test pile & torque log report (every job)
         + site access [0 | 1,200 | 2,400]
total    = max(subtotal, $4,500 minimum)
Depth to torque, solved per decimetre — every cell re-derived by an independent oracle
GroundTorque ramp76 mm → 6,000114 mm → 10,000168 mm → 30,000At 12 m
Bassendean sand90/dm to 4.0 m, then 2605.0 m6.5 mnever24,400
Spearwood over limestone80/dm to 3.0 m, then 6503.6 m4.2 m7.3 m60,900
Guildford clay50/dm to 6.0 m, then 2207.4 m9.2 mnever16,200
Peaty flats18/dm to 5.0 m, then 2407.2 m8.8 mnever17,700

That table is the whole sales argument in six columns: the 168 mm shaft reaches its torque on exactly one of the four grounds. It is disabled on the other three with the reason printed under the chip, and its target line stays drawn in the trace with a coral "NEVER" on it, so you can see how far short the ground falls rather than just being told.

The independent oracle, and where it disagreed

The concept for this site arrived with its numbers produced by a spec-time enumeration. Every one of them was re-derived here in separate code — a standalone script that reimplements the ramp, the solve, the capacities and the price from the pinned anchors only, then sweeps the full control grid. 84 assertions, 0 failures. The grid is 3 shafts × 4 grounds × 3 rigs × 19 loads × 3 site types = 2,052 cells, of which 1,197 price (21 valid shaft/ground/rig combinations × 57), 0 are non-integer, the minimum binds in 4 cells, the cheapest reachable output is $4,500 (which is also the rates card's floor), the dearest is $24,156, and the largest pile count anywhere is 23. The full partial-unwind chain, both neutrality claims and every disabled-shaft cell were enumerated too.

One disagreement, reported rather than resolved silently. The concept offers a "smallest form the badge can print" of $4,500 · 2 piles to 4.2 m. Two of those three facts hold and the third does not. A two-pile job is reachable — 200 kN on the 114 mm in Spearwood limestone gives ceil(200/115) = 2 piles at 4.2 m — but that cell prices $4,850, not $4,500: mobilisation $2,650 + 2 × $610 + the $980 report, which clears the minimum. The $4,500 floor cell is a different vector entirely: 200 kN on the 76 mm in Bassendean sand with the mini rig, 3 piles to 5.0 m, subtotal $4,090 billed at the minimum. The string conflates two cells.

Nothing wrong ships, because the badge is computed from live state and never prints a literal — but both readings are recorded here rather than quietly picking one. The pinned endpoints the concept depends on (cheapest = $4,500 = the grid floor; minimum binds in 4 cells; smallest pile count on the grid = 2) all reproduce exactly.

A second, smaller one — prose, not arithmetic. The concept's commentary on the neutrality counter-example says "the extra 0.5 m of Bassendean sand is one billed metre on six piles". The extra is not 0.5 m: Bassendean needs 6.5 m against Spearwood's 4.2 m, so the extra is 2.3 m. What the half metre actually does is push the job past the six metres that are included, into a seventh billed metre. The money is right — one billed metre at $68 on six piles is $408, and $7,290 + $408 = $7,698 — so the page ships the pinned sentence verbatim and states the arithmetic precisely beside it rather than repeating the loose phrasing.

The honesty clause

Screw piling sells a number the customer cannot check, and the way that number is usually oversold is by quietly letting a torque reading stand in for an engineer's design. This page is not allowed to do that. The line "torque tells us what the pile is holding on the day we screw it in; what it has to hold is your engineer's number, off your geotechnical report — we install to it and we log every pile" appears wherever a capacity appears: on the rates card, in the ledger, in the plain-text mirror, in the form's confirmation and in the FAQ. The badge, which is the one surface with no room for it, carries the pinned short form — "Your engineer's number, not ours." — in every state, alongside the total.

The words certified, guaranteed and compliant never describe a computed capacity anywhere on the page; that is asserted in the harness as a regular expression over the rendered text, in both word orders. The factor of safety of 2.0 is printed beside every capacity figure — on the badge, in the ledger total's sub-line, in the mirror and on all three service cards — never buried.

This site has no refusal state, and that is a design decision

Four of the five sites in this wave refuse a job somewhere: a ground that cannot take a soakwell, water that cannot be protected galvanically, a ramp that cannot be made to fit. This one refuses nothing. Every one of the 1,197 priced cells prices, which was enumerated, not assumed — and the honest "no" here lives one level down, at the chip. The 168 mm shaft is disabled on three of the four grounds with a computed reason under it, and disabled again on Spearwood whenever the rig's head cannot deliver 30,000 N·m. Its target line stays visible in the trace with "NEVER" on it. The page says no to the upsell, not to the customer, which for this trade is the truer refusal: the job is always doable, it is the shortcut that is not.

The FAQ carries the other one — what happens if the torque is not there at twelve metres. We stop, we say so, it goes back to the engineer, you pay for the metres we drove and not for the pile we could not deliver. The drawing prints "12 m — we stop and tell your engineer" under the section at every width.

Conversion decisions

The iteration log

Pass 1 — Craft

Pass 2 — Depth

Pass 3 — Hardening, and a pass for the prose

Final harness: 238 assertions across both pages and the three passes — the full worked-figure set, all 19 stepper values, every chip, the six-step partial-unwind chain, every disabled-shaft cell with its reason, the drawn cap, empty and filled submit, rapid fire, reduced motion, DPR 2, keyboard, three-width badge clearance and 29 measured contrast pairs, plus the guide page you are reading.

Local SEO we'd implement for the real business

The live page emits only WebPage, WebSite, CreativeWork, BreadcrumbList and ListItem. Groundset is fictional, so shipping business or review structured data would put invented facts into a real index — that is dishonest markup, and it is a line this collection does not cross. Here is the schema we would ship on the real contractor's site, with their real details, their real reviews and their real service area:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "GeneralContractor",
  "@id": "https://example.com.au/#business",
  "name": "Groundset Screw Piling",
  "description": "Helical screw piling for residential and light commercial footings across Perth's southern and eastern suburbs. Piles driven to torque and logged pile by pile to AS 2159.",
  "url": "https://example.com.au/",
  "telephone": "+61 8 XXXX XXXX",
  "email": "yard@example.com.au",
  "image": "https://example.com.au/img/rig-bibra-lake.jpg",
  "logo": "https://example.com.au/img/logo.png",
  "priceRange": "$$",
  "currenciesAccepted": "AUD",
  "paymentAccepted": "EFT, Credit Card",
  "foundingDate": "2014",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Unit 4, XX Sudlow Road",
    "addressLocality": "Bibra Lake",
    "addressRegion": "WA",
    "postalCode": "6163",
    "addressCountry": "AU"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": -32.0967, "longitude": 115.8189 },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
    "opens": "06:30", "closes": "17:00"
  }],
  "areaServed": [
    { "@type": "City", "name": "Bibra Lake" },
    { "@type": "City", "name": "Hamilton Hill" },
    { "@type": "City", "name": "Canning Vale" },
    { "@type": "City", "name": "Jandakot" },
    { "@type": "City", "name": "Forrestdale" },
    { "@type": "City", "name": "Midland" },
    { "@type": "City", "name": "Bassendean" }
  ],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Screw piling",
    "itemListElement": [
      { "@type": "Offer",
        "itemOffered": { "@type": "Service", "name": "76 mm helical pile, supplied and installed to 6 m" },
        "priceCurrency": "AUD", "price": "420" },
      { "@type": "Offer",
        "itemOffered": { "@type": "Service", "name": "114 mm helical pile, supplied and installed to 6 m" },
        "priceCurrency": "AUD", "price": "610" },
      { "@type": "Offer",
        "itemOffered": { "@type": "Service", "name": "168 mm helical pile, supplied and installed to 6 m" },
        "priceCurrency": "AUD", "price": "1180" },
      { "@type": "Offer",
        "itemOffered": { "@type": "Service", "name": "Test pile and torque log report" },
        "priceCurrency": "AUD", "price": "980" }
    ]
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8", "reviewCount": "37",
    "bestRating": "5", "worstRating": "1"
  },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "REAL REVIEWER NAME" },
    "datePublished": "2026-05-14",
    "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" },
    "reviewBody": "REAL REVIEW TEXT, syndicated from the verified Google Business Profile."
  }],
  "sameAs": [
    "https://www.google.com/maps/place/...",
    "https://www.facebook.com/...",
    "https://www.instagram.com/..."
  ]
}
</script>

Ratings and reviews go in only once they are real and syndicated from a verified profile — never hand-written into the markup. On the live build this would sit alongside a Google Business Profile with the service area set to the suburbs above, a Service page per shaft size, and FAQ markup on the questions this page already answers.

What changes for the real client