RtK

Stop looking like every other amateur SaaS.

AI slop cleanup

Anyone can vibe-code a landing page now. So a lot of SaaS looks the same: indigo glow, glass cards, emoji lists, fake “AI-powered” badges. Buyers skim past you. Investors have seen this movie. The danger is not ugly pixels. It is looking interchangeable.

Send the screenshots

WhatsApp or email — live URL plus the first screens buyers see: home, pricing, the app shell.

Open WhatsApp

Book the cleanup call

Send the URL. We say if you blend in.

Live site or staging. We mark where you look like every other vibe-coded SaaS, and whether a cleanup pass is worth it before you raise, launch ads, or pitch the next customer.

Is this a rewrite?
No. Same product, same stack. We remove the AI-default chrome and make the UI look like your company, not a template gallery.
How is this different from vibe-coding rescue?
Rescue is whether you can ship safely — secrets, authz, observability. This is whether buyers can tell you apart from the next Cursor demo.
What do we get after a cleanup?
A ranked tell map on your real URLs, a palette and type choice that sticks, key surfaces cleaned, and a short “do not reintroduce” list so the next AI edit does not undo it.
What should I bring?
The live URL, the screens that close deals or lose them, and logo/colors if you already have them.

So what?

Looking generated is a sales problem.

Before AI, a mediocre site still meant someone paid a designer or fought CSS for a week. Now a founder prompts Cursor on Saturday and ships Sunday. Fine for a prototype. Fatal when you are asking for money next to three competitors who prompt the same model.

If the UI screams default, they assume the product is default too.

  • You disappear in a tab full of twins

    Same gradient, same type pairing, same feature grid. Buyers flip tabs and cannot tell which one was you.

  • Trust dies before the demo

    Operators have been burned by AI wrappers. Visual slop is the filter. You never get to the pitch.

  • The next prompt puts it back

    Cleanup is not a weekend paint job. Someone has to own the look or Cursor paints indigo on Monday again.

The gallery

These defaults are why everyone looks the same.

Twenty-seven tells. Same fake product throughout — Harbor, a dock board — so you can compare. Left is what the model ships. Right is after someone edited. If your site matches the left column, buyers have already seen you somewhere else.

01 The indigo→violet gradient

That #6366f1→#a855f7 wash on buttons, glows, and hero backgrounds.

✨ AI-POWERED

Orders that ship themselves

Harbor reads your PO inbox and books the truck.

Launch Harbor →

Purchase orders

Match POs to inventory

Harbor flags shortfalls before the dock call.

Open Harbor

Why it looks generated. It is the Tailwind demo wash. Nobody picked it for Harbor; the model reached for the sample palette and called it done.

What to do instead. One brand color, flat. Keep gradients for progress or depth, not as a default “premium” coat of paint.

02 Gradient headline text

bg-clip-text on the H1 so the letters turn into a rainbow.

Fill every order on time

Harbor fulfillment

Fill every order on time

Harbor fulfillment

Why it looks generated. Harder to read, and every Cursor landing page does it. The words lose; the rainbow does the talking.

What to do instead. Solid ink on the title. Loud size and weight beat a fade that fights the contrast.

03 Warm cream “human” palette

Amber-50 / stone-100 / orange sold as cozy.

Your cozy dock desk

Warm, friendly, and human — just like brunch.

Start cooking

Receiving desk

Scan a pallet ID; Harbor updates the receipt line.

Open receiving

Why it looks generated. Prompt said warm and friendly. Model opened the caramel jar. Now every “human” AI app shares the same beige.

What to do instead. Write warmer copy. Keep the UI mostly neutral, with one warm accent only if the brand needs it.

04 Rainbow semantic chips

Every status gets its own candy pill — blue queued, green picked, amber held, red failed, purple “new.”

Wave lines

PO-1842Queued
PO-1843Picked
PO-1844Held
PO-1845Failed
PO-1846New

Wave lines

  • PO-1842Queued · aisle B
  • PO-1843Picked
  • PO-1844Held · wait on ASN
  • PO-1845Failed — short pick

Why it looks generated. Bootstrap leftovers on every row. Five loud hues, zero brand, and the eye has nowhere to land.

What to do instead. Status as plain text next to the PO. Bold the line that failed. No pill costume for “queued.”

05 Ambient dark glow

Midnight navy with a spotlight blob behind every card.

Today

412

lines shipped ▲ 9%

Today

412

lines shipped · +9%

Why it looks generated. The dark-mode “make it fancy” move. Adds zero information; just fog behind surfaces that did not need drama.

What to do instead. One flat background. Thin border or a small shadow if a card needs to sit above the page.

06 Serif swap mid-sentence

Italic display serif dropped into a sans headline for drama.

Cut pick time by 38% this quarter

Cut pick time by 38% this quarter

Why it looks generated. Looks clever for five seconds, then like two people arguing in one line. The mix reads accidental.

What to do instead. Same family the whole way. Stress a word with bold or break the line, not a second typeface.

