Case Study
I audited the old site at 44 out of 100, rebuilt it in Astro in three directions, with the White one in English and Spanish, and re-scored it at 80.
The six answers
Problem · What was wrong with the old site?
It scored 44 out of 100.
On May 20, 2026 I audited the old site with Claude Code's seo-audit skill: 44 out of 100, with no structured data and no meta description on any of its 107 pages, and about 20 theme-demo pages indexed.
Read the full brief
A client project for a skilled nursing and rehabilitation resort in Miami, shown here as Solavelle so the client stays private. On May 20, 2026 I audited the old site with Claude Code's seo-audit skill: 44 out of 100, with no structured data and no meta description on any of its 107 pages, and about 20 theme-demo pages indexed. The next day I crawled and archived all 141 pages and 235 assets.
I rebuilt it in Astro with Claude Code from that archive, then built three directions, with the White one in English and Spanish for its Miami families. Re-scored on the same rubric on June 25, it reached 80, with every Critical and High audit item fixed. The redesign blueprint sets out the work in twelve parts: what I did, what I used and why.
Approach · What did you rebuild, and how?
A static Astro site, in three directions.
I rebuilt it in Astro with Claude Code from that archive, then built three directions, with the White one in English and Spanish for this Miami business.
Search · Can families and search engines find it?
The White direction in two languages, with every search score up.
A Miami business, so the White direction is in English and Spanish. Its own title and description on every page. Structured data score 8 → 70. AI search readiness score 30 → 82.
Usability · Is it fast, accessible and private?
Faster, with accessibility basics and no trackers on load.
Images score 25 → 92. Skip link, labels and focus on every page. No ad cookies or video trackers on load.
Results · How do you know it worked?
Re-scored 44 → 80 on the same rubric.
Re-scored on the same rubric on June 25, it reached 80, with every Critical and High audit item fixed.
Compare · Can I see it?
Six pages, side by side.
The before is each page of the old site as its crawl archive recorded it. The after is the redesigned page, captured from the live demo.
Every result

