
Dennis logged into three Spotlight sites at once — concretespotlight.com, painterspotlight.com, pressurewashspotlight.com — and asked for the same build we’ve done for HVAC, pest control, roofing and the rest: complete, thorough, beautiful. Concrete had none of it. Painter and Pressure Wash had only their audit page standing in as a homepage. Building all three to parity surfaced a real CSS bug baked into the one template file all ten Spotlight Network sites share — seven of which were already live and still carrying it.
Start From Three Different Starting Lines
The three sites weren’t at the same stage. Concretespotlight.com had nothing beyond the bare install — no audit, no scorecard, no Dollar-a-Day guide, no real homepage. Painterspotlight.com and pressurewashspotlight.com already had their audit-wall page, builder, and scorecard published from an earlier pass, but that audit page was doing double duty as the front page — no dsx-styled marketing home with a hero, a wall of real industry names, a goal picker, pricing, or FAQ, the same build every mature vertical (HVAC, pest control, AI Builder, roofing, landscaping) already has.
This follows the same build pattern documented for the earlier verticals — see the Personal Brand Score rubric the whole Spotlight Network scores against.
Build the Home Page Every Mature Vertical Already Has
For concrete, that meant writing three new pages from scratch with real trade-specific hooks — control joints, efflorescence, stamped vs. pavers, 28-day cure, pour season — not generic filler, plus a new Dollar-a-Day guide with its own PDF. For all three sites it meant the same dsx-styled home page: a hero headline written for the trade, a wall of four real names in that industry (Tyler Ley, Brandon Gore and Mike Day for concrete; Colby Joseph Davis and Nick Slavik for painting; the softwashsystems.com and PCA-painted founders for pressure washing), a goal picker (book more jobs, outrank competitors, recruit a crew, sell for more), the $99/month plan, and an FAQ built for the trade’s actual objections. Each new home page replaced the audit page as the static front page, and the audit/scorecard/Dollar-a-Day pages stayed live at their own URLs, cross-linked from the new nav.
Along the way, the same dead-link bug documented on the AI Builder Spotlight build showed up on all three sites again — the theme’s default header and footer template parts, never replaced with the real Spotlight Network nav. Patched the same way: real .dsx-fleet-nav / .dsx-fleet-foot links into the twentytwentyfive//header and twentytwentyfive//footer template parts on all three.
Chase a Fifty-Pixel Gutter Across Three Rounds of Fixes
The first screenshot of the new concrete home page looked wrong: the whole dark, full-bleed design was trapped in a narrow centered column, capped at roughly 645px on a 1,819px screen. That’s WordPress’s block-theme is-layout-constrained rule, which caps raw HTML-block content unless it declares its own width. First fix: give the section width:100vw and margin-left:calc(50% - 50vw), the standard trick. Regenerated all ten verticals from the shared template, republished, took a new screenshot — better, but not right. A 50px white stripe still ran down the left edge, and the section clipped the same 50px off the right.
Measuring the live section with getBoundingClientRect() instead of guessing from the screenshot showed exactly why: left:50, right:1869 against a 1,819px viewport. Twentytwentyfive doesn’t just constrain width — its .entry-content.has-global-padding class adds a real clamp(30px,5vw,50px) padding on both sides, and the 100vw trick only cancels the parent’s outer alignment, not its inner padding. Second fix: cancel the theme’s own --wp--style--root--padding-left/right custom property directly with a negative margin, so the fix self-adjusts if the theme’s padding value ever changes. Regenerated, republished, re-measured — and the numbers hadn’t moved at all. Same 50px gutter, to the pixel.
That was the tell that something was overriding the fix outright, not just miscalculating it. Walking the full CSS cascade for the element (not just the rules with the same ID selector, every rule actually matching it) turned up the real culprit: Twentytwentyfive ships .is-layout-constrained > :where(:not(.alignfull)) { margin:auto !important; max-width:var(--content-size) } on every block theme. A raw wp:html passthrough never gets the alignfull class the way a native Group block does, so it was getting caught by that :not(.alignfull) clause and having its margin forced back to auto — !important beats any selector, however specific, that doesn’t also carry !important. Third fix, and the one that actually worked: add alignfull to the section’s own class list. That opts it out of the override entirely, and for free, it also picks up the theme’s own sanctioned .has-global-padding > .alignfull bleed rule — the exact mechanism WordPress core already ships for this, just gated behind a class nothing had added.

