A reply on X turned into an 18-hour loop#

Theo builds T3 Code, a free, open-source app for working with coding agents. It has no full-time designer, and someone named Robin told him so in public: “Really wish you’d hire a UI or UX guy.”

Theo didn’t hire anyone. He gave an agent a goal instead. Change the UI, take screenshots, and send them to a “council” of three models from three different labs: Claude Opus 5.5, OpenAI’s GPT-6.1 Sol and Meta’s Muse. Each one scores the screenshots out of 10. The agent keeps changing things until all three say 9 or better.

The first round was rough. Opus gave the existing app a 6, Sol a 6.5, Muse a 6. By round three, all three said 9. That took an hour or so.

Theo didn’t buy it. He flipped between his app, Claude Code and Codex, and could see his was still behind. So he started over and added screenshots of those two apps to the judging. With something to compare against, the same models got much stricter. Sol, which had just signed off on the redesign with a 9, now put it at 7.4. That thread ran for almost 18 hours.

Then he kept raising the bar: 9.5 in every category, which took ten more rounds, and then 10. By the time he was filming, Sol was giving 10 in every category, Opus mostly 10s, and Muse a 10. His verdict: “I got LLMs to make better UI than anyone on our team was capable of.” The new design is a toggle in T3 Code’s beta tab now.

I build small-business websites at Scrutoire. This is the video I’ve been waiting for and dreading at the same time.

What the agent actually changed#

No grand redesign. Read the list and it’s the stuff a good designer fixes on a Tuesday afternoon: the fallback font, the type hierarchy, card corner radius, how inline code looks, borders that didn’t need to be there, a branch name that cut off the part that mattered, body text contrast in light mode, and labels that didn’t match from one screen to the next.

That’s polish. Polish is a big part of what a client pays an agency for, and it’s the part a loop like this can now grind out on its own if you let it run long enough.

The trick isn’t design. It’s the score#

Theo is clear that his setup has nothing secret in it. The council skill is a short prompt. What made it work is that he turned “make it look better” into a number that could go up. In his words, if you can turn a problem “into a program that gives a score, your agents are going to make that score go up.”

He used the same move on something you can measure properly. T3 Code exposes tools to the agents running inside it, and the models kept using them the wrong way, like opening a new thread when he wanted a sub-agent. So he collected the times they got it wrong from his own history and built an eval of 85 cases. The first run passed 66. He told the agent to get a perfect score, lock it in, and then delete as much of the tool descriptions as it could, aiming for a third of the size, without losing a single case.

T3 Code tool descriptions after an agent hill climb: 100% baseline, 52% fewer tokens after, 78% fewer with tool search on. Source: Theo (t3.gg) on YouTube.

It ran for a long time and it worked: 52% fewer tokens, and 78% fewer with tool search turned on. That change is in the nightly build. Because the eval exists, he can show the shorter version behaves at least as well, not just that it’s cheaper.

That second example is the more solid of the two, and it’s worth knowing why. An eval that checks whether the right tool got called gives the same answer every time. A model looking at a screenshot doesn’t.

The catch: the judges are models too#

Theo says this himself, more than once. “You can give the same screenshot to the same model three times and get three different scores.” The redesign that got a 9 in one thread got a 7.4 in the next, because the prompt and the comparison set changed. Claude Code’s and Codex’s scores went up during the run even though nobody touched their screenshots. He suspects telling the judges the target score, 9.5, may have nudged them toward it.

And the most important design decision in the whole video came from a person. Somewhere along the way the loop made the app too gray. Theo hated it and told the agent he wanted color back. The loop got there on its own, and it took a person to notice.

So three models agreeing on a 10 tells you three models agree. It doesn’t tell you whether the dentist’s patients can find the booking button.

The other catch: the bill#

Theo puts the total at roughly $400 for everything, about $250 of it for the work shown in the video, with a single refinement run at $152. Some of that is an estimate, because Muse has no official price and Opus came out of his subscriptions. He spent it partly because he had subscription usage about to reset, and he admits he got addicted to pushing the score higher.

For a funded product with a team, that’s cheap. For a five-page site for a restaurant, burning a few hundred dollars of tokens to move a score from 9 to 9.5 is hard to justify, and the client won’t see the difference between those two numbers. The loop is worth it when the thing being polished gets used every day by a lot of people. Most small-business sites aren’t that.

The client’s AI does the WordPress chores too#

ByteGrad showed the other half in a short video this week: WordPress as a headless CMS, with Claude building the front end and handling the site.

Every WordPress site already serves its posts, categories, tags and media as data at a public address. ByteGrad asked Claude to read his post titles from it without logging in. Then he logged Claude into the admin panel and asked for three more posts in the same style, and it wrote a script that added them through WordPress’s own API. One prompt later he had a custom Next.js front end (“Make it a beautiful design. Be creative.”), and one more added search, categories and clickable tags. His point is that you “don’t need to be technically savvy anymore” to do this. Claude or Codex can build the front end “and then it can also do the site management.”

Put that next to Theo’s video. The front end can be built and polished by agents. The content can be added and edited by an agent. The client never has to learn the WordPress dashboard, and their AI can do the jobs they used to email the agency about.

There’s a caution here too. ByteGrad’s demo is his own test site. Giving an assistant a logged-in admin session on a client’s live site is a different thing, and someone has to decide what it may publish without a person checking.

What an agency is selling now#

If I’m honest, a lot of what agencies charge for is the polish pass and the “can you change this text” emails. Both of those just got cheap. Here’s what I think is left, and it’s what I plan to sell.

The scoring rules. Theo’s loop is only as good as what the judges are told to look for. “Is this a 9 out of 10?” produced a gray app. A good rubric for a small business is specific: Scrutoire builds sites with one job, getting the visitor to call, book or order. Is the phone number one tap away on a phone? Does it read right in Finnish and in Vietnamese? Does it show up on Google Maps? Those are things an agent can check and push on. Writing them down for a particular business is the work.

The comparison set. Theo’s biggest jump in honesty came from adding competitors to the judging. Which three sites should a client’s site be scored against? The other bike rental shops in town, not Stripe. Picking that set takes knowing the market, and it changes the scores more than any prompt.

Taste, and the right to say no. Someone has to look at the 10/10 version and say it’s too gray. That’s not a model’s job yet, and from this video, it isn’t close.

The setup and the guardrails. If the client’s AI is going to run their WordPress, someone has to set up what it can touch, what needs approval, and what happens when it gets something wrong.

What I’d stop selling is pixels by the hour. If a loop can grind a UI from a 6 to a 9 over lunch, charging for the grinding won’t hold for long. Charge for knowing what a 10 looks like for this one business, and for catching it when three models agree on something wrong.