Some designs use the screen estate so ineffectively that only the title and a big, boring, generic graphic is shown on a phone. Users have to scroll all the way down to see the content and find what they need. Better designs show the menu, navigation points, and meaningful, aesthetic graphics. Other designs, such as Gemini 3.6, were quite sophisticated but not optimized for traffic and would not load on a 3G connection. However, a simple static website should load instantly on a mobile connection.
That said, even a simple web page has many requirements, so expecting a turnkey, ready-made design if the user is not guiding the process is not realistic. Thus, I believe the best choice nowadays is a model with good design skills that understands and adheres to an iterative design process, offering a good initial design as a starting point but also prompting the user to provide guidance and feedback. As the design process runs through many cycles, the initial cost should be modest. But more importantly, the model should understand its own design, be able to explain its choices so it can converse with the user using concrete elements in a accurate language to guide the process. IMO, this is still missing from even the frontier models today.
I haven't tried it but I think this can be replicated with a system prompt.
I remember the codex system prompt contains something like, "Do not consider a task complete until you have verified the result."
Although I've been running the new GPT models in a custom harness and they do that anyway now, without being prompted. So I think that prompt was for a previous generation.
I'm asking because I personally only use AI with specific and detailed instructions, building my projects piece-by-piece.
I mostly don't look at the low level code and some of it I don't understand as much as I'd like, but I very much give much more technical instructions than a simple, two sentence prompt.
So, it seems to me this "oneshot from a simple prompt" eval is fairly meaningless when it comes to model evaluation itself, as it is in no way representative of real world application.
This would be more something for "vibe coders", people with little to no programming background wanting a website?
If that's the entire prompt, it's quite depressing how much alike these all look. I appreciate some of the details from the Opus 5 version, but I can't help but strongly feel the AI vibes emanating from that design.
In my benchmarks, I started insisting on having at least 5 runs.
This also makes me very suspicious of some of the posted benchmarks that compare models. If the results don't say how many benchmark runs were performed and what the variance was, there is really no basis for comparison. You are just guessing.
This means that generic benchmarks and evals are sort of passé. There's no need to have them write "make a coffee shop page" or whatever. Instead, simply focus on the real problem you have and evaluate whether they solve that problem. You want to move along the price-performance frontier alone and the SOTA models are decidedly at the top of the performance curve but very expensive so they serve very well to produce the gold standard and to judge.
The change from prior to today is that benchmaxxing and per-token pricing allowing for evaluation point to the same direction: do not proxy results. Instead deploy the highest end model you have as a judge for others until you have statistical confidence in discrimination and move along the task-specific frontier.
When there are implicit boundaries, negotiable tradeoffs, taste, whatever, in the mix, then the differences in the model capabilities become way more interesting.
It’s not theft, you own it
You betta neva use Go (go) (go)
You only get 1 prompt
Do not use canvas (No!)
Cause opportunity comes once in a lifetime
Come up with an arbitrary test, let a bunch of LLMs work on it. Make some very subjective judgement about the result...
Kimi, GLM, and Deepseek all absolutely run away with the "Can I quickly read the menu and find the address" challenge.
Most of the rest of the pages are stylistic, but hard to parse.
If I were in a car on a mobile phone trying to find the address of the place to meet a friend for coffee... I don't want a bunch of fluff and stylistic design that makes it hard to parse the information on the site.
How so? Surely they can just steal such generic graphics off existing web sites.
Much more interesting is providing a million tokens of meaningful input and getting 1000 tokens out (high level critique of a detailed design doc, finding a subtle bug in a big codebase, etc).
1. Long form task based examinations like this that test the ability of the model+harness to remain on task, tool calling, overall effectiveness and taste.
2. More direct 1:1 and qualitative comparisons that you might get with a tool like https://evvl.ai/ - which also uses OpenRouter and does similar one off model comparisons (or lets you use it as a MCP from your dev env to be like: "take the prompt from this loop and try it against these other models")
It's still a work in progress but preliminary results reveal that Sol is able to reproduce 70%-90% of Fable's performance. This is a very meaningful result for me because code review is what I use AI for.
Yes, the most valuable benchmarks and evaluations you can write are those that resemble your work.
The evaluations are extremely hard to write and test.
And yes, virtually all benchmarks are E2E one shots, they do not reflect multi turn processes or how most people interact with LLMs.
Which is why every Opus after 4.6 looks better on benchmarks, but is hard to work with interactively.
The similarities are beyond coincidence, to the point I'll be scrapping Claude's version of the redesign.
It appears that they're mostly testing the ability to make business tasks autonomous, with ~20% associated to development tasks (ssh here, install this, etc.), but not actual programming.
I'm interested to know how the classic AI "purple preference" emerged (organically?) and if the beige wave came out of specific training efforts to combat it?
To your point on development work (the code itself), I was talking to some friends on the Google Chrome team about any research understanding the model's preferences around framework ergonomics and abilities to properly implement core web standards for given tasks. I think that would be super fascinating.
On the other hand, if you want something different with LLMs, all it takes is a few more words of creative flair in the prompt.
I highly doubt that you have solved it. Writing proper evals and benchmarks for real-world scenarios is far from trivial.
Benchmarking an agent essentially means freezing, at the very minimum:
- the model
- the model's configuration (e.g. effort, permissions, provider)
- the dataset (e.g. a git repository at a specific sha)
- the code running the agent itself (you can build your own harness, trivial, but you still need to ship it as a single executable, froze in time. benchmarking against closed source runtime like claude code is quite useless, they change too frequently and in ways you cannot directly inspect).
- the tools at agent's disposal. Even a slightly different implementation of tool X (e.g. grep or readfile or sed) has an impact. In general this implies also freezing a very specific container image. In my personal benchmarks I provide a specific list of tools that come with the executable, there's no possibility of interacting with the outside world besides the provided apis, the agent bundles its own tools.
And even then: there's significant noise coming from the LLM providers themselves which noticeably change the models behaviour, I don't know whether this is because they optimize some settings or change the inference over time, etc.
And, last but not least, the output of LLMs is non deterministic.
Also, the LLM as judge presents essentially the same non-deterministic problems, has to be benchmarked itself thoroughly, and writing quality rubrics or "golden answers/outputs" is just difficult. One of the metrics I consistently try to emphasize is to avoid the "shotgun vomit dump" of information. So answers that get right to the point in plain terms avoiding dumps of information filled of jargon on top of the user are rated differently.
In short: its far from trivial to benchmark models on real-world agentic work taken from your personal or professional projects.
And even creating the test cases themselves is hard. No: you cannot take the output of some "sota" and use it as gold standard. This is a very crap approach. It's the sloppiest solution to the problem, in the very sense of slop: plausible, average, lacking any creativity or out of the box thinking, the things that make the real difference in complex software development.
The very point of creating these benchmarks is to find which configuration/model/tools/harness (skills/mcps/documentation/agents.md, etc) works better.
And it only works if you create these benchmarks yourself from genuinely difficult non-trivial work and find a solution that is better by most metrics implementation-wise, albeit you could settle on the implementation solving a series of cases and edge cases.
If all you want is "opening hours, the address, a short menu and a photo" there are easier and cheaper ways to do that.
This is the reason the world is slowly becoming a boring ass place and the internet basically consists of 3 websites that are all trying to suck your soul dry.
If I ran a business, a website that stands out from the crowd and provides a good experience would be in my top 3 things to do.
Me, I'm saying that, and I've skipped going to coffee shops and restaurants because they don't have a website, just a fucking Facebook page. I don't use Meta products and can't see their page if I'm not logged into an account I don't have, so I do what the business owner intended: I go fuck myself and get coffee somewhere else.
> wheelchair
You really took "cripple the model" to heart!
We just launched a partnership with OpenRouter that lets us offer two new pieces of functionality:
We call it Agent Runners because we run a full coding agent inside, not a pared-down one. Until now, we’ve supported Claude Agent, OpenAI Codex, and Gemini CLI which are optimized to run models from these providers.
We provide these agents with extra skills, and context about the current project, so that the agent will know exactly which Netlify capabilities are available for use (e.g., Netlify Database, the AI Gateway, or Identity), when to use them, and how. But to effectively drive a whole variety of new models, we’ve added the popular open-source OpenCode as a new choice of agent.
But with more choice come the inevitable questions: How do I know which model is right for me? Am I missing out on something that’s materially better, or more cost-effective (so I can do more with my credits), or is going to blow my mind like the internet says? There’s a lot of FOMO going around these days.
To provide you with some insights, here’s what we learned when running identical prompts across a range of models… all of which are now available for you to use today on Netlify.
You can see the results of all the models we tested on this site we created with the full report.
Internally at Netlify, we use AXIS for automatically evaluating models, a tool that we’ve recently open-sourced.
We provide AXIS with a variety of test cases: prompts for building a new site and then iterating on it. We instruct AXIS on which agents and models to test these prompts, and define the checks that AXIS should then perform and score the generated site with.
These checks are very much focused on correct functionality of the generated site rather than its design, e.g.: does it use a database when a user’s needs call for it? Does it properly use Netlify Database in that case? In those cases where a simple static site will do, we also ensure that the generated site is not over-engineered, and no database is set up.
If a certain model is behind on its test scores, we don’t offer it in Agent Runners. If models too often fail at correctly applying one of our skills, or things do work but the credit cost seems inflated, then the problem is probably with the skill (in which case we optimize that skill).
But this time, we want to provide you with something much more immediately useful: when you go and build your dream using different models that each use wildly different amounts of credits, what do you get? What do the result look like?
We tested three relatively straightforward use-cases:
For each of these cases, we’ll show you the look of the generated sites, comment on notable issues, and compare how many credits each took to generate. Of course, this is going to be a much more subjective test than our internal test suites, but it’s also going to be a very fun one. We’d love to know your opinion of the results!
All models were run with their default settings on Netlify. One notable mention is that we currently run GPT 5.6 Sol speicifically on low effort by default, giving you a more economical alternative to Opus that still provides pretty darn good results (as you’ll see below). However, the effort setting is now under your control, and our defaults may change with time.
This post is going to cover only the very first scenario: the static page for a coffee shop, while follow-up posts will focus on going beyond that simple use case. There is much to review even for this simple case, so let us begin.
Here’s our first prompt:
Build a one-page site for a neighbourhood coffee shop: opening hours, the address, a short menu and a photo. Nothing on it changes unless I edit it myself.
The last sentence was added as a hint to the model that no fancy Content Management System is needed. Our default skills also include some UI design guidance, mainly to avoid known gotchas (e.g., the now-dreaded purple AI slop) and get the model to reason about the visual identity appropriate for the user’s ask. But beyond that, each model is free to go build what it thinks we’ll want.
Before we reveal what the sites looks like, here’s a table comparing the credit usage for each model we tested. Each model was run three times, and clicking any of the results will take you to the actual generated site!
| Model | Average | Cost per run (links are to the actual site) |
|---|---|---|
| Claude Opus 5 | 519 | 253 credits · 249 credits · 1,055 credits |
| Claude Sonnet 5 | 143 | 81 credits · 245 credits · 103 credits |
| GPT 5.6 Sol (low effort by default) | 141 | 173 credits · 158 credits · 92 credits |
| Gemini 3.6 Flash | 103 | 109 credits · 91 credits · 111 credits |
| Kimi K3 | 102 | 125 credits · 95 credits · 86 credits |
| Gemini 3.1 Pro | 53 | 57 credits · 52 credits · 49 credits |
| GPT 5.6 Terra | 39 | 43 credits · 23 credits · 49 credits |
| DeepSeek V4 Pro | 37 | 47 credits · 30 credits · 33 credits |
| GLM 5.2 | 27 | 15 credits · 42 credits · 24 credits |
| Kimi K2.7 Code | 19 | 21 credits · 18 credits · 17 credits |
| DeepSeek V4 Flash (latest revision - 0731) | 2.4 | 3.4 credits · 1.3 credits · 2.5 credits |
That’s a pretty wide distribution, eh? Not only that: the Claude Opus average is heavily slanted upwards because one of its three runs spent a whopping 1,055 credits! (As a reminder, on the free plan you have 300 credits; on a Personal plan there’s 1,000 included credits; and with a Pro plan there’s 3,000 included credits. Additional credits packs for Pro are $10 for per 1,500 credits.)
The immediate question is then: is this Opus spend worth it? And what trade-offs do the other models offer? Let’s start digging in.
Here’s the full page generated by that 1,055-credit run (about 4x more than any other run).
To be honest, I think it’s delightful, and full of detail in both its visual design (consider the “stamp like” element with the coffee bean in the center: that’s an actual text element that can be animated), and the custom map at the bottom. Dark mode works out of the box - go check out the live site in the links above.
Of course, we did not explicitly provide the model with any actual details about our coffee shop (well, except for it being a “neighbourhood” one, which is really steering all models in a certain direction). The design language is hip but perhaps cliche by now (take the two-font, two-color heading for example), but hey - we didn’t give it any other direction.
So, how did the other two runs by Opus go? (253 credits used on the left; 249 on the right)
Not bad either! Vector graphics actually require a lot of work from the models, and the examples above are pretty much on the frontier in terms of what LLMs currently are able to achieve (which is, to be honest, not in a very good place yet compared to image or text generation).
As to whether the first result is truly “4x better” or not, opinions might vary. But in all the tests I’ve done, Opus does have a tendency to run off with excessive credit usage (compared to its “typical” baseline) more than other models. It does not guarantee a worse or better outcome, though. It’s something that just happens pretty frequently.
Let’s look at some other models and then reflect on what we can learn.
Here are our three contenders, at 143 credits on average (81 credits · 245 credits · 103 credits):
There’s still some delightful detail in each of these, just less so (and less content in general). The vector graphics is noticeably simpler and not really something you’d consider for a live site. This doesn’t say anything about this model’s ability to write complex code or answer philosophical questions, but we’re not asking for this here. At this price point, let’s see what OpenAI, Google and Kimi have to offer.
What happens when we take OpenAI’s Opus-class model and ask it to spend a bit less time thinking?
(141 credits on average: 173 credits · 158 credits · 92 credits)
Looking into the results, I think OpenAI’s top-tier model in low effort mode wins over Anthropic’s mid-tier model when it comes to basic design intuition, at least in this scenario. There is more richness in content, and no funky vector shapes (though the images are a bit generic).
When we go one tier down in OpenAI’s offering (it’s Sol→Terra→Luna), will we see the same drop as the one we just witnessed when switching from Anthropic’s Opus to Sonnet?
Surprisingly, that’s not exactly the case: here it seems like Terra has a different visual language, and not a necessarily worse one. It does appear simpler content-wise. There are some visual glitches: a missing image in the left run, low-contrast text over an image in the middle one - but nothing super wrong.
(39 credits on average: 43 credits · 23 credits · 49 credits)
Up to this point, if I had a very vague idea of what design & language I’d like for a project, my personal inclination would be to run the same prompt with Opus 5 and GPT 5.6 Terra, and get two very different but worthwhile takes.
These models are not of the same generation, and it shows: Gemini 3.6 Flash actually produced nicer results (or at least, more in line with other modern models) and used more credits compared to Gemini 3.1 Pro.
Here is what Gemini 3.1 Pro generated for 53 credits on average. I’m not even putting the links to the live site here, because there’s really nothing to see.



