GUHWOO

Guhwoo ·

De-slopping output from v0, Lovable, Bolt and Claude

Each AI page builder has its own defaults and therefore its own tells. What each one reaches for, and the shortest edit that breaks the resemblance.

The tools differ less than you would expect

v0, Lovable, Bolt, Replit Agent and a coding agent writing raw HTML all draw from overlapping training data, so their output converges on the same visual dialect. What differs is emphasis: which defaults each one reaches for first, and how deeply the default is baked into the scaffolding it generates.

That matters practically, because the fastest de-slop pass is tool-specific. You are not looking for everything at once. You are looking for that tool's signature, which is usually two or three rules doing most of the damage.

Tailwind-scaffolded output (v0, Bolt, most coding agents)

The tell is the palette lock. When a page's colours are drawn overwhelmingly from untouched Tailwind scale values, nobody opened the colour picker. Our scanner flags this as color-tailwind-palette-lock when a majority of sampled colours are raw scale values.

Shortest edit: define three or four real tokens — background, ink, accent, muted — sampled from something that belongs to the product, and replace the scale references. This one change removes more of the resemblance than any amount of layout work, because the palette is what a viewer processes first.

Secondary: these tools apply rounded-2xl to everything and shadow-lg under every card. Uniform radius and uniform elevation across unrelated elements is itself a tell — real interfaces vary both by role, because a modal and a badge are not the same kind of object. Pick two radii and two elevations, and assign them by meaning.

Also common: a max-w-7xl mx-auto container wrapping every section at identical width, so the page has no rhythm at all. Letting one section break the grid is a cheap, high-signal fix.

Design-forward builders (Lovable, Framer AI)

These lean harder into the "premium" gestures: gradient-clipped headlines, glassmorphism panels with backdrop-filter: blur, a radial glow behind the hero, and entrance animations on every section.

Shortest edit: delete the decorative layer entirely — glow, glass, scroll-triggered fades — and only add back what does work. Most of it will not be missed, and the page immediately reads as more deliberate. Frosted panels in particular are load-bearing for almost nothing and expensive in both legibility and compositing cost.

Secondary: the motion. These tools apply one entrance animation with one duration to every element that enters the viewport. Uniform timing is the tell, not the animation itself. Either stagger it with intent or remove it.

Chat-generated single-file pages (Claude, ChatGPT artifacts)

Single-file output tends to be strongest on structure and weakest on copy, because the model is optimising for a page that reads as complete. That produces the full empowerment vocabulary — "Elevate", "Seamlessly", "Unlock" — plus emoji bullets and the three-card feature grid used as a way to look finished.

Shortest edit: rewrite the copy before touching the design. This is the counterintuitive one, and it is reliable: every hollow verb replaced with a specific claim tends to collapse the layout problem too. Once the sections say genuinely different kinds of things, giving them identical boxes stops feeling right, and the layout fixes itself because you now have a reason to rank them.

Secondary: single-file pages inline a Google Fonts import for Inter almost reflexively. Changing that one line is a two-second edit with a disproportionate effect.

Prevention: what to put in the prompt

Fixing is cheaper if less arrives broken. A model departs from the mode readily when it has constraints; the default output is what you get in their absence. Supplying, up front:

This gets you a materially better first draft. It does not get you a finished page, and it is worth being clear-eyed about why: the remaining slop lives in the thousand small choices that nobody would think to specify in advance. Those are found by looking, not by prompting.

The part that is the same everywhere

Whatever generated it, the underlying issue is identical: the page is full of positions where no decision was made. The registry we maintain lists 39 of those positions with the fix for each, and the free checker will tell you which ones a given URL trips.

The workflow we recommend is not "generate less". It is generate fast, then take the draft apart somewhere built for taking drafts apart. That is what Guhwoo is: the generated page lands on a canvas with its tells annotated, you adjust by hand, and the source stays in sync so your agent keeps working from what you changed instead of regenerating over it.


Keep reading

Run the free slop checker