<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jack</title>
    <description>The latest articles on DEV Community by Jack (@jack_eazo).</description>
    <link>https://dev.to/jack_eazo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4190670%2F16038777-b0ec-4099-a96c-b88b230c3d4c.png</url>
      <title>DEV Community: Jack</title>
      <link>https://dev.to/jack_eazo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jack_eazo"/>
    <language>en</language>
    <item>
      <title>What We Learned Benchmarking AI App Builders on 103 Real Creative Tasks</title>
      <dc:creator>Jack</dc:creator>
      <pubDate>Sat, 17 Oct 2026 14:47:33 +0000</pubDate>
      <link>https://dev.to/jack_eazo/what-we-learned-benchmarking-ai-app-builders-on-103-real-creative-tasks-32pj</link>
      <guid>https://dev.to/jack_eazo/what-we-learned-benchmarking-ai-app-builders-on-103-real-creative-tasks-32pj</guid>
      <description>&lt;p&gt;Most AI coding benchmarks ask whether a model can solve a bounded programming problem. That is useful, but it misses much of what happens when a real person asks an agent to create an app.&lt;/p&gt;

&lt;p&gt;A real request may arrive with screenshots, videos, PDFs, a half-working repository, conflicting follow-ups, or a design the user already approved. The agent has to decide whether to discuss, plan, prototype, or build. It then has to preserve earlier decisions, produce a runnable result, test it, and recover when the user changes direction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eazo.ai/" rel="noopener noreferrer"&gt;Eazo&lt;/a&gt; recently published a benchmark built around that full creative chain rather than a collection of isolated code-generation prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The benchmark shape
&lt;/h2&gt;

&lt;p&gt;The benchmark contains &lt;strong&gt;103 real-user creative tasks&lt;/strong&gt; across seven capability sections:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inputs and references&lt;/li&gt;
&lt;li&gt;Intent routing and design depth&lt;/li&gt;
&lt;li&gt;Asset sourcing, presentation, and integration&lt;/li&gt;
&lt;li&gt;Development and runtime&lt;/li&gt;
&lt;li&gt;Disruption and recovery&lt;/li&gt;
&lt;li&gt;Delivery and publishing&lt;/li&gt;
&lt;li&gt;Cross-cutting capabilities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The tasks include multi-turn work involving images, video, CAD/STEP files, documents, existing projects, design feedback, rollback requests, browser QA, exports, and publishing.&lt;/p&gt;

&lt;p&gt;The user's words are sent verbatim. When the agent asks a question, the simulated user answers only with facts available in the task; it does not reveal the scoring criteria.&lt;/p&gt;

&lt;p&gt;That detail matters. A benchmark becomes much easier if the evaluator quietly helps the agent toward the expected answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate quality from completion
&lt;/h2&gt;

&lt;p&gt;Every task is judged in two ways.&lt;/p&gt;

&lt;p&gt;First, a weighted quality score across eight dimensions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct stage routing&lt;/li&gt;
&lt;li&gt;Clear deliverable per step&lt;/li&gt;
&lt;li&gt;Continuity of prior state&lt;/li&gt;
&lt;li&gt;Asset, design, and code reuse&lt;/li&gt;
&lt;li&gt;Core feature completeness&lt;/li&gt;
&lt;li&gt;Interaction and failure states&lt;/li&gt;
&lt;li&gt;Responsiveness, performance, and accessibility&lt;/li&gt;
&lt;li&gt;Self-testing and delivery quality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Second, item-by-item acceptance. Each task has explicit deliverable and process requirements. An item only passes when the frozen evidence supports it.&lt;/p&gt;

&lt;p&gt;This distinction prevents a common failure mode: a polished final message claiming success when the app, files, or runtime do not actually support the claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  The browser—not the agent's narration—is the evidence
&lt;/h2&gt;

&lt;p&gt;At the end of a run, the conversation, files, screenshots, and runtime state are frozen. Reviewers judge that evidence without asking the agent follow-up questions or modifying the result.&lt;/p&gt;

&lt;p&gt;For runnable apps, a separate tester opens the product in a real browser, exercises the interactions, and captures desktop and mobile evidence. Reviewers then decide whether each requirement passed.&lt;/p&gt;

&lt;p&gt;A useful rule emerges:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The agent said it works” is not evidence that it works.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This sounds obvious, but it changes benchmark design. A build command exiting successfully does not prove that the main interaction works. A screenshot does not prove that state changes correctly. A deployed URL does not prove that the requested version was deployed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five lessons from the 103 tasks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Routing errors happen before coding errors
&lt;/h3&gt;

