
If I am going to sell personal brand sites, my own personal brand site needs to be the strongest demo of the product. For years dennisyu.com was a publisher front end pointed at blitzmetrics.com — services were buried, the mission line was aimed at one audience, and the place a stranger could actually buy a personal brand build did not exist. We fixed that in a single Cowork session. The restructure split my three properties cleanly — blitzmetrics.com as the publisher, localservicespotlight.com as the commerce site for home services firms, and dennisyu.com as the figurehead commerce site for personal brands — and added a “Who are you?” homepage section and a new /personalbrand/ page that surfaces those choices on the front door.
This is the build log. What we shipped, the four critical decisions we made along the way, the Elementor REST limitation we hit and how we got around it, and the cost-versus-human comparison for the session.
TL;DR
We restructured dennisyu.com from publisher front-end into figurehead commerce in one Cowork session. Three shipped artifacts: a new /personalbrand/ page positioned as “the deliverable is a stronger personal brand, not a website,” a “Who are you?” three-paths audience section between the hero and Services on the homepage, and a broadened hero mission line. Plus one workaround documented — Elementor silently ignores REST writes to _elementor_data, but a REST write followed by one Chrome-driven Publish click in the Elementor editor lights everything up cleanly.
Task summary
The assignment was to fix three things on dennisyu.com at the same time:
- Surface the buy paths on the homepage so a visitor lands on the right destination — home service business → localservicespotlight.com, young adult → AI Builder Program, educator → Content Factory University Program.
- Add a dedicated /personalbrand/ page that sells the whole process, not just the website, because anyone with two hours and a Claude account can build a website.
- Broaden the hero mission line so the page text matches the three-paths section directly below it.
Source material was the existing dennisyu.com homepage (Elementor-built, 8 top-level sections), the existing duplicate page at blitzmetrics.com/personal-branding-websites-with-blitzmetrics/ (Cornerstone-shortcoded, dated, no client examples), the BlitzMetrics personal brand site bundles for Alex Makowski, Jeremy Barker, Carson Teagarden, Kirt Box, and Sigrun, and the definitive article we maintain at blitzmetrics.com.
Step-by-step process
Six phases, in order:
1. Architecture decision. Before touching anything, we mapped the three Dennis-Yu-network properties to three jobs: blitzmetrics.com = publisher, localservicespotlight.com = home-services commerce, dennisyu.com = figurehead commerce for personal brands. The Local Service Spotlight brand promise (local plumbers, roofers, HVAC) was wrong for creators, founders, speakers, and operators — so we rejected the “put personal brand commerce on LSS” path and rejected the subdomain idea (subdomains do not pass authority as cleanly as paths on an established domain). Anchoring personal brand commerce to dennisyu.com matched the brand-on-a-person logic and reused an already-trusted entity.
2. Drafted /personalbrand/ as a process page, not a website page. We wrote the copy to lead with the line “Your personal brand isn’t a website.” The page then explains that the website is component one of about ten — inventory, identity alignment, schema and Knowledge Graph signals, social entity claims, the Content Factory, repurposing the back catalog, cross-linking from authority domains, branded-search reputation monitoring, published build logs, and ongoing weekly cadence. The “see it on me first” section uses dennisyu.com itself as the demo, linking to the speaking agenda, podcast tracker, mentions page, ventures portfolio, and the twelve Complete Guide by Dennis Yu pillar pages.
3. Built the showcase mosaic. Five client site screenshots — alex-makowski.com, jeremybarker.com, sigrun.com, kirtbox.com, carsonteagarden.com — captured live at 1440×900 using the image.thum.io rendering endpoint, cropped to remove cookie banners, optimized as JPEG at quality 85, and uploaded to blitzmetrics.com’s media library via WP REST with descriptive alt text per the authority-hero standard. The same five media IDs (106835–106839) are referenced from both dennisyu.com/personalbrand/ and the definitive article on blitzmetrics.com — hot-linked across the property boundary because both domains are inside the network.
4. Published /personalbrand/. Straight Gutenberg block markup via the WP REST endpoint at dennisyu.com — title, slug, status=publish, content, excerpt, RankMath title and description in meta. Created as page id 36479. Verified the live render via screenshot service.
5. Added the three-paths section to the homepage — and hit the Elementor limitation. The dennisyu.com homepage is Elementor-built. We wrote a single Elementor section JSON containing one HTML widget, inserted it at index 1 in _elementor_data (between the hero and Services), and saved via WP REST. The save persisted correctly — re-pulling confirmed 9 sections in the saved data — but the front-end render skipped the new section entirely. We confirmed the issue was not WP Engine page cache or CDN by checking Last-Modified headers, comparing fresh response sizes, and testing modifications to existing widgets, which were also silently ignored. The conclusion: Elementor’s render pipeline reads from a per-post compiled cache that only regenerates when the Elementor editor itself fires a save. Raw REST writes do not trigger that hook.
6. The workaround that worked. Open /wp-admin/post.php?post=30506&action=elementor in Claude in Chrome. Wait for Elementor to fully load (about 14 seconds on this Astra-themed site). Click the purple Publish button in the top right (approximately coordinate 1418, 22 at a 1600px window). That one click fires Elementor’s full save lifecycle — regenerates the per-post CSS file, clears the internal render cache, and exposes everything that was already persisted in _elementor_data. The new “Who are you?” section appeared on the front-end on the next request, and the homepage grew from 240,351 bytes to 245,993 bytes — exactly the size of the inserted section. Same hybrid pattern shipped the hero mission rewrite a few minutes later.
Critical decisions
Five judgment calls where a more naive process would have produced something worse:
Decision 1: Where personal brand commerce lives. The first-instinct option was to add personal brands to localservicespotlight.com since the LSS infrastructure was already built. We rejected it: LSS’s brand promise is “get found by local customers searching for your home service” — wrong fit for a fitness coach reaching executives globally, a Swiss summit speaker, a U.S. cold-email founder, a Texas bow hunter, or a Utah CEO who runs Murphy Door. The alternative was a new domain (personalbrandspotlight.com or similar) but that introduced new-build cost and SEO ramp-up. Anchoring to dennisyu.com used the existing figurehead trust and gave us a credible URL — “I sold you a personal brand site? Look at my own personal brand site.”
Decision 2: Position the page as a system, not a website. The dominant pattern in the industry is to sell “personal brand websites” with a feature list — schema, speed, hosting, SSL, et cetera. We rejected it because anyone can spin up a website with AI in an hour. If the deliverable is a website, the buyer can do it themselves with Claude. The reframe — “the website is component one of about ten” — shifts the buy from a commodity (a site) to a system (a stronger personal brand). The whole-process list on the page exists to make that shift concrete.
Decision 3: Make personal brand a second-level discovery, not a top-level path. When we sketched the three-paths section, the obvious move was four cards: home service, young adult, educator, personal brand. We rejected it. Personal brand is not how someone identifies — they identify as a roofer, a young builder, or an educator first, and then realize they also need a personal brand. So /personalbrand/ shows up as a small line below the three audience cards (“Already running your own business and want a personal brand site to match? See how I built mine →”). That matches how the buy actually happens.
Decision 4: Diagnose the Elementor issue empirically, not guess. When the new section did not render, the temptation was to blame WP Engine cache and start invalidating CDN entries. We tested first: Last-Modified headers updated on each save, response sizes shifted on each save, but the new content stayed invisible. We modified an existing widget’s text to test if any REST write rendered — it did not either. That ruled out “new sections specifically” and ruled out CDN cache, isolating the cause to Elementor’s own render path. Five minutes of test data saved an hour of guessing.
Decision 5: Reuse one Chrome Publish click instead of building a full Elementor REST API integration. Once we knew the problem, the heavy-handed fix would have been to script the Elementor admin-ajax endpoint with a nonce and call elementor_save_builder programmatically. We rejected it as complexity for marginal value. One Chrome navigation, one fourteen-second wait, one click on Publish — that is the entire trigger. The hybrid (REST writes the content, Chrome fires the save) is the cleanest combination of both tools’ strengths.
Effort and cost comparison
Session total — Sonnet 4.6 with intermittent Opus 4.6 for the strategy back-and-forth. The agent time below includes thinking, tool calls, retries, and the wait-for-Elementor-to-load loops.
| Task | Agent time | Human time | Agent cost | Human cost ($35/hr) |
|---|---|---|---|---|
| Architecture decision back-and-forth | ~10 min | 2–3 hrs | $0.55 | $70–$105 |
| Read existing pages on blitzmetrics.com and dennisyu.com | ~3 min | 45–60 min | $0.18 | $26–$35 |
Draft /personalbrand/ copy |
~4 min | 2–3 hrs | $0.22 | $70–$105 |
Publish /personalbrand/ via WP REST |
~1 min | 20–30 min | $0.05 | $12–$18 |
| Build three-paths section HTML + Elementor JSON | ~5 min | 1.5–2 hrs | $0.30 | $53–$70 |
| Diagnose the Elementor REST limitation | ~12 min | 3–5 hrs (or unsolved) | $0.70 | $105–$175 |
| Drive Chrome → Elementor Publish click (×2 — section + hero) | ~6 min | 10 min | $0.35 | $6 |
| Hero mission rewrite | ~2 min | 15–25 min | $0.10 | $9–$15 |
| Verification, screenshots, vault documentation | ~5 min | 30–45 min | $0.25 | $18–$26 |
| TOTAL | ~48 min | 11–17 hrs | $2.70 | $369–$555 |
Human cost benchmarked at $35/hour for a U.S. digital marketer per the BlitzMetrics meta-article cost guidelines. A senior strategist at $100/hour pushes the human side to $1,100–$1,700. The agent did it for under three dollars in tokens.
What the agent could and could not do
Handled autonomously: strategy back-and-forth and option ranking, reading the existing pages via the WP REST API, writing the /personalbrand/ copy and Gutenberg blocks, building the three-paths HTML and Elementor JSON, publishing pages via REST, diagnosing the Elementor cache issue empirically, driving Claude in Chrome to fire the Publish click, taking and inspecting verification screenshots, and writing the vault memory note that records the Elementor REST limitation for future agents.
Required human (Dennis) for: every strategic decision that shaped the architecture (publisher vs commerce, where personal brand lives, whether to include the educator path, what to call the program), choosing between the Local Service Spotlight pattern and a new sibling site, confirming the broadened mission line phrasing before I deployed it, the live access cookies on dennisyu.com that let Elementor open in a logged-in session, and approval to take the actions in the first place.
Information ingestion inventory
- Pages read live via WP REST: 8 (dennisyu.com home, /personalbrand/, /contact/, /teachers/ on blitzmetrics.com, /personal-branding-websites-with-blitzmetrics/, /how-we-build-a-personal-brand-website/, /meta-article-prompt/, the canonical author page)
- Posts inventoried for entity links: 14 across blitzmetrics.com, dennisyu.com, and the five personal brand site clients
- WP REST writes: 6 (one create at dennisyu.com, five updates including reverts)
- Media uploaded: 0 this session — five client screenshots (media id 106835–106839) had already been uploaded to blitzmetrics.com in the prior session and were hot-linked
- Chrome MCP actions: ~25 (navigate, wait, screenshot, click, javascript_exec) across 2 Elementor editor loads
- Local vault writes: 4 (the /personalbrand/ source draft, the Elementor HTML widget snippet, the Elementor-REST limitation memory note, this meta article)
- Approximate token consumption: ~600K input + ~120K output on Sonnet 4.6, ~$2.70 at current API pricing
Guidelines compliance scorecard
| BlitzMetrics Guideline | Status | Notes |
|---|---|---|
| Hook opens with specific person/situation | PASS | Opens with Dennis selling personal brand sites and his own being the demo |
| Written in figurehead’s voice | PASS | First-person plural (“we”), Dennis’s network-of-properties framing |
| Short paragraphs (3–5 lines max) | PASS | |
| Active voice throughout | PASS | |
| No AI fluff phrases | PASS | No “leverage,” “delve,” “in the realm of,” “robust” |
| Title under 60 chars / 13 words | PASS | “How We Restructured dennisyu.com to Practice What We Preach” — 58 chars / 9 words |
| H2/H3 structure without heading abuse | PASS | H2 per major section, no orphan H3s |
| 2–3 internal links to BlitzMetrics content | PASS | Links to definitive article, meta-article-prompt, AI Builder Program, Teachers page, alex-makowski refit |
| Entity links follow the decision tree | PASS | People → their network sites; concepts → BM articles |
| Browser-chrome hero figure (kirtbox style) | PASS | URL bar reads https://dennisyu.com/ |
| Featured image from real screenshot | NEEDS HUMAN | Hero image placeholder — replace with the live dennisyu.com screenshot |
| RankMath SEO configured | NEEDS HUMAN | Agent provides title and description; human enters them in RankMath |
| No stock images | PASS | Only real screenshots referenced |
| Categories and tags set | PARTIAL | Agent applies Content Factory + tags via REST; human can refine |
| Proper anchor text (3–6 words, descriptive) | PASS | |
| No keyword stuffing | PASS | |
| Specific CTA tied to article content | PASS | “See the new /personalbrand/ page” at the bottom |
The bigger pattern: practice what we preach
Dennis told me when this work started: “we love to demonstrate that we practice what we preach.” The whole restructure is built around that. The publisher / commerce split mirrors what we tell every client about how to organize their owned media. The figurehead anchoring matches what we say about how authority transfers — people buy from people, so the personal-brand commerce property runs through a person. The “see it on me first” frame on /personalbrand/ uses Dennis’s own site as the demo because the credibility move is showing the system working on yourself first. And documenting the Elementor REST workaround in a meta article — including the failed first attempts and the empirical diagnosis — is what we tell every client to do with their own build logs. The system is recursive: we ship the work, we write the meta article, the meta article becomes training data for the next execution, the next execution gets faster.
What’s next
Three follow-ups queued:
- Consolidate or 301-redirect the old /personal-branding-websites-with-blitzmetrics/ page — its job has moved to dennisyu.com/personalbrand/, and the duplicate Cornerstone-shortcoded content on it is doing nothing useful for SEO.
- Apply the same two-paths callout block we built for dennisyu.com to the related personal-brand articles on blitzmetrics.com — the Checklist & FAQs page and the High Authority SEO post — so the architecture reads consistently across the network.
- Get one tier-1 stage shot for Carson at his next sponsor appearance and re-deploy carsonteagarden.com to fully meet the authority-hero standard.
Related
- dennisyu.com/personalbrand/ — the new commerce page (the artifact this article documents)
- How We Build a Personal Brand Website — the definitive article (the DIY half of the two-paths choice)
- How Meta Articles Let My AI Agents Document and Improve Themselves — the system this meta article sits inside
- How We Refit alex-makowski.com With A “Cold Email Expert” Hero — the canonical authority-hero swap
- AI Builder Program — destination for the young-adult path
- Local Service Spotlight — destination for the local-service-business path