The Black direction's home page, captured from the live demo on October 24, 2026.
Website redesign case study
The problem and the scope
SEO audit, website redesign and AI-assisted build · Client project, shown as Solavelle · 2026
A client project for a skilled nursing and rehabilitation resort in Miami, shown here as Solavelle so the client stays private. On May 20, 2026 I audited the old site with Claude Code's seo-audit skill: 44 out of 100, with no structured data and no meta description on any of its 107 pages, and about 20 theme-demo pages indexed. The next day I crawled and archived all 141 pages and 235 assets.
I rebuilt it in Astro with Claude Code from that archive, then built three directions, with the White one in English and Spanish for its Miami families. Re-scored on the same rubric on June 25, it reached 80, with every Critical and High audit item fixed. The redesign blueprint sets out the work in twelve parts: what I did, what I used and why.
I wrote the audit and action plan, a score-comparison report and a proposal in six revisions, each rendered to a branded PDF. In September I added a content model with Zod schemas, a Supabase database with row-level security and Vitest tests, preparing the site for an editor without changing what visitors see.
- Built with
- Astro, TypeScript, CSS, HTML, Vercel, Zod, Supabase, PostgreSQL
- Dated features
- 31
- Pages compared
- 6
- Period
- May 20 to June 25, 2026
Solavelle is a showcase identity that keeps the client private: the client's name, logo, copy, photographs and contact details are replaced, while the dates, tools, counts and scores are the original project's own.
141
pages archived
This answers
It turned the old site's problems into a ranked list of work and a baseline to prove the result.
May 20 · May 21
Part 1 of 12
Research and planning
141 pages archived, audited at 44 out of 100
2 dated features
- What I did
- Ran a full SEO audit of the old site on a seven-category weighted rubric, with every finding ranked Critical, High, Medium or Low. It scored 44 out of 100.
- What I used
- Lighthouse, Chrome UX Report field data, Chrome DevTools, BeautifulSoup, Claude Code, Codex
- Why
- It turned the old site's problems into a ranked list of work and a baseline to prove the result.
- What I did
- Crawled and archived the whole old site, every page saved as HTML, text and metadata with its images, fonts and scripts: 141 pages and 235 assets.
- What I used
- Claude Code, site-clone-redesign skill, Codex
- Why
- The rebuild took its copy and photos from the archive, and nothing the business had written was lost.
3
directions
This answers
There is far less to keep secure, the pages are faster, and hosting is simple.
June 2 · June 25
Part 2 of 12
Platform and build
WordPress replaced by a static Astro site
3 dated features
- What I did
- Replaced the WordPress site with a static Astro site: no CMS, no database and no plugins to patch.
- What I used
- Astro 5, @astrojs/sitemap, Claude Code, Codex
- Why
- There is far less to keep secure, the pages are faster, and hosting is simple.
- What I did
- Built three directions, White, Black and Gold, on one content structure, each with its own palette and type.
- What I used
- Astro layouts, CSS design tokens, Claude Code, Codex
- Why
- The client chooses a look without changing content or SEO.
- What I did
- Deployed each direction to its own Vercel address from one build, with a workflow that builds and deploys all three whenever the site changes.
- What I used
- Vercel, a deploy script, GitHub Actions, Claude Code, Codex
- Why
- Every change ships to every version the same way, with no manual step to forget.
10
focused pages
This answers
Search engines spend their time on real pages, and pages stop competing with each other.
June 2 · June 2 to 25 · June 25
Part 3 of 12
Pages and content
Ten focused pages, the junk cleared out
4 dated features
- What I did
- Cleared out the junk: about 20 theme-demo pages, three overlapping services listings, duplicate copies of pages, an admin author archive and a 27-post blog from 2017.
- What I used
- The audit's crawl, Claude Code, Codex
- Why
- Search engines spend their time on real pages, and pages stop competing with each other.
- What I did
- Built ten focused pages in each direction from the archive's own copy: home, facility, team, services, all services, rehabilitation, careers, contact, emergency rules and visitation.
- What I used
- Astro, the archive, Claude Code, Codex
- Why
- Families find care, see the facility and call in fewer clicks.
- What I did
- Checked every fact in the copy against the archive and the audit: the city in the address, the main phone line and the fax number each in its own place, and every team bio on its own page.
- What I used
- The archive, the audit's contact data, Claude Code, Codex
- Why
- The same name, address and phone everywhere is a local-search factor, and every fact comes from the business itself.
- What I did
- Put trust signals on the home page: the accreditation and the Five-Star rating, with facts such as the bed count and the hours of therapy each day.
- What I used
- A statistics band on the home page, Claude Code, Codex
- Why
- Credibility for search engines (E-E-A-T) and reassurance for families.
Home
The old home page autoplayed a YouTube video in its hero on every visit, which set cookies before visitors agreed. The redesign has no video and makes no third-party requests on load.


Our Facility


General Services
The old page, like every page of the old site, had no meta description and no structured data; the redesign gives every page a title, a description and structured data.


Rehabilitation


Careers


Contact


