Visual slop signals
Four signals that mark an interface as AI-generated before a user can name them
Four signals that mark an interface as AI-generated. Any one is forgivable. Two together and users sense it. Three and the product feels disposable.
## Signal 1: Default fonts
AI reaches for Inter, the system font stack, or whatever sans-serif appears most in its training data. The typeface carries no opinion. It says nothing about the product.
The fix is not picking a trendy font. It's picking _a_ font, chosen for a reason. Even if the reason is "it has real small caps" or "the italics have personality."
## Signal 2: Purple-on-white gradients
The model's favourite palette: purple to blue, on white. Sometimes purple to pink. It's the statistical average of "modern SaaS" and the reason every AI-generated landing page looks related.
Gradient backgrounds aren't the problem. _Unmotivated_ gradients are. A gradient should come from your colour system, not from the model's training data.
## Signal 3: Predictable layouts
Three-column feature grid. Icon + heading + paragraph, repeated three times. Centred text. Equal spacing everywhere. No hierarchy between sections.
AI produces symmetrical layouts because symmetry is the most common pattern. But good design uses _asymmetry_ to create hierarchy. The most important thing should be biggest. Secondary content should recede. Rhythm should vary.
## Signal 4: Excess glow and decoration
Drop shadows with high spread. Glowing borders. Blur effects stacked on blur effects. Prompt "make this more polished" and the model adds a `shadow-2xl`, a gradient border, and a `backdrop-blur-xl`. It heard "more" and delivered more, more effects, more noise, more visual clutter.
Restraint is the hardest thing to prompt for. It's easier to add than to remove, so AI adds. Your job is to subtract.
## The compound effect
One default font is a minor miss. But a default font _plus_ a purple gradient _plus_ a three-column grid _plus_ glowing buttons is a signature. It signals "nobody reviewed this." Users don't articulate it that way. They just leave.
## Common mistakes
- **Replacing AI defaults with _different_ defaults.** Switching from Inter to Poppins doesn't fix the problem. The fix is choosing a typeface for a reason.
- **Adding more effects to "make it unique."** Uniqueness comes from restraint and intent, not from stacking CSS filters.
- **Treating the four signals as a checklist.** The point isn't to avoid these four things. It's to make _decisions_ instead of accepting defaults.