The actual before/after measurements from concretespotlight.com, drawn to scale: left edge at 50px collapsing to 0 once the section carries .alignfull.
Fix It Once, Ship It to Ten
The fix lives in exactly two places: the shared CSS source (Dunker-Spotlight/spotlight-page.html) and the wrapper that build_spotlights.py generates for every vertical it builds. Both got the alignfull class and a comment explaining why it’s load-bearing, not decorative — the kind of fix a future pass could easily “clean up” by mistake without the context. Regenerating all ten verticals confirmed the class landed everywhere; republishing went out to the three sites this session had access to. Dunkerspotlight.com, hvacspotlight.com, pestcontrolspotlight.com, aibuilderspotlight.com, roofspotlight.com, rooferspotlight.com, and landscaperspotlight.com are already live and, on current evidence, still carrying the narrower version of this same bug — they need the identical republish the next time there’s a logged-in session on each.
Proof ledger: every claim above is re-checked live, not self-reported. All 15 URLs across the 3 sites (home + audit + scorecard + Dollar-a-Day + spotlight-network listing, ×3) return HTTP 200. Zero PLACEHOLDER/TODO/Lorem strings anywhere in the 3 new home pages. All 6 wall-of-names photo URLs resolve live. getBoundingClientRect() on the live concrete page now reads left:0, right:1819, width:1819 — an exact match to the 1,819px viewport, confirmed by direct DOM measurement, not a visual guess. The other 7 domains’ bug status is stated as “on current evidence, still present” because this session never had credentials or a browser session on those 7 — it’s a flag, not a verified re-check.
Count the Tokens, Compare the Cost
| Phase | Est. tokens | Agent time |
|---|---|---|
| Diagnosis + generator engineering (3 vertical configs, new Dollar-a-Day builder + PDF) | ~650K in / 45K out | ~14 min |
| Publishing 6 new pages + nav/footer fix across 3 sites | ~450K in / 55K out | ~12 min |
| Full-bleed CSS bug hunt (3 rounds: 100vw → padding-cancel → alignfull) | ~600K in / 70K out | ~16 min |
| QA sweep, registry update, meta article | ~450K in / 65K out | ~14 min |
| TOTAL | ~2.15M in / 235K out | ~56 min |
List-rate worst case at Opus-class pricing ($5/M in, $25/M out): about $16.60. Realistic with prompt caching: about $5.50. The same scope by hand — auditing three sites, writing trade-specific copy for six new pages, wiring a WordPress template, tracking down a genuinely nasty CSS cascade override across three debugging rounds, and QA-ing fifteen live URLs — is roughly a 13-hour stretch split across a WordPress developer and a copywriter. At $60/hour that’s $780.
| Task | Agent time | Human time | Agent cost | Human cost ($60/hr) |
|---|---|---|---|---|
| Diagnosis + engineering | 14 min | 2 hrs | ~$1.40 | $120 |
| Publishing 6 pages across 3 sites | 12 min | 3 hrs | ~$1.20 | $180 |
| CSS cascade debugging (3 rounds) | 16 min | 4 hrs | ~$1.60 | $240 |
| QA + registry + write-up | 14 min | 4 hrs | ~$1.30 | $240 |
| TOTAL | 56 min | 13 hrs | ~$5.50 | $780 |
What’s Still Open, Framed Straight
What shipped: all three sites now match the mature verticals — dsx home page, audit, scorecard, Dollar-a-Day guide, real nav and footer, and the localservicespotlight.com/spotlight-network/ registry updated to match (Concrete flipped from “in build” to live, all three descriptions rewritten to the real July 5 scope).
What’s a real opportunity, not a gap: none of the ten Spotlight Network sites — these three included — have a video on the home page yet. That’s a known, standing item (every Spotlight site is supposed to get a main VSL skinned to its industry), and it stays a real blocker rather than something to fake: it needs actual footage of Dennis or a real Spotlight participant making the pitch, not a generic stock script. The seven already-live domains carrying the older, narrower version of this CSS bug are the other open item — a five-minute republish once there’s a session on each, using the exact same fix documented above.
Concrete, painting and pressure washing pros can now see exactly what a fully built Spotlight site looks like — and the fix that keeps it from breaking on the next ten.
See Concrete Spotlight →See Painter Spotlight →See Pressure Wash Spotlight →
Related: the full registry of every Spotlight Network vertical, live and in-build — the Spotlight Network master list — and the personal-brand scoring rubric every one of these sites is built against, the Personal Brand Score.

