Redesign with Fable 5.2
Question: Can one prompt to Claude Fable 5.2 turn my site into a clear, easy-to-read design, and what does it cost?
Result: One run of 106 minutes: the headline reads at once (0.07 s, was 0.94 s), body text is 17 px (was 14), nothing moves on an idle page, and the run's tokens come to USD 48.02 at API list prices.
- Capability
- An AI coding model writes the code for a redesign of a live site from one written brief: the layout, a light and a dark theme, the experiment replays and the checks.
- In practice
- Anthropic released Claude Fable 5.2 on 9 Nov 2026, and two days later I had the perfect test for it. This site had just gone public, and the first feedback was that it was hard to read: a real site, a real problem and a result anyone can check. I wrote one brief: light by default, reading first, no swarm opener. Fable 5.2 wrote the code in one run on 11 Nov, and the redesign went live on 12 Nov. The same week I also used it to review this site’s copy and to build my next experiment. I set the direction and approve every result before it goes live.
- Limits
- One model, one run, one site. The run is measured from its own records after it ends: time, tokens and the API list price of those tokens. The before and after figures are measured on this site only.
What was measured
Before is the site as it went public (v3.12.3), measured on 11 Nov 2026. After is the run’s result, measured on 12 Nov 2026, the day after the run.
| Measure | Before | After | How it was measured |
|---|---|---|---|
| Headline readable, phone | 0.94 s | 0.07 s | Headless Chrome at 390×844: time from the start of loading until the headline is fully visible and nothing covers it. |
| Headline readable, laptop | 0.83 s | 0.05 s | The same at 1440×900. |
| Opening animation | 2.7 s | None | Until the swarm finished drawing the page, phone. |
| Animation frames on an idle page | 27 per second | 0 per second | Frames requested 12 to 15 s after load, when nothing is happening on the page. |
| Body text size | 14 px | 17 px | Median of the home page's paragraphs. |
| Text contrast, median paragraph | 8.2:1 | 9.5:1 | WCAG contrast of the text against its background, home page. |
| Lowest text contrast | 5.5:1 | 6.0:1 | The weakest paragraph on the home page. WCAG AA asks for 4.5:1. |
| Home page weight | 179 KB | 118 KB | Bytes transferred on the first load, phone. |
| JavaScript on the home page | 15 KB | 5 KB | Bytes transferred on the first load, phone. |
| Lighthouse mobile, home | 99 · 100 · 100 · 100 | 100 · 100 · 100 · 100 | Performance, accessibility, best practices, SEO. |
| Largest paint, home | 1.95 s | 1.05 s | Lighthouse mobile, a simulated mid-range phone. |
| Lighthouse mobile, experiment pages | 100 on all 3 | 100 on all 3 | Earnings desk, This site, Local vs cloud; all four scores. |
| Theme | Dark only | Light, dark on a switch | What a first-time visitor sees. |
The setup
I wrote one brief and set the direction. The model wrote the code in one run. I reviewed the result before it went live.
- Model
- Claude Fable 5.2wrote the code in one run
- Effort
- xhighthe reasoning setting
- Wall time
- 106 min106 min of it active
- Cost
- USD 48.02at API list prices
- Run date
- 11 Nov 2026
- Started
- 11 Nov 2026, 19:30 UTC
- Ended
- 11 Nov 2026, 21:16 UTC
- Active time
- 106 min
- Requests
- 263
- Tool calls
- 349
- Sub-agents
- 1
- Input tokens
- 538
- Cache write tokens
- 1,035,199
- Cache read tokens
- 91,162,891
- Output tokens
- 390,324
- Files changed
- 63
- Lines added
- 3,502
- Lines removed
- 6,354
- Prices checked on
- 11 Nov 2026
How the cost was computed. It is what the run’s tokens cost at API list prices: input, cache write, cache read and output, each at its own rate. The run itself used a Claude subscription, so that amount was not billed.
Read the prompt (1,401 words)
[Edited for publishing. I left out the lines about the site's photos, the name of the designer whose work I used as a reference, my internal notes, and details of my machine, repository and setup such as file paths, ports and test names. The direction is as I sent it.]
# Redesign vladislavivanov.ai for reading (EXP-004)
You are working alone in a fresh checkout of the repository behind vladislavivanov.ai, the public personal site of
Vladislav (Vlad) Ivanov. Vlad is not available for questions while you work: make reasonable calls, write them
down, and finish.
## Why
The site went public on 11 Nov 2026 (v3.12.3). The first feedback: it is hard to read. The home page opens with a
"swarm" animation (cursors that draw the page), lines move behind the hero, and the look is dark and layered. Vlad
now wants the opposite. In his words: the information should be "really easy to read", the design "clear, modern,
but clear", with "a white theme, and the white theme to be the default one".
This redesign is itself an experiment that the site will publish as EXP-004: this prompt, the model (you, Claude
Fable 5.2), the time and tokens of this run, and before / after measurements. Your run is measured from outside
(transcript tokens, wall-clock time, the git diff), so you don't need to track it. Work the way you normally would.
## Design direction
- Light theme by default for every visitor, and a dark theme the visitor can switch to. Remember the choice, and
never flash the wrong theme while the page loads. Both themes pass WCAG AA.
- Reference: a designer's recent work on clean dashboards and cards, shared as screenshots. Take the feel: a calm
light canvas, white cards with soft depth and generous radius, big confident numbers with small quiet labels,
precise alignment, restrained colour. Take the feel and techniques only. Never copy the layouts, code, copy or
assets.
- Reading first: comfortable body size, short lines, strong contrast, a clear hierarchy, plenty of space. Text is
readable the moment the page loads: no intro animation, and nothing that hides or delays text. Motion only where
it explains something (the experiment replays), and always honour `prefers-reduced-motion`.
- Professional, not a template. Avoid hairline grids with a mono uppercase eyebrow on every block, numbered
01/02/03 cards, purple or blue gradients, italic accent words, alternating section background colours (Vlad
declined those), and dot fields or dot-matrix numbers (declined too).
- Keep the brand: the name followed by the blue dot, and Geist with Geist Mono (already self-hosted). You may
retune the blue for the light theme.
## What stays
- Copy and facts. The source of truth is the site's data and the current components. Keep the hero headline
"I test AI myself, then put it to work with your team." and the line "Helping you choose the right AI tools for
your processes." verbatim. Never invent facts, clients, metrics, quotes or dates. If a layout needs shorter copy,
tighten it and log every change as old → new.
- Sections: the intro; AI in Practice (the lab, the most important and most visible part of the page); how I help
(three ways: "One workflow at a time", "Choosing the right tools", "Staying for the long middle"); the career
history (keep Microsoft Dynamics and XAPT CEE); life beyond work; contact (email first, then LinkedIn and X).
- The lab: a list of experiments next to the open one (on wide screens a sidebar list like a chat app, on phones a
horizontal tab strip), each experiment also on its own page `/lab/<id>/`, and the replays (Earnings desk, This
site, Local vs cloud) restyled for both themes. Keep the lab's behaviour: experiments load on demand, deep links
`/#<id>` work, and a newly opened experiment starts at the window's top. Every experiment ends with Email me,
LimeShift.ai and LinkedIn.
- Every page and file the site serves today keeps working: the home page, the experiment pages, the 404 page,
`robots.txt`, `sitemap.xml`, `llms.txt`, `llms-full.txt`, the structured data and the link-preview cards.
- The swarm opener leaves the home page. EXP-002 (This site) stays as an experiment record with its replay: set its
state to Complete and add one factual line saying the swarm opener was retired in this redesign for readability
(log it).
## GEO fixes to fold in
From a GEO audit of the site (how well AI search engines can read and cite it):
- Each experiment opens with its question and a one-line Result that answers it, before the details. Build both from
the existing data; no new claims.
- A visible Published and Updated date on each experiment, from one source of truth. Updated is the date of the last
commit that changed that experiment's content, never the build time. Use the same values in JSON-LD
`datePublished` / `dateModified`, the sitemap `lastmod` and `llms-full.txt`.
- Person JSON-LD as the audit suggests: employers in `worksFor`, not `sameAs`; `sameAs` lists X, GitHub, Bluesky,
TheOrg and LinkedIn; `alternateName` is "Vlad Ivanov", "Владислав Иванов", "vlAIdislav"; each Organization gets
its own `sameAs` (LimeChain with its Wikidata entry).
## EXP-004, the page about this run
Add EXP-004, "Redesign with Fable 5.2", as an experiment that stays hidden from the public site until Vlad
publishes it. Its numbers come from a data file that I fill in after your run. Create that file with this shape and
null values, and make the page show "Measuring" wherever a value is null:
```json
{
"question": "Can one prompt to Claude Fable 5.2 turn my site into a clear, easy-to-read design, and what does it cost?",
"result": null,
"runDate": null,
"prompt": { "href": null, "words": null },
"run": {
"model": "Claude Fable 5.2", "effort": null, "startedAt": null, "endedAt": null,
"wallMinutes": null, "activeMinutes": null, "requests": null, "toolCalls": null, "subagents": null,
"tokens": { "input": null, "cacheWrite": null, "cacheRead": null, "output": null },
"costUsd": null, "pricesCheckedOn": null,
"filesChanged": null, "linesAdded": null, "linesRemoved": null
},
"measures": [],
"limitations": [],
"didNotWork": []
}
```
Each `measures` item will be `{ "name", "before", "after", "unit", "how" }`; `limitations` and `didNotWork` are
lists of sentences. Page order, as a measured case study like EXP-003: the question and the result; what was
measured (a dated before / after table); the setup (model, effort, the full prompt behind a disclosure, and how the
cost was computed: API list prices, while the run itself used a Claude subscription); limitations; what didn't
work; the usual ending. It is Vlad's experiment: he set the direction and approves the result, and the model wrote
the code.
## Technical constraints
- Static output, plain CSS and JS as today. No third-party requests at runtime. Self-hosted fonts only.
- The site stays small: under 3 MB gzipped. Aim for less JavaScript than today.
- Accessibility: semantic HTML, one h1 per page, heading levels in order (the lab lifts experiment pages into the
home page and demotes their h1 / h2 to h3 / h4; keep that working), keyboard reachable with visible focus, touch
targets at least 24 px, the existing alt texts, readable without JavaScript.
- Responsive at 390×844, 768×1024, 1280×800 and 1440×900, with no horizontal scrolling. Safari matters.
- Lighthouse mobile stays 100 / 100 / 100 / 100 on the home page and the experiment pages.
- Visible copy: first person, plain; no em or en dashes and no spaced hyphen used as a dash; never "advisor"; no
client names; no hard promises or dates for future work.
## Checks before you finish
- Build the site and run every existing build and deploy test. All must pass. If a test fails only because it
checks something this redesign removes on purpose (the swarm, for example), update the test and say so.
- Look at the real pages in a real browser at phone and desktop sizes, in both themes: screenshots, console errors,
a keyboard tab-through, reduced motion, JavaScript off. Headless Chrome or Playwright is fine. Keep throwaway
scripts outside the repo, and stop any server you start when you are done.
- Grep the built HTML for "—" and "–".
- Before you finish, have a fresh-context reviewer sub-agent compare your screenshots and the built site with this
brief, and fix what it finds.
## Hand-off
- Work on a new branch and commit in sensible steps. Don't push, don't deploy, and don't touch anything outside this
checkout.
- Add a changelog entry under [Unreleased]. Don't bump the version.
- Write notes for Vlad: the direction and why, what changed, the copy changes old → new, known gaps.
- Your final message: what you built, the branch and last commit, how to run it, known gaps. Keep it short.Limitations
- One model, one run, one site. The same prompt could come out differently on another run.
- Before and after are local builds of this site, measured the same way in headless Chrome: before on 11 Nov 2026 (the version that went public), after on 12 Nov 2026 (the run’s result). Later edits to the site are not measured here.
- The time is the run's own, from its first request to its last. Writing the prompt and my review afterwards are not in it.
- The cost counts every token of the run, including its reviewer: a fresh-context check of the finished site that alone came to USD 13.52.
What didn’t work
- The run stopped at the Claude plan's 5-hour usage limit after 106 minutes, in its last screenshot pass and before its final commit. Every check had already passed with those changes, so I committed them as they were.
- Claude Code's own cost counter showed USD 33.13. It did not know Fable 5.2's prices yet and used another model's rates; the figure here uses Fable 5.2's list prices.
Want to see what one clear brief and an AI coding model can do on your own work, with your people approving the result? Let’s talk.