A Design Loop for AI Agents
Most AI design is one shot and converges on the same safe look. I built a loop instead: taste-aware concepts, a spend gate, parallel variants on a live board you pin-comment, and a $0 path that needs no image API at all.
Asem Abdo
Ask a model to design something and you get one shot at a generic answer. Ask ten times and you get ten versions of the same safe gradient. The problem is not the model. It is the lack of a loop: no exploration, no taste, no human pin saying "this corner, not that one." So I built one. It ships in OpenPlanr as the Design Loop Engine, and it turns design from a single prompt into a live, iterative session.
Fight convergence on purpose
The loop opens with taste-aware concepts, and anti-convergence is enforced rather than hoped for. If three concepts all drift toward the same layout, that is a defect, not a coincidence. Before any money is spent, a mandatory concept gate asks you to choose a direction. Nothing renders at cost until a human has picked a lane.
Variants on a board you can actually touch
Once a direction is chosen, the engine fans out N variants in parallel and serves them on a live localhost board. This is where the loop earns its name. You pin comments on exact regions of a design, rate it, remix it, and step through a versions rail with an A/B diff. Feedback is not a paragraph of prose; it is a pin attached to a screen and a region.
That board taught me a lesson the hard way. In an early field run the pin overlay
was swallowing every pointer event, so the canvas froze: no pan, no zoom. The fix
was a clean separation of modes. An Interact / Pin toggle (press P) now decides
whether the artifact is live or whether a click arms an annotation, and the review
popover names the exact screen it captured. Modes that fight for the same pointer
are a recurring trap in interactive tooling, and the cure is always to make the
mode explicit.
A $0 path that is often the better one
The part I am most pleased with is the provider abstraction with graceful degradation. With an image API key, the engine generates rendered concepts. With no key at all, it falls back to agent-authored SVG, and that costs nothing.
For logos and UI, the no-key path is frequently the better one. An agent writing SVG gives you exact hex values, real typography, and clean vector output you can drop straight into a build, instead of a raster image you then have to trace. Free turned out to be a feature, not a compromise.
Keys are handled with the same care. They are never echoed back to the terminal.
The engine never silently reads a .env, because an undisclosed key is an
undisclosed bill; if a key is present but dormant, the doctor tells you it found
one and how to enable it, rather than spending on your behalf.
A daemon that outlives the agent
The board is served by a daemon that runs independently of the agent. It speaks a small file-driven protocol: progress is written to disk and reflected in the tab, a per-board mutex prevents two runs from colliding, static serving is guarded against path traversal, and the page reloads in place as new variants land. Decoupling the surface from the agent means the board stays alive and responsive even while the model is busy thinking.
Submission is deliberately unmistakable. The submit button shows write progress, then an animated receipt of exactly what was recorded: your preference, your ratings, your pins. A confirmation banner and a check in the tab title remove any doubt that the feedback landed, because a silent submit in a creative tool is how people lose ten minutes of careful notes.
Why a loop beats a prompt
Every state the loop reads or writes is schema-validated, and the whole thing is covered by conformance suites that lock the behaviors that matter: the toggle, the receipt, the redirect rules. But the real result is not the test count. It is that design stops being a coin flip. You explore, you steer with real pins, the system remembers your taste for next time, and the output is something you chose rather than something you settled for.
Design That Ships: Design as a Contract, Not a Deliverable
Most AI design tools end the moment the picture looks good. I built OpenPlanr's design phase on the opposite stance: a design is only valuable if it survives to production. So design is the first governed phase of a pipeline, and its real output is a machine-readable contract the planner, the build, and QA are all held to.
7 min readA Design System an Agent Cannot Skip
Without a project design system, an AI agent quietly falls back to a generic look. So I gave OpenPlanr a system it cannot skip: a hard gate before any design runs, and a linter that fails the build on sub-AA contrast.
3 min readPlanning Work for AI Agents That Forget
A coding agent does an hour of great work, the session ends, and the context is gone. OpenPlanr fixes that by turning a feature spec into a durable plan the agent re-reads every session, from codebase analysis to shipped tasks.
3 min read