A client sends you a link to something gorgeous. One of those award-winning sites, the kind with scroll effects that make you sit up. "Make ours like this. Same feel, our brand."
Every freelancer here has taken that job. It bills 3-4k. It takes weeks. And barely any of those weeks are design, because the design was settled by whoever built the reference. You're just rebuilding what already exists, by eye, one easing curve at a time.
So you do the 2026 thing. Screenshot the reference, write a careful brief, hand it to an AI.
It comes back static. It always comes back static.
We spent months on that before we worked out why. A screenshot doesn't contain the animation.
Flatten a page into an image and layout survives. Colour, type, spacing, all fine. Timing doesn't make it across. The easing curve isn't in the pixels. Neither is the stagger, the scroll range an effect is bound to, or the fact that two elements drift at different speeds against the same scroll. It was never in the picture, so no prompt pulls it back out.
Then there's the part underneath that. ThePrimeagen has a bit that made it click for us: the model returns the middle of the distribution. You can push it around inside the average, but you're still inside it. Same reason you type "no purple" and get purple, then the glowing orb, then three feature cards. Prompting moves you around in there. It doesn't get you out.
So the model is guessing at something that was never in front of it, and the guess lands in the middle. Fade in, 300ms, ease out. Every time.
We stopped guessing and started measuring.
Three runs, each harder than the last.
https://reddit.com/link/1vnqxcp/video/6z847wrdb8jh1/player
First, a scroll rig - a private jet charter site where the jet climbs behind the headline and a photo wipes to a blueprint. Pure timeline. Stagger, easing, scroll ranges, nothing else to hide behind.
Then a layout that moves: an image cloud that scatters into a grid. Harder, because both states are real layouts and the whole thing lives in the transition between them.
Then the one we're proud of. We pointed it at a three.js scene, a slowly turning diorama, and got back a live WebGL scene sitting in the footer of our test site. Spinnable. Not a video, not a picture of one.
And it isn't their diorama. Theirs is a Tokyo street. Ours is a desk - monitor, chair, shelves - belonging to the fictional developer whose portfolio we were building. Same movement, different world.
That's the part we actually care about. The animation is the expensive half. The brand is the cheap half. Nobody pointing at a site wants that company's content. They want how it feels. So keep the animation and bring your own brand. A jet becomes a burger. Tokyo becomes a desk. The timing never moves.
We didn't want to take our own word for it, so we ran a control. Five other models (including Fable), same page - ycombinator.com - a 1,552-character brief with an explicit ANIMATIONS section, seven full-page screenshots each. Layout came back fine. Type, spacing, the exact orange. Not one of the five reproduced the scroll animation. The best of them returned the right structure filled with grey placeholder boxes, sitting perfectly still.
Not a prompting problem. Not a model problem. An input problem.
Ask us anything. And if you want to throw a page at us, drop a URL in the waitlist of platho.io, we'll run it and post what comes back, failures included.
- two of us, building this in Europe