Case studies

Case study · My own site

A WordPress site from 2009. Dusted off in one night.

UrbanKID is the parenting site my wife Dana and I started when we became parents. It holds 6,085 articles and 17 years of plugins, banners and good intentions. I rebuilt it with Claude Code and Respira, on the live site, while the old version kept running next to it. The hours after the switch went to what only shows up once a site is lived in, and to making it feel less like a template.

UrbanKID logo urbankid.ro
Iancu, Dana, Ioana and Mihai on a wooden bridge
Iancu, Dana, Ioana and me. The reason the site exists.
2 h 45 min
from first brief to the new homepage going live
6,056
articles moved to new templates, text unchanged
26 → 88
PageSpeed Performance on a phone
46 → 100
PageSpeed Performance on desktop

Same site. Same articles.

Drag to compare. The old homepage still exists at its own address, so this is not a mockup.

The new UrbanKID homepage
The old UrbanKID homepage
2009 to 2026 Now
The old homepage on a phone
Before, on a phone
The new homepage on a phone
After, on a phone

What PageSpeed said, before and after.

All Google PageSpeed Insights, on the same address, from the same night.

Phone

PerformanceAccessibilityBest PracticesSEO Before 26 76 73 92 After 88 97 100 100

Desktop

PerformanceAccessibilityBest PracticesSEO Before 46 76 54 92 After 100 100 100 100

Largest paint, phone

Before42.0 s
After5.3 s

Blocking time, phone

Before2,090 ms
After40 ms

Page weight, phone

Before8.7 MB
After0.8 MB

Requests, phone

Before285
After35

The first report after the switch said 76 on a phone. The agent traced the slow first paint to the cookie banner script, and loading it a moment later, plus lighter hero images, took PageSpeed to 88. The bars show the phone report from 01:59, before that last fix. After the illustrations went in, three local Lighthouse runs on a phone gave Performance 87, 93 and 95, with the other three categories at 100. Local runs and PageSpeed are different tests, so the rings above stay as PageSpeed reported them.

PageSpeed Insights, 31 Oct 2026: old homepage 00:11, new homepage 01:59 and after the final fix

The night, by the clock.

One long session, with me reviewing screenshots and the agent doing the work. Plugin updates, SEO and security came first, because a redesign on a neglected site is paint on damp walls.

  1. Connected

    Respira and SSH on the site. All plugins updated.

  2. SEO and indexing

    9,112 thin tag pages out of the index, titles shortened, 744 paid links marked as sponsored.

  3. Security pass

    Scan, abandoned plugins removed, usernames hidden from anonymous visitors.

  4. The brief

    One HTML file with the new look, and a request to turn it into native Divi.

  5. Baseline

    PageSpeed on the old homepage: 26 on a phone, 46 on desktop.

  6. Do it all

    Previews approved. Theme Builder templates tested on a handful of articles first.

  7. Switch

    New homepage live, every article on the new templates.

  8. 100 on desktop

    Performance, Accessibility, Best Practices and SEO, all four.

  9. The finishing pass

    Author pages, contact, testimonials, a newsletter wired to my email list, and a homepage hero that changes on every visit.

Then the morning after.

A redesign is not finished when it goes live. I kept reading the site as a visitor would and sent the agent what I found, screenshots from my phone included.

  1. Internal links

    23 links added inside old articles, and every article now points to the three published before it in its category.

  2. llms.txt

    A file for AI assistants, listing pages and articles I chose, with no sponsored posts.

  3. Yoast, across the site

    Thousands of empty feeds retired, one identity in the schema, sensible titles and descriptions.

  4. Bug reports from my phone

    Raw theme code in old articles, and a journal link that led to an empty page.

  5. Category pages

    A small magazine instead of a grid: boxes in different sizes, authors, reading time, filters.

  6. Special sections and the menu

    The same layout on the author and topic pages, then a check of all 40 pages in the navigation.

  7. Photo report

    Missing pictures traced across the library, and a dark, large format layout for a 2012 interview.

  8. A 404 worth landing on

    A hide and seek joke, a search filled in from the broken address, and ways onward.

  9. Illustrations

    Hand-painted looking pictures through the homepage, the club and the footer, with small handwritten notes.

How it was done.

01

It started with a prompt and one HTML file.

I described what I wanted, in Romanian, and asked for a single self-contained HTML file: all CSS in one block, design as custom properties, no scripts, real images and real copy. Those are the rules that let Respira Exhale turn a page into page builder blocks. The last line of the prompt set the bar: make this an award-winning positive parenting blog for conscious parents interested in personal development.

vreau un design nou pentru www.urbankid.ro, mai modern, care să pună articolele și conținutul actual în valoare, autorii, care să se încarce repede, să fie responsive

I want a new design for urbankid.ro. More modern, one that shows off the current articles and content and the authors, loads fast and is responsive.

The opening of my prompt
02

Exhale turned it into a Divi page, next to the live site.

The new homepage lived at a noindexed address while the old one kept serving readers. Nothing changed for anyone until I said so. The first pass put too much into plain text blocks, so I asked for what I wanted: native Divi modules, editable in the Visual Builder. The agent rebuilt it that way.

03

The agent read the whole library before designing around it.

Seventeen years of writing is not one kind of content. School compositions became notebook pages. Long homeschooling translations got a reading layout with a contents list and an author shelf. Categories became photo grids. Dana’s first post from March 2009 got a place on a timeline.

