A pre-dawn pour, priced before the first truck
Ironline runs line pumps and boom pumps out of a yard in Bibra Lake: house slabs, shed floors, pool shells, driveways and suspended slabs across the Perth metro. The audience is the Baldivis slab crew booking a Tuesday pour, the Cockburn shed builder with a 6 m³ floor and no access, the pool builder who needs a boom over a house on a battleaxe lot, and the owner-builder pouring a driveway on a Saturday.
The page's single job is the booking call. Everything else — the machine list, the trust strip, the map, the FAQ — exists to remove a reason not to ring. The one line the business actually competes on is “set up before the first truck”, because a pump that arrives with the agitators costs the customer standby on every one of them, so that promise leads the page and closes the FAQ.
The direction is literal: pumps start at six, which means the truck leaves the yard at half four. So the page is dark — the sky before first light behind a jointed boom, hi-vis yellow doing all the marking, concrete-white type. It is deliberately held off the near-black-plus-acid-accent default by a blue-black ground rather than a neutral black, a yellow that is a genuine safety colour rather than an acid one, and a second scene token in dawn blue.
Argued from a pre-dawn sky, hi-vis yellow and wet concrete
Every ratio below was computed with WCAG arithmetic from the shipped hexes during Pass 1 — measured, not estimated. The accent is a lines-and-marks token with its own rules; body text has its own ink.
The one forbidden pairing
Light ink on the hi-vis fill measures 1.43:1 — unusable, and it is the single easiest mistake to make on a yellow-accented dark site. Every yellow fill on this page takes dark labels: the CTA buttons, the selected chips, the docked badge, and the site board in the drawing. The yellow is only ever used as light-on-dark when it is type or a line on the dark ground, where it measures 10.06:1.
Map labels are body-ink-class type
The service-area map's suburb labels are set in the concrete-white ink with a #161B22 halo (paint-order: stroke), never in the accent, so a label crossing the dawn-blue ocean fill still measures 10.26:1 against the tinted water. Same rule inside the Pour Plan: every scene label carries a ground-coloured halo.
Chivo 900 off a plant decal, Barlow doing the work
Chivo 900 is the display face — a heavy grotesque with flat terminals, argued from plant decals and the stencilling on boom sections. Barlow is the workhorse: a slightly condensed, low-contrast grotesque that stays legible at 16 px on a phone in daylight and sets a long FAQ answer without fatigue.
The typographic bravery is the price itself. The rest-state total is set in Chivo 900 at the largest size inside the drawing, painted in dark ink on the hi-vis site board staked at the verge, with the machine line beneath it in Barlow — “$1,540 / 32 metre boom — 25 m³ in the base”. It is a real SVG text node, not canvas paint, so it is selectable, measurable and inside the first 750 px of the page at 1200 px wide, which is exactly the frame the collection's thumbnail captures.
The Pour Plan — a site elevation at one constant scale
The signature is a procedural SVG elevation of the pour, drawn at first light. It is not decoration: it is the quote, and the price lives inside it.
One constant frame, no zoom-to-fit. The drawing is a 60 m × 24 m elevation window at 1 metre = 10 user units in a 0 0 600 240 viewBox. Every machine, every reach arc and every truck is drawn at that one scale, and a 5 m ground rule is drawn on the site ground line as the honest constant reference mark. Nothing rescales when you change a control — which is the whole point, because the comparison between a 24 metre boom and a 52 metre boom is only meaningful if they are drawn against the same ground.
The street runs across the foreground with the agitator queue on it; the pump sits on the verge with its boom pedestal at 7 m, the house at 19.5–28 m, and the pour at the delivery point the access chip selects. The boom is a three-section jointed arm rebuilt per frame from the pivot to the delivery point; the line pump is a trailer unit with its hose snaked along the ground in 3 m sections. Concrete pulses visibly up the pipe and puffs out at the tip, and the sky gradient breathes on a slow sine.
Drawn quantities, their caps and their units — pinned so the drawing can never quietly lie about a number the ledger prints.
| Drawn thing | Model | Drawn cap | Drawn unit | Above the cap |
|---|---|---|---|---|
| Agitator queue | trucks = ceil(volume ÷ 8) — a metro agitator carries 8 m³ | 4 marks (4 × 8 m of drawn street = 32 m, the most the frame holds beside the machine) | one mark = one 8 m³ agitator load | 4 marks drawn, honest count printed as “8 loads” |
| Line-pump hose | 4 sections kerbside, 8 side access, 12 rear or tight | 8 sections | one section = 3 m of laid line | 8 drawn, then a dotted run and “12 × 3 m lines” |
| Boom reach arc | a dotted radius from the pedestal plus the arc it sweeps, at the machine's rating | none — 24 / 32 / 42 / 52 m all land inside the 60 m frame | metres, true scale | no overflow unit is reachable |
The queue count is always printed, and the singular is pinned
The honest truck count is printed beside the queue at every volume, not only above the cap — which makes the singular reachable: at 5 m³ the scene reads “1 load”. The concept pinned that singular string, and pinning it is what stops “1 loads” shipping. (The concept's note that the singular is reachable “at 5 and 10 m³” is one truck out at 10 — ceil(10 ÷ 8) is 2 — so 5 m³ is the only cell that prints it. The string ships exactly as pinned.)
Where the geometry and the price agree
The block is laid out so the drawing justifies the machine locks rather than merely illustrating them. From the pedestal at 7 m: the kerbside pour is 10 m away, the side-access pour 23 m, and the rear pour 29 m. A 24 metre boom's arc lands at 30.8 m — past the side pour, short of the rear — which is precisely why the 24 is locked out on a rear or tight lot. The 32 metre arc lands at 38.8 m and clears it.
Honest numbers, and where the page refuses to print one
All prices are GST-inclusive whole dollars and plausible for the WA market. The base buys the pump, the operator, the lines, the priming grout and the washout. The concrete is not Ironline's to sell.
The five machines. The extra-metre rate multiplies (volume − included), never the whole docket.
| Machine | Base | m³ in the base | Extra m³ | Badge line 2 | Short form (≤640 px) |
|---|---|---|---|---|---|
| Trailer line pump | $680 | 10 | +$26/m³ | trailer line pump — 10 m³ in the base | line pump |
| 24 metre boom | $1,150 | 20 | +$22/m³ | 24 metre boom — 20 m³ in the base | 24 m boom |
| 32 metre boom | $1,420 | 25 | +$22/m³ | 32 metre boom — 25 m³ in the base | 32 m boom |
| 42 metre boom | $1,880 | 30 | +$24/m³ | 42 metre boom — 30 m³ in the base | 42 m boom |
| 52 metre boom | $2,450 | 30 | +$26/m³ | 52 metre boom — 30 m³ in the base | 52 m boom |
Loadings, and the volume stepper. Every included-metre boundary (10, 20, 25, 30) and the 40 m³ line-pump ceiling sit exactly on the 5 m³ stepper grid, so every boundary is reachable by tapping.
| Control | Values | Effect |
|---|---|---|
| Volume | 5 – 60 m³, steps of 5 | multiplies the extra-metre rate on (volume − included) only |
| Access | kerbside / side access / rear or tight lot | +$0 / +$120 / +$260, flat, added once — and it moves the drawn delivery point |
| Saturday | on / off | +$340 flat — crew and truck out of hours |
Three declarations that are always on screen
Each appears on three surfaces — the badge, the ledger and the screen-reader mirror — in full on the ledger and the mirror at every width, and in the pinned short form on the docked badge at 640 px and below:
- $0 — washout, the boxout and the site clean are in the price. A price-neutral line that exists because customers expect to be charged for it. Short form: “$0 — washout in”.
- The concrete is your supplier's — this price is the pump, the operator, the lines and the washout. Short form: “pump only — concrete is your supplier's”.
- Standby runs at $4 a minute after the first 30 minutes of waiting on trucks — we'd rather tell you now than surprise you on the invoice. Short form: “standby $4/min after 30”.
And one line the estimator deliberately prints no number for: “Sundays, public holidays and night pours — quoted.” It is a services-grid line rather than a control, because the crew, the batch-plant window and the lighting are priced together and any figure on this page would be the dishonest part.
Two constraints, one memory slot, and a pinned substitution table
This is the part of the Pour Plan that has to be exactly right, because it is where a page most easily starts quietly computing a price for a machine that could not do the job.
- Reach lock. On a rear or tight lot the 24 metre boom is disabled with its reason on screen: “24 metres won't clear the house from the verge — 32 metres or larger, or run a line pump.”
- Capacity lock. Above 40 m³ the trailer line pump is disabled: “past 40 metres a line pump can't keep up with the trucks — go to a boom.” (“Metres” for cubic metres is how the trade says it on the phone.) 40 m³ is on the stepper grid, so the last valid line-pump cell is exactly 40 and the first invalid is 45.
The machine chip holds one memory slot containing the last explicit pump the visitor chose. When that machine is disabled by either constraint the chip is forced to a pinned substitute, and it restores only when the remembered machine is valid under both constraints at once.
The pinned substitution table. Precedence is by the remembered machine, not by which constraint fired last.
| Remembered | Condition | Forced to |
|---|---|---|
| 24 m boom | rear or tight lot active | 32 m boom |
| line pump | volume > 40, access ≠ rear/tight | 24 m boom |
| line pump | volume > 40, access = rear/tight | 32 m boom |
- Partial unwind holds. With the line pump remembered and the 24 forced at 50 m³, stepping down to 45 m³ still bans the line pump, so the page holds the 24 metre boom — it does not step through intermediates. Only 40 m³ or below restores the line pump.
- Memory invalidation. Any explicit machine tap while forced replaces the memory. Choose the 42 while the line pump is locked out and the 42 is what you keep when the lock lifts.
- No empty state. A machine chip and an access chip are always selected and the volume floor is 5 m³, so the badge never has to render a price-less starting state.
The worked drives, each set from a full control vector and each verified against an independently reimplemented oracle in the build harness.
| Scenario | Arithmetic | Total |
|---|---|---|
| Rest state — 32 m boom, 25 m³, side access, weekday | 1,420 + 0 + 120 | $1,540 |
| Line pump, 5 m³, kerbside — the cheapest output in the model | 680 | $680 |
| Line pump, 25 m³, side access | 680 + 26 × 15 + 120 | $1,190 |
| 52 m boom, 60 m³, rear or tight, Saturday | 2,450 + 26 × 30 + 260 + 340 | $3,830 |
| 24 m boom, 20 m³, kerbside | 1,150 + 0 | $1,150 |
| 42 m boom, 45 m³, side access | 1,880 + 24 × 15 + 120 | $2,360 |
| 32 m boom, 60 m³, kerbside | 1,420 + 22 × 35 | $2,190 |
| Line pump, 40 m³, kerbside — the last valid line-pump cell | 680 + 26 × 30 | $1,460 |
| Reach force — 24 m at 20 m³ kerbside, then chip rear | forced to the 32: 1,420 + 260 | $1,680 → back to kerbside restores $1,150 |
| Capacity force — line pump at 20 m³, then step to 50 m³ | forced to the 24: 1,150 + 22 × 30 | $1,810 → back to 40 m³ restores $1,460 |
| Partial unwind — from that forced state, step to 45 m³ | holds the 24: 1,150 + 22 × 25 | $1,700 |
| Both constraints — line pump remembered, 50 m³, rear or tight | substitute is the 32, not the 24: 1,420 + 22 × 25 + 260 | $2,230 |
| Memory invalidation — forced to the 24, then explicitly tap the 42, then step to 30 m³ | 1,880 + 0, overrun note absent at exactly 30 | $1,880 |
Why the page is shaped the way it is
- The phone number is in the masthead at every width, and it is a link. Most of this traffic is a builder holding a phone with one hand while the batch plant is on hold on the other. Below 861 px a sticky bar pins “Call the yard” beside “Book a pour” inside the bottom 70 px, with both targets over 44 px tall.
- Above the fold at 375 px the visitor gets the business name, one line saying the trade and the area, both calls to action, and three trust signals — with no scrolling. The Pour Plan comes immediately after, because at that width the drawing is the argument, not the header.
- The price lives inside the drawing. A ledger below the fold does not survive a screenshot, and the 1200 × 750 capture is how most people first meet the page. So the total is painted on the site board staked at the verge from 641 px up, and at 640 px and below it docks directly beneath the artwork rather than covering the machine.
- The form is pre-filled from the Pour Plan. Machine, metres, access, weekday or Saturday and the estimate all arrive in the job description, which turns a demo interaction into a warm lead — and the pre-fill stops the moment the visitor edits the field themselves.
- Five fields, not nine. Name, mobile, suburb, pour date and the pre-filled job description. Nothing else can be answered honestly before an operator has seen the access, and asking for it costs completions.
- The confirmation is local and says so. No network round-trip is faked. The panel is hidden on load and stays hidden on an empty submit; a valid submit shows the callback promise, a recap of the priced scenario, and a plain statement that this is a demonstration page and nothing was sent anywhere.
- Standby is on the page, not in the small print. Naming the $4 a minute rate before the booking is the single most trust-building thing a pumping contractor can do, because it is the charge every customer has been stung by.
What is doing the work
- No libraries, no build step, no raster images. One HTML file with inline CSS and one inline script; Chivo and Barlow from Google Fonts are the only external requests. Every pixel of the drawing, the map and the icons is procedural SVG or CSS.
- Procedural SVG scene. The whole elevation is rebuilt with
createElementNSon every state change into layered groups (sky, horizon, ground, reach, site, machine, pulse, queue, rule, board), so nothing has to be kept in sync by hand. - Dual-speed redraw. The first draw earns an entrance stagger of 26 ms per element capped at 1.4 s; every subsequent state change redraws at 11 ms per element capped at about 520 ms, so tapping a chip reads as response rather than lag.
- Entrance opacity lives on wrapper groups. A CSS or inline
opacityon an element silently discards that element's own SVGopacitypresentation attribute, so every staggered piece is wrapped in a bare<g>that carries the animation while the artwork underneath keeps its own attributes. The same split carries the beacon's blink and the drum's turn. - Token-invalidated animation. Every control handler bumps the draw token before it swaps state, so a stagger callback or a settle timer left over from the previous scene can never write into the new one. The build harness drives eight controls inside a single evaluate with no settle between to prove it.
- Concrete pulse on a measured path. A hidden path mirrors the boom-and-hose (or the snaked line) and
getPointAtLengthplaces seven pulses plus a tip burst along it each frame. Their opacity never drops below 0.55, so the signature is visibly alive at any capture instant rather than being phase-tuned to a seven-second settle. - rAF delta clamped at zero and capped.
dt = min(max(now − last, 0) / 1000, 0.05). The frame timestamp can precede the time the loop was scheduled, and a negative delta feeding geometry is how you get a negative radius and a thrown exception. - Reduced motion is a settled frame, not a blank one. Under
prefers-reduced-motionthe pulse parks mid-boom at full visibility, the beacon and drum stop, the entrance stagger is skipped, and the probe reports settled immediately. - State probe.
window.__concretepumpingexposes the scenario, every computed figure, the drawn counts and caps, the lock state, both note templates, the declarations and asettledflag — so verification gates on state, never on seconds.
What each pass actually found
Each pass drove the real interactions in headless Chrome and asserted the output — empty and filled submits, every chip, both stepper directions, the toggle, all thirteen worked scenarios, the five force and restore drives, and a rapid-fire drive — and each pass looked at native-resolution screenshots at 375, 1000 and 1200.
Pass 1 Craft
- Contrast measured, not assumed. All 27 shipped pairs were recomputed with WCAG arithmetic. Every figure landed exactly on the concept's: 14.42, 13.03, 10.36, 8.20, 7.41 for the inks; 10.06 for dark labels on the hi-vis fill and 8.10 on its hover; 1.43 for the forbidden pairing. One real failure: the form placeholder at
#6E7A87measured 3.91:1 on the input ground — re-minted to#808D9Aat 5.05:1. - The business name was not above the fold at 375. The masthead shortens to “Ironline” below 521 px and the eyebrow read “Ironline · Bibra Lake · since 2007”. The eyebrow now reads the full trading name, with a tighter size and tracking below 430 px so it still holds one line.
- The reach arc read as a bare vertical dotted line. True to scale — a 32 m radius in a 24 m tall frame is nearly vertical where it crosses — but it did not communicate reach. Added the dotted radius from the pedestal to the ground point beneath the arc, at 0.42 opacity as a construction line, which is what the concept asked for and what makes the mark legible.
- The pour was almost invisible and the agitators were 2.4 m tall. The slab formwork was thickened and given a bright screed line and a wet heap under the delivery point; the agitators were rebuilt at a true 3.8 m with a cab, a tapered drum, helical bands and a chute.
- The queue count was jammed into the bottom-right corner. Moved above the queue with the drawn-unit line beneath it.
Pass 2 Depth
- Three second-read details added, all on wrapper groups so no CSS animation fights an SVG presentation attribute: a hazard beacon already turning on the pump's cab, the front agitator's drum turning (clipped helical bands drifting on a 2.4 s loop), and one lit window in the house — somebody is up at five.
- Micro-interaction on the price. When the total changes, the site board takes a 0.62 s nudge on a slight overshoot curve, hinged at its top edge as if it were swinging on its stakes. Suppressed under reduced motion.
- Label-collision sweep at 2× zoom found three real collisions the assert suite could not see: the “32 m reach” figure struck the distant rooflines (moved 19 units up, clear above them at every rating); the rear boundary's two horizontal rails merged with the rear pour into one ambiguous grey bar (rebuilt as a paling fence past the block, out of the pour's span); and the kerbside pour tag would have landed on the site board, so it now steps right of the board on a leader line.
- The kerbside pour ran into the house. Shortened to 15–19 m with the delivery point at 17 m, which also tightened the hose-section spacing on the line pump.
- The water line was invisible. Redrawn as a dawn-blue band behind the distant rooflines with two pale glints, so the coast reads through the gaps between the roofs.
Pass 3 Hardening
- Chanel rule. Removed the traffic cones added early in Pass 2 — they collided with the outrigger pads in boom mode and with the hose in line-pump mode, and the beacon, the drum and the lit window already carry the scene's life. One ornament out.
- 375 px masthead measured explicitly — the wordmark's right edge against the call button's left edge, not just
scrollWidth. Clean, and every tap target on the page measures at least 44 px. - The badge dock verified at the pinned breakpoint — and the board now leaves the scene with it. At 640 px and below the badge docks beneath the artwork with the pinned short forms and the on-scene site board is hidden, because shipping both was printing the price twice. At 641 px and above the board is on the scene. Checked at 375, 1000 and 1200 so the mid-width band never lets the board compress the drawing — it holds under 42% of the scene's width at 1000 px.
- The annotations grow, the frame never does. A 60 m frame in a 2.5:1 strip renders its labels at about 5 px on a 375 px phone, and cropping the
viewBoxwould have thrown away the reach arcs and half the queue — the two things the drawing exists to compare. So the label tier is keyed to the scene's measured width, not the viewport: 9 units above 900 px of scene, 12 units below it, 15 units below 420 px, which lands every annotation between 10 and 13 px at 375, 1000 and 1200 alike. The queue label also steps right of the kerbside pour tag in the tight tiers so the two never stack. - The drawn-unit sentence moved to the ledger. “One mark = one 8 m³ agitator load” was scene fine print nobody could read on a phone; it is now a full ledger note and a line in the screen-reader mirror — “25 m³ is 4 loads at 8 m³ a truck — the drawing queues one mark per load, up to four” — which also makes the drawn cap explicit in words instead of only in marks.
- Confirmation gating probed on the panel itself, not on text presence: hidden on load, still hidden after an empty submit (which raises visible field errors and
aria-invalid), shown only after a valid filled submit. - Rapid-fire drive. Eight control clicks in a single evaluate with no settle between — four machine chips, both stepper directions and two access chips — then asserted the total, the settled flag, that exactly one reach radius and one arc are drawn, and that the arc is the 24 metre one. No console errors.
- Guide page held to the same 375 px bar as the site: every specification table sits in an
overflow-x:autowrapper with a deliberatemin-width, and each table's caption was lifted out of that wrapper on review, because a caption inside a horizontally scrolling box is a sentence you have to drag to read. Both pages carry the fictional-business colophon.
Local SEO we'd implement for the real business
Nothing business-shaped is marked up on the live pages. Ironline is fictional, and fictional structured data in a real index is dishonest markup — so the only JSON-LD the site emits is WebPage, CreativeWork, WebSite, BreadcrumbList and ListItem, all of it declaring the page a demonstration. The reviews on the site are demo copy and are deliberately not marked up.
For a real concrete pumping contractor, this is the schema we would ship. Schema.org has no concrete-pumping subtype, so the correct top-level organization type is GeneralContractor (under HomeAndConstructionBusiness), with the specialty named through additionalType, knowsAbout and a hasOfferCatalog — which is how you get the trade into the entity without inventing a type Google does not recognise.
{
"@context": "https://schema.org",
"@type": "GeneralContractor",
"@id": "https://ironlinepumping.com.au/#business",
"name": "Ironline Concrete Pumping",
"additionalType": "https://www.wikidata.org/wiki/Q1113645",
"description": "Line pumps and boom pumps for house slabs, shed floors, pool shells, driveways and suspended slabs across the Perth metropolitan area.",
"url": "https://ironlinepumping.com.au/",
"telephone": "+61 8 9XXX XXXX",
"email": "bookings@ironlinepumping.com.au",
"image": "https://ironlinepumping.com.au/img/32m-boom-baldivis.jpg",
"logo": "https://ironlinepumping.com.au/img/ironline-logo.png",
"priceRange": "$$",
"currenciesAccepted": "AUD",
"paymentAccepted": "EFT, Credit Card",
"foundingDate": "2007",
"address": {
"@type": "PostalAddress",
"streetAddress": "XX Sudlow Road",
"addressLocality": "Bibra Lake",
"addressRegion": "WA",
"postalCode": "6163",
"addressCountry": "AU"
},
"geo": { "@type": "GeoCoordinates", "latitude": -32.0956, "longitude": 115.8237 },
"areaServed": [
{ "@type": "City", "name": "Perth" },
{ "@type": "AdministrativeArea", "name": "City of Cockburn" },
{ "@type": "AdministrativeArea", "name": "City of Rockingham" },
{ "@type": "AdministrativeArea", "name": "City of Armadale" },
{ "@type": "AdministrativeArea", "name": "City of Kwinana" }
],
"knowsAbout": [
"Concrete placing booms",
"Trailer-mounted line pumps",
"Concrete placing boom (CB) high risk work licence",
"AS 2550.15 safe use of concrete placing equipment",
"Suspended slab pours",
"Powerline clearance for mobile plant"
],
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
"opens": "06:00", "closes": "18:00" }
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Concrete pumping",
"itemListElement": [
{ "@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Trailer line pump", "serviceType": "Concrete line pumping" },
"priceSpecification": { "@type": "PriceSpecification", "price": "680.00",
"priceCurrency": "AUD", "valueAddedTaxIncluded": true,
"description": "Includes the first 10 cubic metres; extra metres at $26/m3." } },
{ "@type": "Offer",
"itemOffered": { "@type": "Service", "name": "32 metre boom pump", "serviceType": "Concrete boom pumping" },
"priceSpecification": { "@type": "PriceSpecification", "price": "1420.00",
"priceCurrency": "AUD", "valueAddedTaxIncluded": true,
"description": "Includes 25 cubic metres; extra metres at $22/m3." } },
{ "@type": "Offer",
"itemOffered": { "@type": "Service", "name": "52 metre boom pump", "serviceType": "Concrete boom pumping" },
"priceSpecification": { "@type": "PriceSpecification", "price": "2450.00",
"priceCurrency": "AUD", "valueAddedTaxIncluded": true,
"description": "Includes 30 cubic metres; extra metres at $26/m3." } }
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "118",
"bestRating": "5"
},
"review": [
{
"@type": "Review",
"author": { "@type": "Person", "name": "Dane R." },
"datePublished": "2026-03-14",
"reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" },
"reviewBody": "Baldivis slab, 34 metres, first truck at six. Set up and primed before it turned in."
},
{
"@type": "Review",
"author": { "@type": "Person", "name": "Steve M." },
"datePublished": "2026-04-02",
"reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" },
"reviewBody": "Pool shell on a battleaxe behind a double-storey. The 52 sent it clean over the roof."
}
],
"sameAs": [
"https://www.google.com/maps/place/?q=place_id:XXXXXXXXXXXX",
"https://www.facebook.com/ironlinepumping"
]
}
Alongside the markup, the real build gets the parts that actually move a local pack: a Google Business Profile in the primary category “Concrete contractor” with services and service areas filled out and job photos posted weekly from the operators' phones; suburb-level landing pages for the corridors that convert (Baldivis, Cockburn, Canning Vale, Rockingham) written from real jobs rather than spun; and a review request that fires by SMS the afternoon of the pour, while the customer still remembers that the trucks never waited.
What would change on day one
- Their photographs. Every visual here is procedural because the collection forbids raster images — which proves the design carries without stock photography. A real Ironline would swap the hero for a 5 a.m. shot of the 42 with its boom up against a Baldivis sky, and the drawing would stay exactly where it is, because it is the estimator, not the artwork.
- Their scheduling. Assignar for plant and ticketed-operator scheduling — it is the tool that already knows which operator's CB ticket is current and which boom is due its AS 2550.15 major inspection, so the booking form should write straight into it rather than into an inbox.
- Their job and invoice flow. simPRO or AroFlo for jobs, quotes and the standby minutes that come off the operator's tablet, pushing to Xero for invoicing so the pour is invoiced the same afternoon while the metres are not in dispute.
- Their confirmation. Twilio for the 5 a.m. SMS: machine, operator name, site address and the arrival time. It is the cheapest anxiety-remover in the business and it stops half the “are you coming?” calls before six.
- Their reviews. A live Google Business Profile feed replacing the demo reviews, with the
ReviewandAggregateRatingmarkup above going live at the same time — real ratings, honestly marked up. - Their form. The enquiry posts to their CRM with the Pour Plan scenario attached as structured fields, so the person who rings back at seven already has the machine, the metres and the access on screen.
What is fictional and what is not
- Fictional: the business, its name, its yard, its reviews and every person named in them. The phone number uses the reserved
(08) 9000 0xxxpattern, the ABN is the placeholder00 000 000 379, and licence numbers are placeholders. The address is suburb-level only. - Real, and described as it is: the CB (concrete placing boom) high risk work licence class, which every boom operator in Australia must actually hold; and AS 2550.15, the Australian Standard for the safe use of concrete placing equipment. Getting those wrong would be the dishonest choice, so they are named accurately and the placeholder numbers sit beside them.
- Honest prices. Every figure is plausible for the Perth market in 2026 and internally consistent: the estimator's cheapest output for each machine equals that machine's “from $X” floor in the services grid, and the overall cheapest output — $680 — is the grid's floor.
- Nothing is sent anywhere. The form has no backend. The confirmation panel is local, and it says so on screen.