Model Face-Off
← back to AI Signal

How today's leading AI models handle real coding, reading, and drawing

Benchmark scores are easy to quote and hard to trust. So I run the strongest AI models through the same twenty-five hands-on tasks — the messy, detail-heavy kind that separates a model that looks right from one that is right — and check every single answer, then re-run the results four times over to see which findings actually hold up. Same tasks, same checks, every model.

The lineup: Claude Sonnet 5, Claude Opus 4.8, Claude Opus 5 and Claude Fable 5 (Anthropic), Grok 4.5 (xAI), DeepSeek (run with Expert + DeepThink on — the setting that serves its strongest model, DeepSeek-V4-Pro), DeepSeek V4-Flash (the independently attested OpenCode free route), Qwen3.8-Max-Preview (Alibaba), Gemini 3.6 Flash and Gemini 3.5 Flash-Lite (Google), and GPT-5.6 Sol, GPT-5.6 Terra and GPT-5.6 Luna (OpenAI). Each model gets the identical tasks at out-of-the-box settings — typed into its normal chat website, except the two Gemini models, which ran through Google's API at default settings, Claude Opus 5, which ran through the Claude command-line tool at its default, and the three GPT-5.6 models, which ran through the Codex command-line tool at its default. Answers are graded, most of them automatically, against the exact edge cases a rushed answer trips over — and every task is run four times per model from a clean context, so no single fluke decides a number.

The tasks come in four families, and each one is built to probe a specific ability — and to hide a small trap that a careless answer walks straight into:

  • Writing and fixing code (18 tasks). Small, self-contained programming problems — merging overlapping calendar events, a rate limiter, parsers for messy financial data, two "here's buggy code, fix it" challenges, a speed-sensitive problem that punishes a slow approach, database queries, timezone/DST-aware duration math, exact-cent money rounding, Unicode text truncation, SQL NULL-handling and join fan-out, and a closures/mutable-default trap. Each answer is run against a hidden set of automated checks — 124 in total — that pound on the corner cases: empty inputs, boundary values, deliberately malformed data, daylight-saving-time transitions.
  • Reading and reasoning over long documents (2 tasks). The model is handed a large, dense document and asked either to pull out precise facts scattered through it, or to find places where the document quietly contradicts itself.
  • Turning a description into a picture (2 tasks). Here the model has to draw. It writes the picture as SVG — a text-based image format where you describe a picture in code (<circle>, <rect>, <path>…) and a browser renders it. One drawing is judged by eye; the other must satisfy ten exact, machine-checked requirements while still looking right.
  • Reasoning and language under pressure (3 tasks). No code this time — just five character-counting and spelling questions from the "how many r's in strawberry" family, a poem that must satisfy four exact structural rules at once (an acrostic, a fixed word count per line, a matching rhyme word) while still reading like a poem, and four classic misdirection puzzles reworded so a model can't just pattern-match a memorized answer.

What’s in this report

  • How it was run. Same prompts, same conditions, graded by hidden checks — the ground rules.
  • The results. The scoreboard: every model’s floor across four runs, column by column.
  • Every run. The complete record — all twenty-five tasks, every model, every run.
  • The traps. The messy-data traps that actually told the models apart.
  • All 25 tasks. Each task in full: prompt, what it probes, and what each model did.
  • Compare. Pick models and tasks; line up scores, answers and drawings side by side.
  • Notes & writing. Caveats worth knowing, and the longer pieces these results feed.