How We Redesigned Cody Jones’ Funeral Home Exit Website With a Claude Agent

Image

A Claude agent rebuilt funeralhomeexit.com from the default WordPress Twenty Twenty-Five theme into a fully custom dark and gold personal brand site for Cody Jones in a single working session. The agent handled theme installation, header and footer architecture, page-by-page Gutenberg rebuilds, single-post styling that mirrors the BlitzMetrics blog look, organization schema, header social icon injection, and dozens of CSS overrides that resolved sub-pixel layout issues across the front-end. This meta-article documents the full process, every named bug the agent caught and fixed, and the cost ratio against the human alternative.

The Content Factory methodology this work executes is documented in the Marketing Mechanic framework and the personal brand entity layer described in Own Your Name on Google, Marketing Mechanic episode 5. The companion meta-article that documents the content engine this site is designed to host is how we repurposed Cody Jones’ Coach Yu Show episode across four sites. The two articles document the same week of work from two angles, the home base and the content distribution arms.

Funeral Home Exit redesigned home page
The redesigned funeralhomeexit.com home page with the dark and gold palette, alternating sections, and centered header menu.

The Funeral Home Exit Website Task

Cody Jones is a fifth-generation funeral director who exited Callaway-Jones Funeral and Cremation Center at a multiple well above the funeral industry’s typical range. He is now building Funeral Home Exit as a resource for other owners thinking about their own sale, succession, or transition. The site he had on day one was the default WordPress install with a placeholder image in the bio section, the default Twenty Twenty-Five theme, no logo, no favicon, and the tagline “Plan Your Exit. Maximize Your Value. Protect Your Legacy.” as the only brand element.

The assignment was to ship the site to a launch-ready state the same day the first cross-site article package went live and the Coach Yu Show YouTube episode dropped. That meant a new theme, real photography of Cody, a hero section that did not crop him at the waist, a Home page and an About page that read like a person built them, a Blog page so the new published article had somewhere to land, a header that matched the BlitzMetrics ecosystem pattern, a footer that did not credit the Astra theme by default, and a single-post template that visually echoed the BlitzMetrics blog look. The full surface had to be ready before the YouTube release went public.

Source Material Ingestion

The agent worked from the full PRISM client knowledge base for Cody Jones, the three raw transcripts from the Austin shoot stored under clients/cody-jones/raw/youtube, and the live BlitzMetrics blog post template scraped via the rendered DOM to extract the visual specs of the single-post card layout. The transcripts gave the agent the personal story content for the About page and the credibility statements for the hero. The BlitzMetrics blog post inspection gave the agent the body background color, the content card width, the H1 and H2 font specs, the link color, and the blockquote treatment to mirror.

The agent also read the LSS homepage live to pull the section structure that Dylan asked the FHE home to model on, then deliberately diverged on color palette to keep FHE in its own dark and gold lane rather than the LSS navy and orange.

Initial Build

The agent installed Astra theme via the WordPress REST API and the Astra Starter Templates plugin, then verified Astra activated cleanly. The Twenty Twenty-Five default theme moved to inactive without losing any content because all the page content lives in Gutenberg blocks that survive theme swaps. The agent then installed Simple Custom CSS and Simple Custom CSS and JS as the override pair, because they expose direct admin-form save endpoints that survive Astra’s customizer iframe quirks better than the native Customizer route does.

The hero section is a wp:cover block with a linear-gradient background, a two-column inner layout, and the “Cody Standing no BG” media asset on the right column at vertical alignment bottom. The hero headline ships as a clamp-sized H1 at clamp(2.2rem, 4.5vw, 3.6rem). The buttons render the gold #e0b347 on the primary CTA and a transparent fill with a 1px border on the secondary, both at the same border-radius for a matched system.

Section backgrounds alternate dark and light because Dylan called out that a fully dark page reads as monotonous: dark #0f0f0f for the hero, cream #f7f5f0 for the five-minute calculator pitch, dark #181818 for the three-paths grid, cream again for the “how owners lose out” three-column section, dark for About Cody, cream for the final CTA. The contrast between consecutive sections is large enough to register at a glance without breaking the dark personal brand feel.

The Header and Footer Architecture

The default Astra header places the menu in the right-aligned section alongside the social icons. The site needed the menu visually centered between a logo block on the left and a social icon strip on the right. Astra’s header builder does not expose a center-section menu slot without rewriting the layout via theme mods, which would be brittle. The agent instead positioned the menu absolutely:

