# Keep Every Agent Design Iteration in Figma | FluxCo Technologies

> Keep every agent design round on one pen.dev or Figma canvas, label the one you picked, and link tickets to it. Setup, an example, and failures to check for.

Source: https://fluxcotech.com/blog/agents-keep-every-design-iteration/

---

When agents design on a canvas, keep every round instead of overwriting it, and label which one was picked. The canvas becomes the design tool and the record of every decision. Tickets can then link to the decision instead of describing it.

## One file, numbered rounds

One canvas file per project. Each round goes in as a new numbered section (`01`, `02`, `03`). Earlier rounds stay. The layer list reads in the order the work happened.

## Example: Babybrain

Babybrain is a baby journal app we built. Its redesign went onto one pen.dev canvas before any code changed:

1. `01` Moodboard.
2. `02` Brief: six open questions, what each answer settled, unanswered ones marked as unanswered, and shared colour tokens with measured contrast ratios. Rule: no code changes until a direction is picked.
3. `03` Paint box: shared assets. Every image in the mockups is generated.
4. `04` to `06` Three iterations: Sketchbook, Keepsake album, Quiet gallery. Same screens and flows, different surface.
5. `07` Iteration map: today's app beside all three, each wire labelled with what changed.

![The iteration map on the pen.dev canvas: three rows (Home, Adding a photo, Memories), each showing the app as built today next to iterations A Sketchbook, B Keepsake album and C Quiet gallery, with labelled wires saying what changed between them.](/blog/assets/2026-11-01-canvas-iteration-map.jpg)

## Label what won

Every frame gets a status banner:

- Shipped: built and live, one per feature.
- Current: in progress.
- Exploration: tried, not picked.
- Superseded: picked, then replaced. The banner names the replacement.

The chosen frame gets a one-line note: which version, who picked it, when. Agents build from Shipped and read the rest as context, so they don't re-propose options that already lost.

## Tickets: the missing piece

A ticket says what to build, rarely what it should look like or what was already rejected. The builder guesses and review reopens settled questions.

Automated routing handles intake: a request arrives by email or form and lands in the right queue, linked to the customer, area and history. We use the same pattern for [maintenance emails](/blog/maintenance-emails-into-tracked-requests/).

The canvas handles the decision. The agent draws the current screen from the code, so the ticket starts from what is actually built, not a stale mockup. With the code and the canvas as context, the agent can say what the change involves or draft alternatives. In Babybrain, "Today" is drawn from the shipped app and the brief's colour tokens are checked against the app's stylesheet.

1. Request is routed and linked.
2. An agent drafts options beside the current screen as a new numbered section.
3. A person picks one. It gets a banner and a note.
4. The ticket links to that frame.
5. The builder, person or agent, builds from the frame.

## Check the canvas, not the agent's report

Failures we hit:

- A tool call returned success and changed nothing. Test with a wrong file path: if that also succeeds, the tool is down.
- An agent finished its run and wrote nothing. Count frames, find the new one by name, render it.
- The saved file lagged the live document by an hour. Check the app's backup, not the file on disk.
- The tool wrote into whichever file was open, not the one specified. Check the active file before building.
- An agent placed frames from a remembered layout and overlapped existing work. Place one container per batch with the empty-space finder, then run an overlap check.

## pen.dev to Figma

pen.dev has no Figma export. Convert the live document to a web page, then capture it into Figma. Text stays editable and auto layout carries over. Components arrive as plain frames, so this suits review and handover. Numbers, banners and notes move with it.

[Get in touch](https://fluxcotech.com/#contact) to set this up for your team.
