The awkward part of a design job is deciding whether it's done. A file exists, the headline fits, and it's easy to accept it cause opening another round means deciding what to ask for. I built Desk Studio around that decision. I wanted the roughs and the reason for the pick to stay visible, and I wanted a failed check to send the file back with something specific to fix.
Here's how that worked on the studio's own launch card. The saved job state has the pick, each round's proof result and scores, and the cost by tier. The golden record keeps the final result. It finished at 8.9 over three polish rounds, costing $1.34 at list price. Those are this job's results, not a promise about the next one.

The whole job as a cartoon: three roughs on Sonnet, the pick on Opus, polish on Haiku, proof with no model, the sign-off on Opus, then every signed-off piece back to you.
Give the pick something to choose from
The launch card started with three directions: editorial split, type only, and frame. These were separate roughs made by the UI Designer at the senior tier. The point of a rough is to expose a layout decision while changing direction is still cheap. If everything already looks finished, it's tempting to spend the next round adjusting details in a direction that never deserved the pick.
The Art Director chose rough 2, the type-only direction. The saved reason is useful: the headline read first at both sizes, the small lamp was the only amber element, and the fixes were type sizes rather than layout. That gives the builder a boundary. Keep the structure that earned the pick and work on the type.
The card had LinkedIn and Instagram post sizes. A direction had to work across both, so the pick was made from renders. Reading the source wouldn't show whether the headline actually won attention at each size.
Put the revisions where they're cheap
After the pick, the UI Designer moved to the builder tier for polish. The launch job used Sonnet for roughs, Haiku for the revisions, and Opus for the pick and sign-offs. Those assignments are in the state alongside the completed desk runs.
I want the expensive judgment to arrive with a concrete job to do. The builder already has a chosen direction, the notes and a screenshot. It can spend its round revising that file, then hand back something the next check can inspect. Starting from an empty prompt again would lose the decision that was just made.
This also makes the cost breakdown interesting. The job's director work cost $0.81, rounded, for the pick and sign-offs. Senior work was $0.43 and builder work $0.10. The underlying total is $1.3354, which rounds to $1.34. These are recorded list-price costs, not a subscription bill or a measured saving against hiring someone. Most of this particular job's cost went into choosing and reviewing.
Proof gets the rendered file
Each polished file goes through proof before the Creative Director scores it. Proof checks the rendered pixels for text contrast, along with checks for overflow, clipping, safe zones, palette, type scale and required copy. There's no model deciding whether to waive a mechanical failure. A failure goes back to the builder with the screenshot.
The launch card passed proof in every round. To see an actual rejection, look at the separate dashboard demo card's state. Its first polish failed a safe-zone check: “deskstudio.ai” sat 32px from the top edge on LinkedIn, while the safe zone started at 38px. The state keeps that note and the failed proof result. The following round passed proof and proceeded to sign-off.
That's a small error, though it's exactly the sort of thing I want a check to catch before asking for a judgment on composition. The text being present isn't enough. Where it lands in the rendered output matters. Keeping the failed result also means the final screenshot doesn't erase the work needed to reach it.
An average can still fail
The Creative Director scores hierarchy, typography, spacing, colour, composition, originality, brand fit and copy. The visual rubric requires every axis to reach 8 and the average to reach 8.5. These are the studio's own evaluations. They aren't independent ratings of design quality.
The launch card shows why both conditions matter. Its first round averaged 8.4, with originality at 7. The next round reached an average of 8.5, but originality was still 7, so it failed again. An average alone would have accepted that second round.
The third round passed at 8.9. Originality reached 8 and the other axes were 9. That is a more useful record than a final score on its own, cause it shows which weakness kept the job open. It also keeps proof separate from taste: every launch-card round passed the mechanical checks, and the first two still failed the design review.
Try a job you can inspect
In Claude Code, install the plugin:
/plugin install desk --marketplace adityareddy-dev/deskstudio
In Cursor, Codex, Gemini CLI, Copilot, Windsurf or OpenCode, add it to the project:
npx deskstudio add
Then ask your coding agent for a design in plain words. The installer adds the desk briefs and an instruction block so the agent can run the job. The gallery links the outputs, and the public repository retains the records used here.
The API-key paths remain unverified end to end. I wouldn't infer that they work just cause the adapters exist. For a first job, use an output you can judge yourself, read the pick reason, and check the weakest axis against the rendered file before accepting the sign-off.




Top comments (0)