Why AI-made screens look like slop, and how patterns fix it
Agents are fast at drawing and bad at deciding. We stopped asking them to invent structure and started handing them proven flows instead.
Arya
Founder, Wonderblok
Ask any coding agent for an onboarding flow and you get something that looks finished in four seconds. Look again and the problems show up. Three permission prompts on the first screen. A skip button as loud as the main action. No screen for what happens when someone says no. It is not ugly. It is generic, and it is wrong in the ways that matter.
We call this UI slop: screens that pass a glance and fail a real user. After a year of watching agents draw inside Wonderblok, we think the cause is simple. We were asking the agent to make two kinds of decision at once, and it is only good at one of them.
Drawing is cheap. Deciding is not.
An agent is very good at turning a decision into layers. Given a clear structure, it will lay out a screen, match your tokens and link the flow faster than any of us. What it does badly is the decision itself: which screens a flow needs, in what order, and what each one must never do. Those answers come from years of shipped products and failed experiments, and a model averaging the internet gives you the average answer.
The fix was not a better prompt. It was taking the structural decisions away from the agent and handing it ones that already work.
Patterns carry the decisions
A Universe pattern is not a screenshot. It is the structure of a flow: the screens, the rules each one follows, the states it has to cover and the slots where your content goes. When your agent starts from Onboarding / Permission priming, it already knows to show value before asking for anything, to ask for one permission per screen and to design the denied state.
// The pattern your agent receives, not a picture to copyuse_pattern("onboarding/permission-priming") rules: value before ask · one permission per screen say why before the system prompt · always a way forward states: allowed · denied · not determined slots: hero art · title · reason · primary · secondary
Your brand stays yours because the pattern has no look of its own. The look comes from your toppings: your tokens, your type, your voice, your platform and languages. Same structure, very different apps.
Universe
Permission priming
5 screens, 4 rules, every state
+
Toppings
Kopi Senja kit
Tokens, voice, iOS, EN and ID
=
Your agent draws
Your onboarding
On-brand, on-pattern, linked
Structure from the pattern, look from your brand, layers from your agent.
What changed when we did this
We ran the same brief through two setups: an agent drawing freely, and the same agent starting from a pattern with the Kopi Senja kit. The difference was less about polish and more about what was missing.
- The free agent skipped the denied-location state every time. The pattern made it a required state, so it was always drawn.
- Skip was as loud as Continue in most free runs. The pattern rule "always a way forward" turned it into a quiet text link.
- Reviews got shorter. Notes moved from "this is wrong" to "use our photo here", which is the kind of note people should be leaving.
Where this goes next
Patterns cover the flows most apps share. The next step is private patterns: the flows your team has already proven, saved once and reused by every agent that opens your files. That is coming to Team later this year.
If you want to try it now, open the Kopi Senja sample in Wonderblok and ask your agent to add a checkout. It will start from Pay with QRIS, and you can watch it decide less and draw more.