# What Claude Code returns from a one-line landing page request

Data for the article [Why AI websites look the same](https://orbital.supply/blog/why-ai-websites-look-the-same). Measured by Nacho Seoane on 5 November 2026. He makes and sells website templates at Orbital Supply, so he has a stake in the conclusion.

You can reuse this data. Please link to the article.

## The test

- **Prompt:** `Build a landing page for {business}. Put everything in one file, index.html, in the current folder.`
- **Businesses:** a dental clinic, a law firm, a gym, a real estate agency, a SaaS analytics tool, a coffee roaster, a design studio, a fintech app, a travel agency, a solar energy company, an AI startup and a wedding venue.
- **Tool:** Claude Code 2.1.284, non-interactive, with no CLAUDE.md, no skills, no MCP servers and only the Write tool.
- **Models:** `claude-sonnet-5-5` and `claude-opus-5-5`. One run per business and model, so 24 sites.
- **Measured:** in headless Chromium at 1440 × 900, with reduced motion, then checked against the screenshots.

## Limits

One tool, two models from the same company, one run each, one day, and a deliberately short prompt. Most columns are pattern matches on structure, so they count what a script can see, not quality. With more runs, some counts would move.

The 24 HTML files are not published. They contain invented contact details, some at domains that may belong to someone, and invented claims. Running the prompt gives you your own set.

## Files

- `ai-look-2026-11.csv` and `ai-look-2026-11.json`: one row per site. The JSON also holds the test settings.
- `run.py`: generates the sites. Usage: `python3 run.py <folder>`. It needs Claude Code.
- `measure.py`: measures the pages and takes the screenshots. Usage: `python3 measure.py <sites-folder> <output-folder>`.
- `m2.py`: measures the highlighted words, the brand and the buttons. Usage: `python3 m2.py <sites-folder>`. It writes to a `shots` folder next to `<sites-folder>`, which has to exist.

The scripts are the ones used, unedited. They need Python and Playwright.

## Columns

| Column | How it's measured |
|---|---|
| `model`, `business` | The model and the business in the prompt |
| `brand` | Text of the first link in the nav or header, cut at 24 characters |
| `headline` | Text of the first `h1`, cut at 90 characters |
| `highlighted` | Parts of the `h1` set apart by italics, a different colour or gradient text |
| `label_above_headline` | Text of the element right before the `h1`, if under 60 characters. Includes announcement pills |
| `buttons_under_headline` | Links and buttons in the hero, below the top of the `h1`, wider than 60 px and taller than 28 px |
| `headline_font`, `body_font` | First family in the computed `font-family` |
| `headline_size_px` | Computed font size of the `h1` |
| `serif_headline` | `headline_font` is Fraunces, Georgia, Cormorant Garamond or Iowan Old Style |
| `page_background` | Computed background colour of `body` |
| `warm_background` | Red of at least 240, and red at least 5 above blue |
| `most_used_button_colour` | The most frequent background colour among links and buttons |
| `sections` | Visible `section` elements |
| `equal_block_rows` | Grid or flex containers with 3 or more visible children of equal width, each between 160 and 640 px. Includes rows of figures as well as cards |
| `img_tags`, `css_image_urls` | `img` tags, and `url()` values pointing to `http` or `https` addresses, counted in the source |
| `no_images` | Both of the above are zero. SVG drawings don't count as images |
| `figure_matches` | Numbers followed by `+`, `%`, `k` or `M` in the page text. No data was given to the model, so these are invented |
| `testimonial_text`, `faq_text` | Text pattern matches for testimonials and FAQs |
| `intersection_observer` | The page source mentions `IntersectionObserver`. The article reads this as content fading in on scroll |
| `page_height_px` | Full page height at 1440 px wide |
| `screenshot` | First screen of the page, with hidden reveal animations forced visible |

## Correction

The first version of the article, published on 5 November 2026, said 21 sites used no image file and that 21 highlighted one word. Counting CSS background photos as well, 20 sites use no image. And many of the 21 highlight a phrase, not one word. The article and this data carry the corrected figures.