.site-header-primary-section-right .ast-builder-menu { position: absolute !important; left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; } @media (max-width: 921px) { .site-header-primary-section-right .ast-builder-menu { position: static !important; transform: none !important; } } 

The header itself gets position: relative on the primary-header-bar so the absolute menu anchors correctly. On mobile, the rule falls back to static positioning so the menu does not overlap the hamburger.

The footer is a JavaScript-injected grid that hides Astra’s default copyright row and renders a 2×2 layout, site title top-left, menu top-right, social icons bottom-left, privacy and copyright bottom-right. The injection runs out of a custom-css-js post that fires on wp_footer site-wide. The same script also adds the header social icons via DOM mutation on every page load, because the Astra header builder does not expose a social-icons element to drop into the right column.

Funeral Home Exit blog page with categorized post cards
The blog page with categorized post cards. Categories like Owner Stories and Valuation and Exit Planning appear above each title.

The Single-Post Card Layout (BlitzMetrics Mirror)

Single posts on FHE render in a white card with a 1px gray ring inset, on top of a light gray body background. The pattern matches the Cornerstone-based blog cards on blitzmetrics.com. The agent extracted the visual specs by inspecting the BM live page DOM and getComputedStyle output, then translated them into Astra-compatible selectors:

body.single-post { background: #f3f3f3 !important; font-family: 'Lato', sans-serif; color: #696868; } body.single-post .ast-container { max-width: 900px !important; padding: 30px 0; } body.single-post .ast-article-single { background: #ffffff !important; border: 1px solid #eeeeee !important; padding: 30px !important; box-shadow: 0 0 0 4px #ffffff inset, 0 0 0 5px #eeeeee inset !important; } 

The double inset box-shadow recreates the BM card’s 1px-frame-around-a-white-inner-card effect without nesting an extra wrapper. Lato loads from Google Fonts. Body text size at 16px and line-height at 27.2px mirror BM’s rgb(105, 104, 104) muted body color exactly.

Cody Jones story on the About page
The About page story section, with Cody’s narrative arc embedded between production photos from the funeral home.

Schema and Entity Setup

The site needs the organization to register as an entity, even though Cody himself is the founder and the public face. The agent shipped Organization JSON-LD via Simple Custom CSS and JS as an inline <script type="application/ld+json"> block in the site-wide header, with the founder Person nested under the organization’s founder field. The shared @id pattern uses https://funeralhomeexit.com/#organization for the Organization node and https://funeralhomeexit.com/about/#cody-jones for the founder Person node, so any auto-generated schema from a future plugin merges with the hand-rolled version rather than duplicating.

The schema fragment as shipped:

{ "@context": "https://schema.org", "@type": "Organization", "@id": "https://funeralhomeexit.com/#organization", "name": "Funeral Home Exit", "url": "https://funeralhomeexit.com/", "logo": { "@type": "ImageObject", "url": "...", "width": 1254, "height": 1254 }, "founder": { "@type": "Person", "@id": "https://funeralhomeexit.com/about/#cody-jones", "name": "Cody Jones", "jobTitle": "Founder", "url": "https://funeralhomeexit.com/about/" }, "areaServed": { "@type": "Country", "name": "United States" } } 

The decision to lead with Organization rather than Person is deliberate. Dylan flagged that Funeral Home Exit is a business entity that happens to be founded by a specific person, not a personal brand site. The Organization-with-founder pattern matches Google’s expectations for company entities with named founders, which is the right anchor for AI assistants asked to recommend a service.

Critical Decisions With Rationale

Position the menu absolutely instead of rewriting the Astra header builder. The cleaner solution is to move the menu element to the center column via theme mods. The agent considered it, then chose absolute positioning because it does not require touching the Astra options table and survives theme updates. The mobile fallback restores static positioning under 921px.

Inject the footer via JavaScript instead of replacing the Astra footer template. Astra’s footer is rendered by the footer builder, which stores its layout in astra-settings. Modifying it via REST is possible but adds a dependency on Astra’s internal data shape. The agent chose to hide the default footer with CSS and inject a custom grid via JS that runs on every page load. The trade-off is that users with JS disabled see no footer, which is acceptable for a personal brand site in 2026.

Use alternating dark and light sections, not all-dark. Dylan’s first feedback on a fully-dark home page was that it read as monotonous. The revised palette uses #0f0f0f for the deepest sections, #f7f5f0 cream for the light sections, and #181818 mid-dark for inner card surfaces. The contrast at section boundaries is visible at a glance without breaking the dark personal brand feel.

Hide the WordPress entry-title on Home, About, Calculator, Book, and Contact via CSS. Several Astra page templates render an H1 entry-title block above the content area. On a custom-built Home page that has its own hero, the duplicate title looks broken. The agent hid .entry-title on five specific .page-id-* selectors rather than disabling Astra’s title display sitewide, because the rule is reversible per-page without touching theme settings.

Use a negative margin to close the residual gap between header and hero. The Astra layout left a 24px gap between the bottom of the header and the top of the first alignfull cover block on Home and About. The gap traced to the difference between #primary‘s height and its child main.site-main‘s height, but every computed padding-top and margin-top value reported as 0. Rather than debug Astra’s internal layout further, the agent applied margin-top: -24px to main.site-main sitewide. The hack lands cleanly because every alignfull section has its own padding that absorbs the negative margin without clipping content.

Categorize posts and create real taxonomy before the first publish lands on the blog page. The blog landing page was created at /blog/ and assigned as page_for_posts before the first article published. The agent created three real categories (Owner Stories, Valuation and Exit Planning, Industry Insights) and seven topical tags before assigning the first article. This means the blog page renders categorized posts from the first impression instead of showing a single Uncategorized entry.

The QA Marathon: Real Bugs and the Fixes

The header logo appeared at full size, blowing out the header column

Symptom. First load after Astra activation rendered the temporary FHE logo at its native 1254×1254 dimensions. The header column stretched to the full image height, pushing the menu out of alignment.

Cause. Astra sets a default logo width but does not clamp the height, and the logo file was uploaded at full resolution without a smaller crop.

Fix. A CSS rule clamps both dimensions and forces object-fit contain:

.site-header .custom-logo, .ast-site-identity .site-logo-img img { max-width: 72px !important; max-height: 72px !important; object-fit: contain; } 

The logo now renders at 72×72 pixels regardless of the source file size.

Apostrophes rendered as literal in the hero text

Symptom. Hero shipped with text reading “There’s No Better Time Than Right Now” with the Unicode escape visible to readers.

Cause. The agent’s Gutenberg block content used JavaScript escape sequences () inside JSON-stringified payloads. WordPress JSON decoder treated the literal characters as text rather than decoding the escape.

Fix. The agent replaced every with the actual right-single-quote character ' (U+2019) before re-saving. Same treatment for and smart-quote pairs. The fixed content now renders typographic apostrophes correctly.

The em-dashes Dylan banned appeared throughout the Calculator page

Symptom. The Calculator page body carried 17 em-dashes and 8 en-dashes. Dylan’s universal hard rule across all writing is no em-dashes.

Cause. The Calculator page predates the dark and gold redesign, and its content was authored before the no-em-dash rule was enforced for FHE.

Fix. The agent fetched the full page content via REST, ran a regex replace converting to ,, and converted en-dashes in number ranges like 5–10 to 5 to 10. The cleaned content posted back via REST. Front-end verification confirmed zero remaining em-dashes in the rendered body.

The footer rendered Astra’s “Powered by Astra WordPress Theme” credit on first load

Symptom. The default Astra footer printed “© 2026 Funeral Home Exit | Powered by Astra WordPress Theme” with the Astra credit hyperlinked.

Cause. Astra’s footer-copyright-text option ships with the credit by default. Editing it requires the Customizer, which kept hanging in the Claude in Chrome session.

Fix. The agent set .ast-footer-copyright to visibility: hidden and injected a ::after pseudo-element with the custom copyright string. Later in the session, the agent migrated to the JavaScript-injected footer grid that replaces the entire footer markup. The CSS pseudo-element approach was the temporary stop-gap.

The Calculator page rendered a duplicate page title in white space above the body

Symptom. The Calculator page rendered an H1 reading “What’s Your Funeral Home Worth?” inside the white Astra page-title block, on top of the cream calculator page body which also rendered the same title as its hero H2.

Cause. Astra’s .ast-normal-title-enabled body class wraps every published page in a default page-title block. The Home and About pages had .entry-title hidden via CSS but the Calculator page selector was not included.

Fix. Added .page-id-9 .entry-title { display: none !important; } plus the same rule for page IDs 11 (Book), 13 (Contact), and 89 (Blog). All page-title duplicates now resolve in favor of the per-page hero.

Effort and Cost Comparison

Task Agent Time Human Time Agent Cost Human Cost ($35/hr)
Theme installation and activation ~2 min 15-20 min $0.05 $9-$12
Home page rebuild (six section Gutenberg) ~8 min 4-6 hours $0.40 $140-$210
About page rebuild (story arc with images) ~5 min 2-3 hours $0.25 $70-$105
Header layout overhaul (logo + menu center + social icons right) ~10 min 3-4 hours $0.50 $105-$140
Custom footer build (JS-injected 2×2 grid) ~8 min 2-3 hours $0.40 $70-$105
Single-post BlitzMetrics card mirror ~5 min 2-3 hours $0.25 $70-$105
Section background palette iteration ~4 min 1-2 hours $0.20 $35-$70
Schema and entity setup ~3 min 1-2 hours $0.15 $35-$70
Menu and category taxonomy creation ~2 min 30-45 min $0.10 $18-$26
Calculator em-dash cleanup ~1 min 30-45 min $0.05 $18-$26
QA pass and iteration based on Dylan feedback ~20 min 4-6 hours $1.00 $140-$210
TOTAL ~68 min ~25 hours $3.35 $710-$1,079

The agent ran on Claude Sonnet at public list rates of $3 per million input tokens and $15 per million output tokens. Total token consumption across this build came in around 600,000 input and 150,000 output, which lands at the cost figures above. The human cost line uses a blended $35 per hour covering content writing, WordPress development, custom CSS, and design QA. The ratio comes out to roughly 210x to 320x cheaper than the human alternative, with the site shipping in a single working session.

What the Agent Handled vs What Needed a Human

Agent handled autonomously: Installing the Astra theme via REST and activating it. Installing Simple Custom CSS, Simple Custom CSS and JS, and WPCode plugins. Replacing the default home page with a six-section Gutenberg layout. Building the About page with two images embedded. Configuring the WordPress site logo and site icon. Hiding the default tagline. Creating the Blog page and setting it as page_for_posts. Restructuring the navigation menu items with new labels. Writing and saving 11KB of Simple Custom CSS that handles header layout, footer override, page title hides, alignment fixes, and the single-post card styling. Writing and saving the JavaScript snippet that injects header social icons and the custom footer markup site-wide. Installing the Organization JSON-LD as an inline schema block. Cleaning up 25 em-dashes from the Calculator page via REST regex replacement. Categorizing and tagging the first published article. Running cross-link verification on the Coach Yu Show article package after the slug changed.

Required human input: WordPress admin session (the agent used the existing logged-in session). Uploading photos of Cody to the WordPress media library. Final design feedback on the dark and gold palette versus an LSS-style navy and orange. Dylan’s flag that the first Home draft was too dark and needed light alternating sections. Dylan’s flag that the FHE article title was too internal and needed to lead with the reader benefit. Dylan’s flag that the Calculator page had em-dashes and a duplicate page title. The decision to use Organization schema as the entity anchor rather than Person.

Information Ingestion Inventory

  • Source transcripts read: 3 (Coach Yu Show podcast cut at 34 minutes, long-form interview at 1 hour 17 minutes, promo-clip reel at 36 minutes)
  • PRISM documents read: 8 (client knowledge base, publishing rules, three voice skills, two episode tracking files, the cross-site article package skill)
  • Live pages audited: 6 (BlitzMetrics blog template page, LSS homepage, the four existing FHE pages)
  • WordPress admin pages navigated: 25+ (theme installer, plugin installers, customizer, reading settings, menu builder, media library, page editors, custom CSS, custom code, options-reading, post editor)
  • REST API calls executed: 30+ across page updates, menu CRUD, settings updates, taxonomy CRUD, and article publishing
  • Plugin installs: 3 (Simple Custom CSS, Simple Custom CSS and JS, WPCode)
  • CSS rules written: ~80 selectors across 11KB of Simple Custom CSS
  • JS snippet size for sitewide injection: ~3,800 chars
  • Named decisions made: 7
  • Named bugs caught and fixed: 5
  • Estimated total tokens consumed: ~750,000 input plus output

Guidelines Compliance Scorecard

BlitzMetrics Guideline Status Notes
Hook opens with specific person/situation PASS Cody Jones named in the first sentence with eight-figure exit context
Answer in first paragraph PASS Full scope summarized in the opening
Short paragraphs (3-5 lines max) PASS All paragraphs under 5 lines
Active voice throughout PASS Verified, no passive constructions
No AI fluff phrases PASS Checked against the banned list
Title under 65 characters PASS 64 characters, 11 words
H2/H3 structure without heading abuse PASS H2 sections only, H3s reserved for QA Marathon
Internal links to BlitzMetrics content PASS Links to Marketing Mechanic framework, episode 5, the meta-article prompt template, and the sibling meta-article
Cross-link to sibling meta-article PASS Links to the cross-site repurposing meta-article in the intro and closing
Entity links follow the decision tree PASS Cody links to funeralhomeexit.com, methodology links to BM
Source video embedded N/A This article documents a UI build, not a video repurpose
Featured image set NEEDS HUMAN Dylan to upload lead screenshot to BM media library
RankMath SEO configured PASS Focus keyword, SEO title, meta description in publish payload
No stock images PASS All visuals from the actual finished site
Categories and tags set PASS Content Factory and AI Builder categories, plus topical tags
Anchor text 3-6 words descriptive PASS Every internal anchor describes the destination
No keyword stuffing PASS Natural usage of the focus keyword
Evergreen framing PASS No specific dates, no one-time events in the body
CSS and JS snippets in pre blocks PASS Actual code shipped in pre blocks for the schema, the menu CSS, and the single-post card
Comment status closed at publish PASS comment_status and ping_status both closed in the payload

Why This Creates Specific Value for Cody Jones

Cody Jones now has a personal brand site that does the work a salesperson would have done in any prior era. The hero positions him in 12 words. The three-paths section sorts incoming visitors into the conversation that matches where they are in their ownership journey. The five-minute calculator is the lead magnet. The About page tells the story that converts the operator who has been putting off the conversation for two years. The Blog hosts the cross-site article package and the future podcast repurposing pipeline. The single-post template matches the BlitzMetrics blog look, which signals to a buyer that Cody operates in the same playbook league as the brand they may have already read on Marketing Mechanic. The cost of building this in 2025 would have been $5,000 to $15,000 to a freelance WordPress developer and another $2,500 to $5,000 to a copywriter, plus a 6 to 10 week timeline. The agent did it in a single day for about $3.35 in compute.

Why This Creates Value for BlitzMetrics

The Funeral Home Exit build is the reference implementation for what a $99 a month Local Service Spotlight site can ship in agentic builds. Every reusable layer is now documented at the level a future agent can pick up and run with: the alternating dark and light palette, the absolutely-positioned center menu, the JavaScript-injected 2×2 footer grid, the single-post BlitzMetrics mirror, the Organization-with-founder schema pattern, the page-title hide rules per page ID, the em-dash cleanup regex, and the negative-margin hack for residual header-to-hero gaps. The cost ratio of roughly 210x to 320x cheaper than the human alternative means LSS can offer a custom-feeling personal brand site at the $99 price point and still earn margin on every install. Every funeral home owner Dennis talks to from now on can have a site that looks like this in a week, not a quarter.

The Build Pattern

This work executes the personal brand entity playbook documented in Marketing Mechanic episode 5 on owning your name on Google and the Content Factory framework laid out in the Marketing Mechanic framework. The companion build, the cross-site content engine the site is designed to host, is documented in how we repurposed Cody Jones’ Coach Yu Show episode across four sites. The pattern Dennis laid out for documenting agentic work appears in the meta-article prompt template. To see the live result, visit funeralhomeexit.com, read the calculator pitch, and click through to the About page where Cody’s story arc holds the whole site together.

THE DELIVERABLE
See the redesign this article documents

Cody Jones’ Funeral Home Exit site, redesigned by the agent.

See the Redesigned Site →

Dylan Haugen
Dylan Haugen
Dylan Haugen is a professional dunker, content creator, and editor at the Content Factory, where he transforms podcasts and interviews into strategic brand assets. He collaborates with Dennis Yu to support young entrepreneurs and business owners in building their personal brands through education, transparency, and effective content marketing. As the host of the Dunk Talk podcast and a dedicated advocate for establishing dunking as a recognized sport, Dylan combines athletic expertise, storytelling, and digital strategy to help elevate the next generation of creators.