The before is each page of the old site as its crawl archive recorded it, rendered from its own HTML, CSS and fonts with the client's identity replaced: the layout, type and colors are the original's, faults included. The after is the redesigned page, captured from the live demo.
#C3A303 · #A07F2F · #D6B673 · #1A1A18 · #FFFFFF
This answers
A distinctive, premium look in place of a stock theme, and three real choices for the client.
June 25
Part 4 of 12
Visual design and experience
White, Black and Gold, three ways to look
4 dated features
- What I did
- Designed three directions from the brand: White, an editorial magazine look with Volume, Issue and Chapter markers in bronze on white; Black, in ivory and gold on near-black; and Gold, in gold and cream with emerald.
- What I used
- CSS design tokens, Google Fonts, Claude Code, Codex
- Why
- A distinctive, premium look in place of a stock theme, and three real choices for the client.
- What I did
- Placed the full logo in the header, the mobile menu and the footer, with a transparent footer logo on White and the white wordmark on Gold.
- What I used
- Logo artwork, CSS, Claude Code, Codex
- Why
- The brand reads clearly on every background.
- What I did
- Replaced the autoplay YouTube video with a four-slide photo hero: the headline over crossfading slides, with slide dots.
- What I used
- CSS, Claude Code, Codex
- Why
- It loads far faster and sends no video or ad requests.
- What I did
- Built a mobile drawer that slides in and closes with Escape or a tap outside, and a sticky top bar on every direction that carries the language switch.
- What I used
- CSS, JavaScript, Claude Code, Codex
- Why
- Most families browse on a phone, and the menu and the language stay one tap away.
EN · ES
This answers
The resort is a Miami business, and the site reaches the many Spanish-speaking families it serves.
June 25
Part 5 of 12
Language (English and Spanish)
The White direction in English and Spanish
3 dated features
- What I did
- Built the full Spanish site for the White direction: ten Spanish pages, with the services, the team and the testimonials translated, and a language switch.
- What I used
- Astro i18n routing, translated content files, Claude Code, Codex
- Why
- The resort is a Miami business, and the site reaches the many Spanish-speaking families it serves.
- What I did
- Chose each visitor's language from the browser's own settings, tested in 15 scenarios.
- What I used
- navigator.languages, JavaScript, Claude Code, Codex
- Why
- A browser set to Spanish arrives in Spanish, without looking for a switch.
- What I did
- Linked every page to its twin with hreflang tags, x-default included, and sized the Spanish menu and headings so long words fit.
- What I used
- hreflang link tags, CSS for Spanish pages, Claude Code, Codex
- Why
- Search engines can match each family with the right language, and long Spanish words fit.
Every page
This answers
Clearer search snippets, more clicks, and clean previews when a page is shared.
June 25 · June 2 to 25
Part 6 of 12
Search (SEO)
Its own title and description on every page
3 dated features
- What I did
- Gave every page, in both languages, its own title, description and canonical address, with Open Graph and Twitter card tags.
- What I used
- Astro layouts, Claude Code, Codex
- Why
- Clearer search snippets, more clicks, and clean previews when a page is shared.
- What I did
- Led the home page with a keyword title naming the care, skilled nursing and senior rehabilitation, and the city.
- What I used
- On-page copy, Claude Code, Codex
- Why
- It tells Google exactly what the business is and where.
- What I did
- Produced a new robots.txt with a Sitemap line and no crawl delay, where the old one let a crawler read one page every 30 seconds, and generated a sitemap for each direction.
- What I used
- robots.txt, @astrojs/sitemap, Claude Code, Codex
- Why
- Search engines crawl the whole site quickly.
Both scores use the audit's seven-category SEO rubric, built from a crawl of the site and Lighthouse lab runs. It is not a Google score. The re-score measured the rebuild on the same rubric, and each category counts toward the total by its weight.
| Category | Weight | Before | After | Change | Chart |
|---|---|---|---|---|---|
| Technical SEO | 25% | 58 | 80 | +22 | |
| Content | 25% | 42 | 74 | +32 | |
| On-page SEO | 20% | 40 | 88 | +48 | |
| Structured data | 10% | 8 | 70 | +62 | |
| Performance | 10% | 72 | 85 | +13 | |
| Images | 5% | 25 | 92 | +67 | |
| AI search | 5% | 30 | 82 | +52 | |
| Total | 100% | 44 | 80 | +36 |
BeforeAfter
Recorded in part 1, Research and planning and part 12, Testing and proof.
- Every oneCritical and High audit findings resolvedRecorded in part 12, Testing and proof
- Every pagePages with their own title and descriptionRecorded in part 6, Search (SEO)
Before: 96 kBAfter: 3 kBBadge imagesRecorded in part 9, Speed- 50 to 75% smallerPhotographs, after the image pipelineRecorded in part 9, Speed
Before: One page every 30 secondsAfter: NoneCrawl delay in robots.txtRecorded in part 6, Search (SEO)
8 → 70
BeforeAfter
This answers
Search engines read the business's facts without guessing, which supports local results and the map pack.
June 25
Part 7 of 12
Structured data
Structured data score 8 → 70
1 dated feature
- What I did
- Added MedicalBusiness JSON-LD to every page of every direction: the name, postal address, map coordinates, medical specialty and area served.
- What I used
- JSON-LD (schema.org), Claude Code, Codex
- Why
- Search engines read the business's facts without guessing, which supports local results and the map pack.
30 → 82
BeforeAfter
This answers
AI assistants can read an accurate summary of the business.
June 2
Part 8 of 12
AI search
AI search score 30 → 82
2 dated features
- What I did
- Published llms.txt, a plain summary of the business and its care for AI assistants.
- What I used
- llms.txt, Claude Code, Codex
- Why
- AI assistants can read an accurate summary of the business.
- What I did
- Set explicit allow rules for GPTBot, ClaudeBot and PerplexityBot in robots.txt.
- What I used
- robots.txt, Claude Code, Codex
- Why
- The named AI crawlers are allowed to read the whole site.
25 → 92
BeforeAfter
This answers
Faster pages keep visitors from waiting: Performance went from 72 to 85.
June 2 to 25 · June 2
Part 9 of 12
Speed
Images score 25 → 92
2 dated features
- What I did
- Rebuilt the site as static pages, without the WordPress theme, its sliders and plugins, or the autoplay video that made more than 50 third-party requests on the home page.
- What I used
- Astro static build, Claude Code, Codex
- Why
- Faster pages keep visitors from waiting: Performance went from 72 to 85.
- What I did
- Ran every content image through one pipeline: WebP, responsive sizes, and a width and height on every image. The badges went from 96 kB to 3 kB, and the photographs came out 50 to 75% smaller.
- What I used
- Astro image pipeline, Claude Code, Codex
- Why
- Faster loading and no layout shift as the page arrives.
I designed three directions on one content structure: White, an editorial layout with magazine-style numbered inner pages, and Black and Gold, which change the type, atmosphere and emphasis over the same content.
For this showcase I directed a new identity, Solavelle: a flowing S symbol with a serif wordmark and a widely spaced descriptor, in full, light and icon versions.
Basics
on every page
This answers
Easier for older visitors and for keyboard and screen-reader users.
June 25
Part 10 of 12
Accessibility
Skip link, labels and focus on every page
2 dated features
- What I did
- Built to the WCAG 2.1 AA basics: a skip link, a main landmark, labeled form fields, a titled map, visible keyboard focus and pinch zoom allowed.
- What I used
- Semantic HTML, ARIA labels, CSS focus styles, Claude Code, Codex
- Why
- Easier for older visitors and for keyboard and screen-reader users.
- What I did
- Wrote alt text for the images and turned the motion off for visitors who ask for reduced motion.
- What I used
- Alt attributes, prefers-reduced-motion, Claude Code, Codex
- Why
- Screen readers describe the photographs, and motion-sensitive visitors get a still page.
None
on load
This answers
Visitors are not tracked by an ad network for opening the home page.
June 25 · June 2
Part 11 of 12
Privacy and security
No ad cookies or video trackers on load
3 dated features
- What I did
- Removed the autoplay YouTube hero, and with it the DoubleClick advertising cookies and the third-party requests it fired the moment the home page opened.
- What I used
- Self-hosted photo slides, Claude Code, Codex
- Why
- Visitors are not tracked by an ad network for opening the home page.
- What I did
- Replaced WordPress with static files: no login page, no database, no plugins, and no server or CMS version announced in the page.
- What I used
- Astro static build, Claude Code, Codex
- Why
- It removes the most common ways a small business's site is attacked.
- What I did
- Served every page over HTTPS with HSTS.
- What I used
- Vercel, Claude Code, Codex
- Why
- Browsers are told to connect only over HTTPS.
15
scenarios
This answers
An apples-to-apples result the client and the portfolio can stand behind.
June 25
Part 12 of 12
Testing and proof
Re-scored 44 → 80 on the same rubric
2 dated features
- What I did
- Re-scored the White build on the same seven-category rubric: 44 to 80, with every Critical and High finding resolved.
- What I used
- The audit rubric, Claude Code, Codex
- Why
- An apples-to-apples result the client and the portfolio can stand behind.
- What I did
- Tested the browser-language choice in 15 scenarios and ran a dry build of each direction, checking its pages and its sitemap, before deploying.
- What I used
- Scripted checks, staging builds, Claude Code, Codex
- Why
- Problems are caught before the client sees them.
Solavelle is a showcase identity that keeps the client private: the client's name, logo, copy, photographs and contact details are replaced, while the dates, tools, counts and scores are the original project's own.
Where the figures come from
- Scores use the audit's seven-category SEO rubric. It is not a Google score, and it measures the site itself, not search rankings, traffic or inquiries.
- The live demos carry the Solavelle showcase identity, with replacement copy and photographs. The scores and measurements above come from the original client build, re-scored on June 25, 2026, not from the demos.
- The before captures rebuild the archived pages from their own HTML, CSS and fonts with the client's identity replaced, so their copy and photographs are not the original's; their layout, type and colors are.
- The audit reports, proposals and other client records are private, so none is published or offered for download here.



