All projects
FMCG / Content Ops

I used AI to build a plugin that saved 67 hours of manual work.

Legal flagged a word used across 9 Figma files. I built a plugin to find, review, replace, and document every instance — with a full audit trail for compliance.

Client NDA — FMCG sector
Year 2025
My role Senior UX Writer
Tools
Figma Plugin API JavaScript Python python-docx Claude
Results
67 hours
saved vs original estimation
9 files
searched and processed simultaneously
~96%
faster vs manual job

The task

One day I received an unexpected message. A leading FMCG client needed a single word changed across their entire app: every instance of promocja (promotion) had to become oferta (offer). Legal and compliance had flagged a risk. The change was urgent.

The scope: hundreds of screens, dozens of flows, 9 massive Figma files — each with multiple pages inside. And the client didn't just want the change made. They wanted a full DOCX report listing every single instance that had been updated, with a reference to its location.

I won't pretend I wasn't frustrated at first. Mass find-and-replace feels like work you hand to a junior, not a senior. But I sat with it — and that's when the interesting part started.

“The client didn't just want the word changed. They wanted proof of every change made — a documented audit trail.”

Why it was harder than it looked

Figma's built-in find and replace seemed like the obvious answer. It wasn't going to work — for two reasons that had nothing to do with technology.

Polish grammar doesn't cooperate. The word promocja appears in multiple grammatical forms depending on context: promocja, promocji, promocją, promocję, promocje — and each one may require a different replacement. Swapping every instance blindly would produce broken Polish in many places. Each change needed a human eye on the surrounding sentence.
There was no change log. The client required an audit trail — a documented record of every change, where it appeared, and what it was changed to. Figma's native replace function leaves no trace. There was no registry, no export, no way to prove what had been done.

This wasn't a find-and-replace problem. It was a content audit problem with a compliance requirement attached.

The decision

Once I cooled down, I started thinking differently. There had to be a better way than opening each file manually and hunting through screens one by one. That path led to weeks of work, human error, and a report nobody could trust.

I had built Figma plugins before — including a complex UX Writing Assistance plugin and several smaller tools. I knew what the Figma Plugin API could do. And somewhere in that research, it clicked: I could build a plugin that solved exactly this problem.

“The question wasn't 'how do I do this faster?' It was 'what kind of tool would make this task fundamentally different?'”

Building the plugin

I wrote down the requirements for what the plugin needed to do. The MVP was essentially a smarter version of Figma's native search — but with one capability that native Figma doesn't have at all: searching across multiple Figma files simultaneously.

That was the game changer. Instead of opening nine files one by one, I could run a single search across all of them. Every result — with its file name, page, frame, and surrounding context — appeared in one view.

The plugin was built with AI assistance — around 20 iterations over roughly 2 hours. I specified the requirements, iterated on the logic, and tested each build. The tool itself contains no AI — it's pure Figma Plugin API and JavaScript. But AI made building it faster and within reach.

Multi-file search across Figma projects
Context preview for each result
Full control over which instances to change
DOCX export with a complete change log
Direct links to each frame in Figma

Iterations

The MVP did the job. But during the work, I identified one more feature that made the whole experience significantly faster: grouping similar results.

Instead of reviewing each instance individually, the plugin grouped occurrences by their grammatical form or surrounding pattern. Promocja appearing 100 times across the file became a single input field — one decision, applied everywhere. This meant I could work at the category level rather than evaluating every single string in isolation.

For a language like Polish, where one concept can appear in five or six grammatical forms across a document, this wasn't a nice-to-have. It was essential for quality control.

Output and reporting

When the work was done, the plugin exported a DOCX file listing every change: the original text, the replacement, the file, the page, and a direct link to the exact frame in Figma. The client could open any entry and land on the precise location in under two clicks.

Because there were nine separate Figma files, the plugin produced nine separate reports. I wrote a short Python script to merge them into a single, clean document — one file, consistently formatted, ready to hand over.

The client received a change log they could share internally with legal and compliance. Every decision was traceable.

Results

01
67 hours
saved vs original estimation
02
9 files
searched and processed simultaneously
03
~96%
faster vs manual job

The client received a complete audit trail: every changed instance documented, linked, and formatted into a single report. Legal and compliance had the evidence they needed. The project closed without a single follow-up correction request.

Broader applications

The plugin was built for one urgent task. But the problem it solves isn't unique to that project.

Any situation that requires mass content changes across large Figma systems — with context control and a documented audit trail — is a candidate for this tool. That includes rebranding (product name changes, terminology updates), legal and compliance reviews (regulated language, restricted terms), and localisation QA across multi-language file sets.

The key insight: Polish grammar made the context requirement obvious in this project. But context control matters in any language, for any mass change where the surrounding sentence determines the right replacement. Find and replace doesn't know that. This plugin does.

“The tool contains no AI. It doesn't need to. It gives a human the right context to make the right call — at scale.”

What I learned

Seniority isn't about which tasks you accept. It's about how you approach them.