&lt;p&gt;An agent can write competent code and still fail the user's request by going too far.&lt;/p&gt;

&lt;p&gt;If the user asked to compare options, building an app is not a bonus. If they said “read the existing project and wait,” editing files is a failure. If they asked for one lightweight prototype, producing a full product can make iteration harder.&lt;/p&gt;

&lt;p&gt;The benchmark treats the correct stage—discussion, plan, artifact, prototype, or runnable app—as a dedicated quality dimension.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Continuity is a first-class capability
&lt;/h3&gt;

&lt;p&gt;Many real failures are not syntax errors. They are quiet reversals of earlier decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A selected design disappears during implementation.&lt;/li&gt;
&lt;li&gt;A supplied asset is replaced with a generic substitute.&lt;/li&gt;
&lt;li&gt;A local-only requirement turns into a public deployment.&lt;/li&gt;
&lt;li&gt;A rollback restores the UI but not the underlying behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Single-turn benchmarks rarely expose this. Multi-turn tasks do.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Multimodal input is only valuable when it changes the result
&lt;/h3&gt;

&lt;p&gt;“Supports images” can mean anything from accepting an upload to actually using local details from the image in the product.&lt;/p&gt;

&lt;p&gt;The same applies to PDFs, CAD assemblies, videos, and existing repositories. A meaningful evaluation checks whether the agent parsed the material, understood the relevant parts, and carried those facts into the deliverable—not whether it merely acknowledged the attachment.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Recovery deserves dedicated tests
&lt;/h3&gt;

&lt;p&gt;Users change their minds. Tools fail. A generated asset may be unusable. A design direction may be rejected after implementation begins.&lt;/p&gt;

&lt;p&gt;Rollback, mid-task pivots, asset locking, and failure recovery need explicit tasks. Otherwise a benchmark over-rewards agents that work only when every earlier step goes perfectly.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Aggregate scores hide important failures
&lt;/h3&gt;

&lt;p&gt;Across the benchmark, Eazo's average composite quality score was &lt;strong&gt;88.5&lt;/strong&gt;, compared with &lt;strong&gt;84.2&lt;/strong&gt; for Codex. Average task time was &lt;strong&gt;11.1 minutes&lt;/strong&gt; versus &lt;strong&gt;11.7 minutes&lt;/strong&gt;, and total token usage was &lt;strong&gt;158M&lt;/strong&gt; versus &lt;strong&gt;179M&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But the deliverable pass rate was &lt;strong&gt;60% for both systems&lt;/strong&gt;. The process pass rate was &lt;strong&gt;52% for Eazo and 47% for Codex&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Those numbers are a useful reminder: a higher average quality score does not mean every required item passed. The detailed task evidence is more informative than a single leaderboard number.&lt;/p&gt;

&lt;p&gt;The methodology, task-level cases, scoring dimensions, and current aggregate results are available on the &lt;a href="https://eazo.ai/benchmark" rel="noopener noreferrer"&gt;full Eazo benchmark&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A reusable checklist for agent benchmarks
&lt;/h2&gt;

&lt;p&gt;When evaluating an app-building agent, check whether the benchmark includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raw user language rather than evaluator-cleaned prompts&lt;/li&gt;
&lt;li&gt;Multi-turn changes and corrections&lt;/li&gt;
&lt;li&gt;Existing files and projects&lt;/li&gt;
&lt;li&gt;Images, documents, video, or structured data&lt;/li&gt;
&lt;li&gt;A distinction between discussion, planning, prototyping, and building&lt;/li&gt;
&lt;li&gt;Frozen evidence after execution&lt;/li&gt;
&lt;li&gt;Independent browser testing&lt;/li&gt;
&lt;li&gt;Mobile and desktop checks&lt;/li&gt;
&lt;li&gt;Loading, empty, and error states&lt;/li&gt;
&lt;li&gt;Rollback and recovery tasks&lt;/li&gt;
&lt;li&gt;Item-level evidence citations&lt;/li&gt;
&lt;li&gt;Separate deliverable and process requirements&lt;/li&gt;
&lt;li&gt;A way to record review corrections rather than overwrite them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to make the benchmark complicated for its own sake. It is to make it difficult for a system to receive credit for work a user could not actually use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the limitations visible
&lt;/h2&gt;

&lt;p&gt;Any benchmark reflects its task selection, scoring weights, product versions, and review process. A comparison between two systems is not a universal ranking of every coding agent, and aggregate scores can obscure individual failures.&lt;/p&gt;

&lt;p&gt;The most useful benchmark is therefore not just a leaderboard. It is an inspectable collection of tasks, artifacts, runtime evidence, and review decisions that other people can question.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>webdev</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
