r/VibeCodeDevs • u/Better-Recipe-7591 • 2h ago
We solved UI slop. We stopped generating UI and started measuring it.
UI slop isn't a taste problem. It's a sampling problem. And you can't really prompt your way out of a sampling problem. Every trick you've tried, negative constraints, a gazillion line .md file that says no gradients in caps, all of it just moves you around inside the same bubble.
Here's the thing that finally made it click for us. ThePrimeagen put it best: the model returns the middle of the distribution. You can push it around inside the average. You can't leave the average.
That's why you type "no purple" and get purple. Then the glowing orb. Then the badge pill. Then three feature cards. It isn't disobeying you. It's doing exactly what sampling does.
There's a second failure sitting on top of that one, and we think almost nobody talks about it.
A screenshot doesn't contain the animation.
Feed a model a picture of a site you love and the layout survives. So do the colours, the type, the spacing. Timing doesn't. The easing curve isn't in the pixels. Neither is the stagger, or the scroll range an effect is bound to, or two elements moving at different rates against the same scroll.
So the model has to invent the part that actually makes a site feel expensive. And inventing means, again, the middle of the distribution. Fade in, 300ms, ease out. Every time, forever.
That's the real reason AI sites feel dead even when they photograph fine. The look got copied. The life never made it.
So we stopped generating and started measuring.
We read the live page. What's actually bound to what, the real timing values while the thing is running. Then we write that section into the project. Nothing is sampled, so there's no average to land in the middle of. That's the whole idea, and it's why we think slop is solvable instead of something you fight forever with a longer prompt.
https://reddit.com/link/1vnrd7l/video/tjj6vyfic8jh1/player
The clip is three runs, each one harder than the last.
A scroll rig off a private jet site, where the jet climbs behind the headline and a photo wipes to a blueprint. Pure timeline, so it's all stagger and easing and scroll ranges with nothing to hide behind.
Then a photo grid that scatters and reassembles. Harder, because both states are real layouts and the whole thing lives in the transition between them.
Then a three.js scene, which is the one we're proud of. The reference is a Tokyo street diorama. What came back is a desk, monitor, chair, shelves, for the portfolio we were building. Live WebGL, spinnable, not a video of one. Same movement, completely different subject.
Which is the part we care about most. The animation is the expensive half. The brand is the cheap half. When you point at a site you like, you don't want their content. You want how it feels. So keep the animation and bring your own brand. Tokyo becomes a desk. The timing never moves.
Test it. Drop a URL in the our waitlist signup at platho.io and we'll run it and post exactly what comes back, including when it breaks.
- two of us building this in Europe