Why do Claude Code websites look alike, and what can you change?
A Claude Code website tends to look like other AI-built sites for the same reason they all do: everyone using it works with the same model family, and a model asked for a landing page with no constraints returns the average landing page, usually Tailwind, a centered hero, three feature cards and copy like “Streamline your workflow”. Claude Code reads a CLAUDE.md file in every session, which makes the fix unusually cheap. IntentGrid handles one part: it rewrites the words for each visitor and leaves the code alone.
Last updated 28 September 2026.
Why Claude Code sites converge
Claude Code is an agent in your terminal, not a site builder, so there is no template to blame. The sameness comes from somewhere else.
- One model family for everyone. Everyone using Claude Code is working with the same models, and a model asked to decide on its own makes the same decision every time: the safest, most common one.
- Underspecified tasks. “Build me a landing page” leaves the agent to choose the stack, the sections, their order and every word. It chooses the average of each.
- The popular defaults. Unless told otherwise, the output leans on what it has seen most, such as Tailwind and shadcn/ui-style components, with a centered hero and a row of feature cards.
- Copy written with no reader. Without a real audience, the words land on the median: “Powerful features, simple pricing”, “Get started in minutes”, “Built for teams of all sizes”.
The fix is not a better model. It is giving the model you have the decisions it was otherwise making for you.
What IntentGrid does and does not do for a Claude Code site
IntentGrid rewrites what the page says to each visitor: headlines, body copy, feature descriptions and button labels, written for how that visitor arrived (traffic source, campaign, approximate city, device, language, local time). It adapts the copy you already wrote, and brand names, prices, dates and numbers are on a do-not-touch list.
It does not edit your repo, open a pull request, or change your CSS, layout, components or prices. It will not make a generic layout distinctive and it is not a traffic source. It does not run inside Claude Code either: it works on the HTML your site serves, whatever produced it.
The working part today is a demo that renders a rewritten copy of any public URL in a sandbox on intentgrid.ai. On-domain adaptation is early access, set up per site by hand. How it works has the details.
What the demo can read from your site
Claude Code builds whatever you ask for, so this depends on the stack. Static and server-rendered sites, such as Astro, Next.js or plain HTML, put the copy in the HTML response, and the demo can rewrite it. A client-rendered single-page app sends an empty root element and a script; the demo strips scripts, so the preview may come back nearly empty.
Checking takes one command, which Claude Code can run for you: fetch your URL with curl and search the output for your headline. If it is not there, the demo has little to rewrite, and neither does any crawler that skips JavaScript, which includes many AI crawlers. For a marketing page, static rendering is usually the better default anyway.
An illustrative before and after
- Default, the same for everyone
- The all-in-one platform to manage your studio
- Arrived from a studio owners' newsletter, on a laptop, on a Monday morning
- Fill this week's classes without a spreadsheet: bookings and waitlists in one place
- Tapped a link in a shared video, on a phone, in the evening
- Let your students book and pay for class from their phone
Same layout, same prices, same claims. Every version uses only what the original page already says: in this made-up case, bookings, waitlists and paying by phone.
Fixes you can make yourself with Claude Code
Claude Code follows written instructions closely, which makes most of this cheap.
- Put the rules in CLAUDE.md. It is loaded into every session, so write the design and copy constraints there once: one accent colour, no gradient hero, no three-card row, real screenshots, and the phrases you never want to see.
- Give it real source material. Point it at customer emails, support replies or interview notes and ask for copy that uses their words. Specific input produces specific copy; a one-line brief produces the average.
- Audit the copy in one pass. Ask it to list every headline, subheading and button label on the site in a single table, flag the ones that could belong to any product, and propose replacements you then edit.
- Write the hero yourself. The first sentence and the first button are worth doing by hand, in your own words.
- Swap one sentence per channel. For your two biggest traffic sources, read the utm_source parameter and change the headline, keeping a default for everyone else and a single URL.
- Render the landing page statically. If curl shows no copy, ask for the marketing routes to be prerendered.
Why the defaults converge in the first place, and the rest of the design fixes, are in why vibe coded websites look the same.
Claude Code questions
Does IntentGrid work with a site built in Claude Code?
IntentGrid is designed to work with any site that serves HTML, whatever built it, because it adapts the page a visitor's browser receives. The demo works today on any public URL, with the caveat that a client-rendered app can return an almost empty shell. On-domain adaptation is early access, set up per site by hand, and how it is installed will be published when it ships.
Is IntentGrid a Claude Code plugin or an MCP server?
No. It does not run inside Claude Code and does not modify your repository. It works on the published page, and nothing about it depends on which tool wrote the code.
Can Claude Code personalize my copy itself?
It can build the mechanism, for example a headline that changes with a utm_source parameter, and for a couple of channels that is a reasonable thing to ship yourself. What it will not do is keep writing new variants as your traffic changes: each one is code you wrote and now maintain. IntentGrid is designed to rewrite per visitor at request time instead, and in exchange you are reviewing words a model wrote.