All experiments

EXP-004CompletePublished Updated

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.

MeasureBeforeAfterHow it was measured
Headline readable, phone0.94 s0.07 sHeadless Chrome at 390×844: time from the start of loading until the headline is fully visible and nothing covers it.
Headline readable, laptop0.83 s0.05 sThe same at 1440×900.
Opening animation2.7 sNoneUntil the swarm finished drawing the page, phone.
Animation frames on an idle page27 per second0 per secondFrames requested 12 to 15 s after load, when nothing is happening on the page.
Body text size14 px17 pxMedian of the home page's paragraphs.
Text contrast, median paragraph8.2:19.5:1WCAG contrast of the text against its background, home page.
Lowest text contrast5.5:16.0:1The weakest paragraph on the home page. WCAG AA asks for 4.5:1.
Home page weight179 KB118 KBBytes transferred on the first load, phone.
JavaScript on the home page15 KB5 KBBytes transferred on the first load, phone.
Lighthouse mobile, home99 · 100 · 100 · 100100 · 100 · 100 · 100Performance, accessibility, best practices, SEO.
Largest paint, home1.95 s1.05 sLighthouse mobile, a simulated mid-range phone.
Lighthouse mobile, experiment pages100 on all 3100 on all 3Earnings desk, This site, Local vs cloud; all four scores.
ThemeDark onlyLight, dark on a switchWhat 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.

Contact

Let’s talk.

If you want AI to show up in how your company works on Monday morning, start with a message.