A phone-sized personal finance app on one fixed dataset: balance and activity tabs, a grouped transaction list, and a four-step send-money flow with an on-screen keypad, a confirmation sheet and a success screen.
Measured, not judged. Nothing here is a score.
| Measure | Claude Opus 5.5 | Claude Fable 5.1 | GPT-6 Astra | GPT-6.1 Sol |
|---|---|---|---|---|
| Time to build | 1h 8m | 35m 12s | 9m 00s | 13m 46s |
| AttemptsOnly an infrastructure failure (a rate limit or an outage) earns a retry. Every interrupted attempt is listed, and nothing from it is published. | 4Attempt 1: The Claude CLI could not reach the API ("Unable to connect to API: SSL certificate has expired") and ended the run after 17 minutes. No index.html existed. Nothing from this attempt was published; the model got a fresh attempt once the API was reachable again. Attempt 2: The account's Claude session limit was reached (HTTP 429) after 103 minutes; an unfinished index.html was on disk and the agent was still iterating. Nothing from this attempt was published. Attempt 3: The benchmark harness itself was stopped 82 minutes in (the operator's session ended and took the runner with it). Nothing from this attempt was published; the run was restarted from scratch. | 1 | 1 | 1 |
| Delivered source | 115 KB | 73 KB | 47 KB | 57 KB |
| Files | 1 | 1 | 1 | 1 |
| Tokens in / outAs reported by each CLI. Tokenizers differ between vendors, so compare within a vendor. | 25.6M / 295k | 3.1M / 130k | 883k / 27k | 1.8M / 48k |
| Errors during recording | 0 | 0 | 0 | 0 |
| Video lengthUI recordings scroll at a fixed speed, so a longer page makes a longer video. | 23.1s | 22.1s | 22.4s | 22.8s |
Questions, not answers. The call is yours.
Open Activity and scroll, back to Home, then Send: pick Maya Patel, type 42.50 on the keypad, Review, Confirm, Done.
The same script runs on every build. Open any build live to judge sound, feel and anything a video can't show. Full method
Sent word for word to every model. Try it on your own favourite.
Design and build Fern, a (fictional) personal finance app, as a mobile web app. DATA The dataset is in ./data.json: the current balance, recent transactions, contacts and this month's spending by category. Use exactly this data and embed it inline in index.html (the page must work when opened directly from disk, so do not fetch the file). Treat 2026-10-21 as today. THE APP - It is a phone app. Design for a 390x844 viewport; on larger screens show the app centred at that size on a plain background. Respect the top and bottom safe areas (env(safe-area-inset-top/bottom)). - A bottom tab bar with exactly three tabs, labeled "Home", "Activity" and "Send". Switching tabs is animated. - Home: the current balance, quick actions, and the latest transactions. - Activity: the full transaction list grouped by day (today, yesterday, then dates), with a spending-by-category summary for the month at the top. - Send: a flow in four steps. 1) Pick a contact from the list. 2) Enter an amount on an on-screen numeric keypad with buttons labeled 0 to 9 and "." (never the browser keyboard), then tap a button labeled "Review". 3) A bottom sheet that summarises recipient and amount, with a button labeled "Confirm". 4) A success screen showing the new balance, with a button labeled "Done" that returns to Home. The new transfer then appears at the top of Home and Activity and the balance is updated. - Touch targets at least 44px, visible tap feedback on every control, no hover-only interactions, and motion that feels native: sheets slide up, screens transition, lists scroll smoothly. - Visual design, colour, typography and iconography are up to you; icons must be inline SVG. Aim for the quality of a top finance app on the App Store. DELIVERY RULES - Work autonomously. Nobody will answer questions, so make reasonable assumptions and keep going until the app is finished. - Deliver a single file, ./index.html, with all HTML, CSS, JavaScript and data inline. No build step, no frameworks loaded from the network. - The only network resource allowed is fonts from Google Fonts. No other CDNs, no external images, no APIs. - The app must work when index.html is opened directly in a current version of Chrome, and when it is served over HTTP. It will be used at 390x844 with touch.