Three UrbanKID layouts side by side: a school composition on a notebook page, the holidays category as a photo grid, and an illustrated article about raising a reader
04

Every ad script and banner came out.

AdSense, AdOcean, Gemius, the Facebook pixel, Clarity and a Tag Manager container were all removed. They earned a few dollars a month and cost readers 8 MB. Consent was the part worth getting right: the cookie banner never told GA4 when someone accepted, so that bridge is now in place too.

05

Then the old articles got real paragraphs.

4,455 posts from the early years had no paragraphs at all, one line break between thoughts. They now display with proper breaks, from 28,889 paragraphs to 59,513 across the library, and long walls of text split at sentence ends. The stored text is untouched, and the agent compared the words on all 6,085 posts to prove it.

A 2015 UrbanKID travel article about Orșova, its text now in real paragraphs around a photo of the Decebalus rock sculpture
06

Old articles got linked to each other.

An archive this old is full of pieces nobody reaches. The agent read the library, proposed links where one article already talked about another, and I approved them: 23 inside the text, placed by hand. Every article also ends with the three published before it in its category, so even a post from 2010 leads somewhere.

07

Yoast stayed, and got configured properly.

I asked whether Rank Math would be better. The agent recommended staying: a migration across 6,085 posts was a bigger risk than anything it would gain. Instead it retired the comment, tag, author and search feeds, removed a second canonical tag Divi was printing on archives, gave the site one Organization in its schema, marked the about, contact and section pages for what they are, and turned on llms.txt.

08

Category pages stopped being boring.

Twelve equal boxes say nothing about what matters. Every category and section page now opens with one large story and steps down through medium, wide and small boxes, with the subcategory, author, date and reading time on each. Facts sit under the title, and readers can filter by author and year or sort by oldest and most commented. Filtered views stay out of Google, so thousands of combinations cannot become thin pages.

The UrbanKID holidays category: a large lead story beside smaller ones, with author and year filters above
09

One old interview became a photo report.

An interview from 2012 had lost its pictures, and it turned out not to be alone: 2,317 images in 1,190 articles pointed at files that no longer exist, because resized copies were renamed years ago. The page now shows the best copy still on the server, without touching the stored text. For this interview I asked for something closer to The Big Picture: a dark band, large numbered photos, the text in a narrow column between them.

10

Then I made it feel less like a template.

The layout worked, and it still looked like what an AI makes. So I made a set of watercolor style illustrations with an image model, one for each part of the site: a journal growing into a tree, rain in a jar, a map turning into mountains, a treehouse for the newsletter, woods along the footer. They break the grid on purpose, slightly tilted, crossing the edges of their sections, with a short handwritten note beside them. A bookshelf gets "fără praf, promit", no dust, I promise. Some of them also came back on the category pages they belong to.

The UrbanKID travel section: a watercolor map, hiking boots and a backpack beside the heading, with a handwritten note

What went wrong, and got caught.

An agent moving this fast breaks things. What matters is whether it notices. These are the real ones from those two days, in the order they happened.

  1. The preview went blank on scroll.

    Delaying an old ad script made it wipe the whole page. A failing screenshot script exposed it before the switch.

  2. A paragraph filter cut compositions short.

    One article went from 393 words to 9 on a test page. The word count check caught it, and the switch waited until a comparison across every post came back clean.

  3. The new homepage pointed Google at the preview.

    The canonical tag still said /respira right after the switch. Found in the post-launch audit and fixed within minutes.

  4. A stray quote mark brought the ads back.

    A syntax error switched the cleanup code off for a few minutes. Lighthouse showed it at once. Every deploy now stops if the syntax check fails.

  5. Old theme code appeared as text.

    I found [dt_highlight] in the middle of an article, on my phone. Leftovers from a theme and a page builder removed years ago were showing in 195 posts. They now render or disappear at display time, and a scan of those posts found none left.

  6. The journal link led to an empty page.

    That one was the agent’s own. It had hidden the journal from article lists, and the rule also emptied the journal’s own page, along with two sponsored categories. I reported it from my phone, and it was fixed in the same sitting.

  7. Three menu pages listed the wrong articles.

    Checking the navigation found section pages built on category numbers that no longer exist. Unde ieșim and Siguranță auto had been showing the latest posts from the whole site.

What stayed exactly as it was.

30 hand-built pages
Festival pages, maps, sliders, anything designed by hand in Divi. A site rule in Respira protects them, so they keep their own look.
The addresses
Every article kept its URL. The one exception is a sponsored post I moved to the sponsored section on purpose, with a redirect.
The old homepage
It still exists at its own address, noindexed, in case I want to look back at it. One setting brings it back.

What this did not fix.

  • A phone score of 100. Divi carries a lot of CSS and JavaScript, and the homepage is long.
  • Every old picture. About 1,600 files have no copy left on the server, and the Internet Archive has returned roughly one in ten so far. The rest are gone unless an older backup turns up. Photo galleries from a plugin removed long ago are missing from more than 100 posts for the same reason.
  • PageSpeed is a lab test. Real reader data takes weeks to show up, so I cannot show you rankings yet.
  • This is my own site and I build Respira, so read it with that in mind. I wrote down the mistakes for the same reason.

Your old WordPress site can get this too.

Respira lets Claude, ChatGPT and other AI assistants work on your live WordPress site, in your own page builder, with a snapshot before every change.