From problem to product enabling better microcopy at scale. Improved prototyping speed by 80%.
Disclaimer: Some details in this case study may be vague to protect client IP under NDA.
In our product lifecycle, UX microcopy fell into the gap between PMs (focused on logic) and designers (focused on layout). Everyone touched it; nobody owned it.
So, the idea was to use AI to automate the process...
I built an AI-native Figma plugin that writes and validates UX copy against Branch's human-approved database while offering on-demand, brand-compliant rewrites eliminating the context-switching between Figma, Claude, and ChatGPT.
60% faster design -> prototyping
A designer working on a flow would: select text in Figma → switch to Claude → paste text → wait → copy suggestion → switch back → paste → repeat 20+ times per screen. That back-and-forth destroyed concentration.
Worse, we had invested months building a human-approved master copy database. But Claude would rewrite even the approved copy, defeating the entire purpose of a single source of truth.
"We needed a companion, not a replacement."
A designer working on a flow would: select text in Figma → switch to Claude (custom copyGPT) → paste text → wait → copy suggestion → switch back → paste → repeat 20+ times per screen. That back-and-forth destroyed concentration.
Worse, we had invested months building a human-approved master copy database. But Claude would rewrite even the approved copy, defeating the entire purpose of a single source of truth.
Useful for design hand-off to check if all copy in a design is approved
Checks an image for a quick clarification eg during meetings/peer reviews
Special behaviour: Dynamic values (e.g., "Pay in 1 day" vs "Pay in 5 days") are automatically ignored to prevent false flags using a regex pattern.
Rewrites any selected copy on any all figma frames or layer. Useful for multiple screens/texts rewriting
Each rewrite is: Market-aware (Kenya = "M-Pesa", India = "UPI") · Tone-compliant (British English, plain language) · Free of blacklisted patterns.
Rewrites any frame(s) that is selected on a Figma canvas. Generates 3 options each and designer can select & apply
Key optimisation: I reduced token size from ~20,000 to ~340 while preserving brand tone using a compressed system prompt + ephemeral caching. This reduced API costs by ~98% per validation call.
Symptom: Even perfectly good approved copy was being flagged as "needs improvement" because Claude didn't know it was approved.
Solution: Two-phase validation — local exact match against JSON (no AI cost), and only if unmatched, call Claude for suggestions.
Symptom: "Pay your loan in 1 day" and "Pay your loan in 5 days" triggered false mismatches.
Solution: Regex-based dynamic value detection. Any text matching the pattern passes automatically — no false flags.
Symptom: Designers wanted to save new approved copy without editing raw JSON.
Current solution: Session-only approval with a visible warning. Future: Remote Vercel endpoint to write back to the central DB.
"I don't have to 'convince' the AI anymore. If the copy is already approved, it just works. And when I need a rewrite, it's right there." — Designer feedback
Remote DB sync — Right now, approved copy is session-only unless manually added to JSON. A small Vercel endpoint would solve this permanently.
Batch approval UI — For bulk-adding copied text to the master DB without editing JSON manually.
Usage analytics — To track how many rewrites are actually applied vs. ignored, which helps tune the model further and build the business case for wider rollout.
We built a custom GPT trained on our screens and tone. But it hallucinated unpredictably. The dreaded double dash made every output look AI-generated, and it frequently violated our own guidelines (e.g., using "click" instead of "tap").
Claude had better discipline, larger context window. But a new problem emerged: Claude would rewrite even approved copy, defeating our single source of truth.