07 Display serif as “premium”

Playfair / Lora on dashboards and UI body copy.

Open POs

86

Past due · 11

Open POs

86

Past due · 11

Why it looks generated. Model thinks serif equals expensive. On a dock board it reads like a wedding invite taped to a forklift.

What to do instead. A readable sans you actually chose. Save serif for long prose if you ever need it.

08 Strike / highlight for emphasis

Line-through or highlighter on words that are not edits.

The last WMS you will ever need

Warehouse ops for mid-size distributors

Why it looks generated. The sentence was weak, so the model doodled on it. Strike and highlight pretend the line already had a point.

What to do instead. Rewrite the sentence until it stands alone. Strike is for deletes; underline is for links.

09 Redundant eyebrow kickers

FEATURES above a list of features, on every section.

✦ Features

What Harbor does

✦ Benefits

Why teams switch

✦ Pricing

What it costs

Receiving

Scan ASNs; Harbor writes the receipt.

Picking

Wave by aisle; short picks surface first.

Why it looks generated. Adds nothing. Just the template breathing above a heading that already said the same word.

What to do instead. Kill it. Keep a kicker only when it adds a date, a category, or a real step number.

10 Full sentence at display size

A whole pitch at 72px with the tracking crushed.

We help ambitious supply teams orchestrate fulfillment at unprecedented velocity

Ship the short picks first

Harbor ranks lines by dock time, not by who yelled loudest.

Why it looks generated. Display size is for a few words. A full pitch that big is hard to read and looks unsure of the point.

What to do instead. Three big words on the line. Put the rest in a normal subline people can actually scan.

11 Bold sprinkled through prose

Random mid-sentence strong tags in every paragraph.

Our revolutionary platform helps ambitious warehouses move faster with AI-native workflows built for scale.

Harbor is a pick-and-ship board for distributors. It syncs with your ERP and updates lines when a carton seals.

Why it looks generated. If everything is bold, nothing is. The model highlighted words because it could not pick a point.

What to do instead. Zero or one bold hit per paragraph. Usually zero; let the sentence carry the stress.

12 AI copy rhythm

“Not just X — it’s Y.” “Say goodbye to…” Cute three-word stacks.

It's not just a WMS — it's a movement.

Say goodbye to chaos. Hello to flow.

Fast. Beautiful. Yours.

Harbor runs your dock board. Scan a pallet, confirm the wave, print the label — under two seconds on a 2020 laptop.

Works offline in the freezer aisle.

Why it looks generated. Smooth and empty. I have deleted this paragraph a hundred times on client sites that needed a real claim.

What to do instead. Say what it does, with a number if you have one. Talk like you would to a sharp peer.

13 Emoji on every line

Rocket / lock / sparkle before each bullet.

🚀 Why you'll love Harbor

⚡ Blazing pick paths

🔒 Secure by default

🎉 Delightful for crews

Why yards switch

Pick path under 90 seconds on average

Role checks stay on the server

Works with gloves — large tap targets

Why it looks generated. Borrowed friendliness. A dock tool does not need to wink; the icons are filler where a verb should be.

What to do instead. Drop them. Keep an emoji only when it is a real status people already understand (rare).

14 Glowing status dots

Pulsing green ● Ready with a halo.

Yard online
Yard online

Why it looks generated. On or off is a tiny fact. The pulse and halo are costume jewelry around a one-word state.

What to do instead. Flat dot and a word. No pulse. Skip the dot entirely if nothing is actually live.

15 Accent-bar list rows

Every bullet in a rounded box with a left color bar.

Fast. Wave builds in under a minute
Clear. Short picks rise to the top
Quiet. No more radio pile-ups
  • Fast. Wave builds in under a minute.
  • Clear. Short picks rise to the top.
  • Quiet. No more radio pile-ups.

Why it looks generated. Docs callouts pasted onto a marketing list. When every row shouts important, none of them are.

What to do instead. A normal list. Save a callout box for one real aside, not every bullet on the page.

16 Icon tile feature grids

Rounded chips with a gear / bolt / globe above each feature.

FastVery nice
SafeVery nice
SimpleVery nice

Fast. Average pick confirmed in 1.4s.

Safe. Ownership checked before a carton leaves.

Simple. One board — no second app for the dock.

Why it looks generated. Looks designed in a thumbnail. The icons rarely match the words and eat space the copy needed.

What to do instead. Title and one sentence. Add an icon only when it carries meaning you would miss without it.

17 Glass cards and pill CTAs

Frosted pricing card, soft violet glow, gradient pill button — the Cursor-era SaaS default.

Harbor Pro

Popular

$49/mo

Unlimited yards, glass dashboards, priority sync.

  • ✓ Real-time dock board
  • ✓ AI wave suggestions
Upgrade now

Harbor Pro

$49/mo

Unlimited yards and 90-day history.

  • Real-time dock board
  • Wave suggestions from yesterday’s seals