Yes, these are wholly separate runs. It did what we asked in the prompt, and really nothing more.
On the other hand, Gemini 3.6 Flash seems like a whole new generation, and used up 103 credits on average (109 credits · 91 credits · 111 credits). It also worked much harder on the content side of things. All models repeat themselves, but it seems like Gemini might repeat itself even more.
Ok, let us get to the open-weight models now. Starting with the latest Kimi K3, here is what we get (102 credits on average; 125 credits · 95 credits · 86 credits):
To be clear, Kimi K3 is marketed mostly as a frontier model for long-horizon agentic tasks, and various benchmarks and reviews confirm its prowess in that field. It was built to take on Fable 5 more than Opus 5. But in this narrow design-led task, it does not particularly shine among others. To really do this model justice, we’d need a wholly different set of prompts engineered for a complex web app, which we will cover in a follow-up post.
Going a big step back in model architecture to Kimi K2.7 Code, here is what we get for a very low credit average of just 19 credits:
Despite some hype about Kimi’s visual capabilities from around the K2.6 model launch, in terms of design or content there’s really not much to see here.
Let’s try this: look at these pages, ignore GLM’s love for maple, and try to estimate how many credits were used for each:
Here are the correct answers, from left to right: 15, 42, 24 (on average: 27). Surprisingly, these runs are - maple aside - very different, as if coming from a few different models. For the relatively low credit cost of GLM, it’s probably worthwhile to run it a few times before settling on what this model can do for you.
Note that being a text-only model that does not receive image inputs, GLM in its current 5.2 iteration cannot do something that Kimi models can: get screenshots from the user for inspiration, as in “this is the kind of design I’m looking for”.
V4 Pro is a bit older than the latest V4 Flash revision (also known as 0731). For about 47 credits, it does not provide inspiring results - especially compared to the mid-tier GPT 5.6 Terra model covered above, which sits at almost the same cost.
The middle run also has a broken image: the HTML file points to an image file that does not actually exist in the project, which is a lot less likely to occur nowadays with any of the commercial models from OpenAI, Anthropic, or Google.
V4 Flash 0731, on the other hand, is both newer and sets a new record here on how few credits it consumes.
For only 2.4 credits on average (3.4 credits · 1.3 credits · 2.5 credits), you get a mixture of results. Interestingly, the middle one doesn’t just look the most like what a mid-tier closed model might give you, but also feels the same in terms of language, and has actually consumed the least credits among all runs.
There are two important notes to make here:
First, for anything beyond a simple website or the initial ideation phase for a project, the question shifts from how nice the model design & copy is to:
In the follow-up posts to this, we will start going into these questions, and (teaser) note some interesting differences in how models craft the project’s code.
My second note is that even considering just this design-and-copy-focused test that I covered, it’s important to consider how much ideation you want the model to come up with on its own. Currently, Opus will probably provide the most clever word games and sleekest design, but you don’t necessarily need it to. Of course, Opus will also perform relentless self-validation of its own work (it does not bill itself on good looks alone). But remember there’s certainly a higher-than-average credit cost attached to that.
Given a limited budget, would you prefer a turnkey solution that attempts to pre-plan and handle everything for you, or should you go with a simpler model and a more iterative approach, where you guide the model with follow-up prompts towards what you want? No option here is necessarily wrong.
I hope this post inspires you to test out different approaches, and judge for yourself the quality of results you get. We’re also pretty excited to share with you (very soon!) the results for more advanced web-app use-cases, where the Netlify platform capabilities really shine through.