Owned problem framing, the data model behind annotations, the full plugin UI, and the export format engineers ended up adopting as a handoff artifact.
Design decisions were being made in review, then lost — nobody could reconstruct why a screen changed two weeks later.
Reframed feedback as structured data rather than chat, then designed and shipped a Figma plugin around that model.
3.4k installs, and the decision-trail export became the reason teams kept it installed.
I was embedded with three product squads that shared one Figma file per surface. Reviews happened in a weekly call, and everything said in that call lived in Slack afterwards.
The plugin ecosystem already had commenting. What it didn't have was any notion of a comment being resolved, owned, or exported.
Across three teams I kept watching the same pattern: a design review would produce a dozen good decisions, and two weeks later nobody could say why the checkout button had moved.
I logged every instance for a month. The insight wasn't that feedback was missing — it was that feedback had no shape. It couldn't be assigned, tracked, or exported, so it evaporated.
Once feedback had a schema — owner, status, anchor, timestamp — exports, filtering and accountability all fell out of it for free.
I prototyped three anchoring models before committing, because anchoring was the thing that would decide whether this survived contact with real files.
Comments needed to survive layout changes. A pin fixed to x/y coordinates is wrong the moment anyone nudges a frame — and frames get nudged constantly.
Node ID binding was the only model that survived a real week of file churn in testing. The deleted-layer edge case was rare enough to handle with an "orphaned" state rather than designing around it.
Two of the three squads asked for custom statuses. Configurable workflows are the obvious answer and also the thing that would have killed adoption.
The whole value proposition was "less ceremony than Slack". A configuration step before first use would have contradicted that on the first screen.
3.4k installs in the first six months, with a 41% four-week retention rate — high for a plugin of this type.
The unexpected result: the Markdown export became a handoff artifact engineers asked for by name, which wasn't the feature I'd expected to matter.
The decision-trail export was a late addition, but it turned out to be the feature people actually adopted the plugin for.
If I ran this again I'd validate the output artifact first and design the capture flow backward from it — I built the input experience for five weeks before I knew what the output needed to be.
Without Figma's comment API as a constraint, I'd anchor annotations to component instances rather than nodes, so a decision made on a button would follow every instance of that button across the file.