Upgrade

Why it looks generated. Believable enough to ship, still a template: blur, glow, and a pill CTA instead of a surface you chose.

What to do instead. Opaque card, thin border, square-ish button. Price and features do the selling, not the frost.

18 Fog soft shadows

Huge blur, low opacity, shadow bigger than the card.

Wave card

floating in fog

Wave card

hairline + tight shadow

Why it looks generated. Looks floaty and maps to no real height. Everything sits in the same soft cloud above the page.

What to do instead. Use a 1px border or a tight shadow. Never larger than the thing casting it.

19 Nested radius mismatch

Same corner radius on the outer shell and the nested block. The gap pinches in the corners.

nested block

inner 24px inside outer 24px — corners fight

nested block

inner 14px = 24px − 10px gap — concentric

Why it looks generated. Inner radius should be outer minus the gap. Same token on both and the corner looks swollen or pinched.

What to do instead. Subtract once: inner = outer − gap. Or leave the inner surface square and stop nesting curves.

20 Clipped border on rounded wrappers

Radius on the wrapper, border on the child — corners vanish.

dock panel

radius on shell · border on child — corners clipped

dock panel

border + radius on the same element — stroke follows curve

Why it looks generated. Each line of code looks fine. The corner is broken anyway. Models do not look at the join.

What to do instead. Put border and radius on the same element so the stroke follows the curve cleanly.

21 Badge spam

New / Hot / Beta / Pro pills next to every title.

Yard board✨ New🔥 Hotβ BetaPRO
Yard boardv3.4

Why it looks generated. Fake buzz. After three pills I stop believing any of them, including the one that might be real.

What to do instead. Badge a real version or stock state. Marketing copy does not need a pill next to the title.

22 Blob mascot mark

Wobbly AI SVG creature as the product icon.

Harbor buddy

H

Harbor mark

Why it looks generated. Placeholder that never got replaced. First screen and you already look unfinished to a buyer.

What to do instead. A real mark. Refine a generated one until it is sharp, or ship a lettermark before a blob.

23 Hover scale on cards

Hover the door cards — Slop grows and lifts; Fix only changes the border.

Hover a card

hover → scale(1.25) + lift

Hover a card

hover → border color only · size stays

Why it looks generated. The card is not growing. You already know the cursor is there. Scale makes the UI feel like a toy.

What to do instead. Change background or border in about 150ms. Leave the size alone so the layout stays still.

24 Fake credibility stats

10k+ / 99.9% / 24/7 in the hero.

10k+

Warehouses

99.9%

Uptime

24/7

Support

Cartons sealed yesterday

2,416

Why it looks generated. Layout for social proof with no measurement behind it. One soft lie poisons the real numbers later.

What to do instead. One figure you can defend, or skip the row and say what actually shipped last quarter.

25 Ornamental 01 / 02 / 03

Huge low-opacity numerals on unordered feature sections.

01

Ingest

02

Innovate

03

Scale

  1. Connect ERP export
  2. Map SKUs to bin locations
  3. Run a dry-wave on one aisle

Why it looks generated. Numbers claim an order. Collaborate, Innovate, Scale has none; the digits are decoration.

What to do instead. Number install steps. For features, use headings and space instead of fake sequence.

26 Cards inside cards

Three borders deep until the content is a sliver.

Billing · Pro — $49/mo

Billing

PlanPro — $49/mo

Why it looks generated. Boxing is the only grouping move the model trusts. Nested boxes cancel out and waste width.

What to do instead. One surface. Space and a hairline divider inside. Extra box only for a real embed.

27 One spacing token everywhere

gap-4 / p-4 on related lines and unrelated blocks alike.

Yard profile

Site — Austin DC

Doors — 12

Danger zone

Delete yard

Yard profile

Site — Austin DC

Doors — 12

Danger zone

Delete yard

Why it looks generated. Spacing is how you show what belongs together. One value erases that and the page goes flat.

What to do instead. Tighten related lines. Open a bigger gap between groups so the clusters read as clusters.

How we keep you from blending back in.

  • Choose, then decorate

    If you cannot say why a color or typeface is there, it came from the model. Delete it or own it.

  • One accent is enough

    Pick a color. Use it rarely. The page should sound like one person wrote it.

  • Size and space do the ranking

    Big thing is big. Body is body. Stop painting words and swapping fonts mid-line to fake emphasis.

  • Delete before you add

    Most “design” passes are subtraction. Leave what has a job.

  • Numbers beat adjectives

    “38% faster picks” beats “blazing fast” with a rocket emoji. Every time.

  • Stop spraying signals

    Badges, icons, callouts mean something once. On every row they mean nothing.

Also broken under the hood?

Looking sharp does not mean it is safe to change.

If deploys scare you, or keys live in the client, that is the 14-day hardening sprint — different job.

See vibe-coding rescue
A 14-day rescue flow from a fragile running product to a hardened product, covering secrets, ownership checks, validation, and smoke tests.