Back to Projects
Contact Me
UX Writing Assistant documentation in Notion — 55 views, 12 unique viewers across design, product and QA teams

A copy review system that thinks in writing rulesBuilt with Claude to catch what ships wrong before it ships

Every team at Delivery Hero was reviewing copy differently — or not at all. No shared standards, no consistent voice, and UX writers already at capacity. I built a three-skill AI system using Claude that reads a Figma screen, detects whether it's Partner Portal or Backoffice, loads the right writing rules, and returns a structured review table in seconds — covering every element, flagging every violation, and suggesting improved copy ready to apply.

TeamDelivery Hero · Vendor Design
StackClaude · Figma MCP
<30s To review any screen, start to finish
5 Teams use it — Designers, PMs, Writers, Devs & QA
2 Writing rulesets — one per product surface
6 Ways to submit — Figma link, screenshot, or paste text
0 Rules to memorise — Claude applies them all

Paste a Figma link. Claude fetches the screen, detects the audience, pulls copy from every layer in parallel, runs it against DH writing rules, and returns a structured table — every element reviewed, every violation cited, suggested copy ready to apply. The whole review lands in under 30 seconds.

Here's what I built and why.

The Problem

Copy review was manual, inconsistent, and impossible to scale

No shared standard across the team

Delivery Hero has two distinct product surfaces with completely different audiences: the Partner Portal used by restaurant owners and managers, and a suite of Backoffice tools used by internal agents, KAMs, and sales reps. The writing rules for these two audiences are fundamentally different — one needs warmth and clarity, the other needs speed and precision.

But in practice, copy review was informal. Designers caught what they caught. UX writers were a bottleneck. Nothing stopped the wrong tone, wrong terminology, or a title-cased button from shipping.

Two audiences with completely different needs

The same copy that's right for one surface is wrong for the other. Partner Portal users need zero jargon, warmth, and clear next steps. Backoffice agents use SLA, KPI, and QC daily — hand-holding copy would feel condescending and slow them down.

Partner Portal Backoffice
Who they are Restaurant owners & managers Internal DH agents — Sales Reps, KAMs, QC agents
How they work Managing their own business, often on mobile Processing cases, meeting SLAs, working at volume
What they need from copy Warm, clear, reassuring Fast, precise, no hand-holding
Jargon tolerance None — no acronyms or internal terms High — SLA, KPI, QC are daily language
Error tone Supportive, no blame Direct, outcome-focused, no softening

The gap the system had to close

Before a screen ships, someone needs to verify: sentence case everywhere? Active voice? No banned jargon? Correct terminology for this audience? CTAs that describe what happens next? Error messages that direct instead of apologise? That's dozens of rules per screen, applied consistently, across every designer, every sprint. A checklist gets ignored. What was needed was something that would do the check automatically — and be reliable enough to trust.

How It's Built

Three skills. One entry point. Zero guesswork.

The system is made of three Claude Code skills. You only ever invoke one — the rest happens automatically.

Entry point
ux-copy-review

The only skill you ever call. Reads your input, detects the audience, loads the right ruleset, and runs the full review. The split between surfaces happens invisibly — from your side, one command always does the right thing.

Auto-loaded
ux-writing-vendor

All writing guidelines for Partner Portal surfaces. Loaded automatically when a Partner Portal surface is detected. Contains voice, tone, terminology, punctuation, and navigation rules for restaurant-facing copy.

Auto-loaded
ux-writing-backoffice

All writing guidelines for internal DH tools. Loaded automatically for Backoffice surfaces. Contains tier-aware tone rules, error message patterns, and approved backoffice terminology.

The rules are human-written — not generated by AI

Before any of this was built, we commissioned an external freelance UX copywriter to write the guidelines from scratch. They studied both product surfaces — Partner Portal and Backoffice — and documented the voice, tone, terminology rules, and approved language patterns that reflect how Delivery Hero actually operates internally. The jargon, the exceptions, the things that matter to our teams: all captured in a written document by a human expert.

Those guidelines became the foundation of the two skill files. Claude doesn't invent the rules — it applies rules that a specialist already defined. That distinction matters: the AI is a reliable executor of human judgment, not a substitute for it.

Why two separate rule files instead of one

When Claude is given one large ruleset covering both audiences, it has to constantly judge which rules apply — and it can blend them incorrectly. It might apply the vendor tone (warm, upbeat) to a compliance warning that should be direct and urgent. It might flag correct backoffice terminology as wrong because the vendor rules say to avoid internal terms.

By splitting the skills, each file contains only the rules relevant to that audience. When ux-writing-vendor loads, every rule in that file applies — no ambiguity, no conflict. As guidelines evolve, each skill updates independently without risking the other.

How Claude decides which rules to load

Partner Portal detected with full certainty → vendor skill loads, review starts. Backoffice detected with full certainty → backoffice skill loads, review starts. Audience unclear at all → Claude stops and asks. It never guesses, never silently defaults. A wrong assumption about audience produces bad suggestions. One extra question is always better than a misfire.

Skill files · vendor-design-hub

.claude/skills/
├── ux-copy-review/SKILL.md       ← the only one you call
├── ux-writing-vendor/SKILL.md    ← Partner Portal rules
└── ux-writing-backoffice/SKILL.md ← Backoffice rules

Setup — syncing the skills

The skills live in the vendor-design-hub project. Before using the system for the first time — or after any update is published — navigate to that directory and run /sync inside Claude. This pulls the latest skill files to your local machine. Re-sync whenever a review isn't behaving as expected.

How To Use It

Six ways to trigger a review — pick what you have

01
Figma URL Recommended

Paste a Figma link. Claude fetches the design, detects the audience, extracts all visible copy from every section in parallel, and returns the review table. You don't need to point it to specific sections — it reads every layer automatically.

02
Screenshot or image

Drop a screenshot when you don't have a Figma link or the design is in another tool. Claude reads the image, extracts visible text, asks about the audience if it's not obvious, and runs the full review.

03
Raw text

Paste copy directly from a doc, spreadsheet, or your head. Claude asks up to three questions (audience, element type, screen context), then runs the review. Answer all three in your first message to skip back-and-forth.

04
Figma URL with a concern

Run the full review but flag what you're worried about: "Review this screen — I'm mainly concerned about the error messages." Claude runs the full review and prioritises your concern at the top of the output.

05
A/B comparison

Submit two options. Claude reviews both against DH writing rules, recommends one with a clear reason, and notes any issues with either version.

06
Write from scratch

No copy yet? Specify the element type, screen, and audience. Claude drafts following all DH rules, shows the tone applied and why, and lets you iterate: "Make it shorter," "More direct," "Too formal."

Claude Code terminal: Figma URL review of Partner Portal dashboard — parallel MCP calls extracting copy from multiple nodes, then returning structured review table
Method 1 in action — Partner Portal dashboard pasted as a Figma URL. Claude fetches every node in parallel, confirms the surface, and returns the review table with Fix items highlighted.
Claude Code terminal: image review of SalesHero backoffice pipeline — audience detected as Tier 3, backoffice skill loaded, 9-element review table returned
Method 2 — a screenshot of the SalesHero pipeline dropped in. Audience detected as Backoffice (Sales Rep, Tier 3), backoffice skill loaded, 9-element review returned with 2 Fix and 4 Improve items.

Reading the output

Every review returns a structured table. Fix — a specific DH rule is broken, must be corrected before the design ships. Improve — technically acceptable but could be stronger, a recommendation not a blocker. Good — passes all rules. After the table: a Notes section for cross-element observations, and a one-line Priority summary: "3 critical | 2 improvements | 6 passing."

Acting on findings

Start with all Fix items — these are blocking. Review Improve items with your team using judgment based on context. Use suggested copy as a starting point, not a final answer. To dig into a specific row: "Explain why #3 is a Fix." To get alternatives: "Give me 3 options for the CTA in row 4."

Applying suggestions back to Figma

If you started from a Figma URL, one command writes the approved copy back into the design file. This never happens automatically — Claude only returns the review table until you give an explicit instruction. Before applying, read every row carefully: suggestions are rule-correct, but you need to verify they're right for your specific context, character limits, and localization constraints. Apply the rows you're confident in first, then re-run the review on the updated screen to confirm everything passes.

Claude Code terminal: applying suggested copy back to Figma — before/after table showing 10 text nodes updated with improved copy
After the review, one command writes the approved copy straight back into Figma. Claude confirms each node updated and shows a before/after diff in the terminal.

Quick reference — what to say

What you wantWhat to type
Review a Figma screenReview the copy on this: [Figma URL]
Review a screenshotReview the copy [attach image]
Review raw textReview this copy: [paste text]
Focused reviewReview this, I'm mainly worried about the error messages: [URL]
Compare two optionsWhich is better: [option A] or [option B]?
Write new copyWrite copy for [element] on [screen] for [audience]
Iterate on a suggestionMake it shorter / More direct / Too formal
Ask for alternativesGive me 3 options for the CTA in row 4
Understand a findingExplain why #3 is a Fix

Outcomes

From a checklist no one read to a review that runs itself

Any designer on the Vendor Design team can now paste a Figma link into Claude and get a full, structured copy review in seconds — no UX writer needed in the loop for routine checks. The system doesn't replace the writer's judgment; it protects the time they need to apply it.

What it catches, consistently

Title case where sentence case is required. Passive voice. Banned jargon or internal terms. Wrong terminology for the detected surface. Incorrect punctuation — en dash vs hyphen, parentheses, percentage formatting. CTAs that don't describe the next action. Error messages that apologise instead of directing. Placeholder or dummy content — spotted and listed separately, never reviewed as real copy. Inconsistent terminology across elements on the same screen. Previously, these were caught inconsistently — or not at all.

Claude Code terminal: 12-row review table for Backoffice notifications panel — 5 Fix items, 1 Improve, 6 passing — each issue cited against a specific rule
Full 12-row review of the Backoffice notifications panel. Every element reviewed, every issue cited against the specific rule it breaks — not just flagged as "wrong."

Real copy, measurably better

Before and after: Partner Portal notifications — passive voice removed, sentence case applied, direct language throughout
Partner Portal notifications — before and after. Passive voice, title case, and apology language replaced with direct, action-forward copy across every notification in one pass.

Who uses it

UX Designers
Review copy in Figma before handoff — no back-and-forth with a writer for routine checks
Product Managers
Sanity-check copy before sprint sign-off — catch issues before they reach review
UX Writers
Get a second pass on drafts, write from scratch faster with instant rule feedback
Developers
Verify that copy in implementation matches DH standards before it ships
QA
Catch copy issues before release — a final pass that doesn't depend on someone's memory

Hard constraints built in

Claude will not ask more than three questions before starting a review. It will not skip any element — everything appears in the table, even passing items. It will not guess the audience when the context is unclear. It will not present uncertain suggestions as definitive. It will not blend review and write modes — the review completes first before any new copy is drafted. These aren't restrictions — they're what makes the output trustworthy enough to actually act on.

Reflection

The writer's judgment, at system speed

The most challenging part wasn't the technical architecture — it was the ruleset. Before the system could work, the writing rules had to be explicit enough for Claude to reason about unambiguously. That meant working with a content writer to document not just what the right answer is, but why, and what the wrong version looks like in practice.

That process surfaced a lot of informal knowledge that had lived only in people's heads. The system didn't just automate the review — it codified the standard. Now those rules exist outside any one person, in a form that's versionable, updatable, and consistent regardless of who runs the review.

Next: expanding coverage to additional product surfaces, and making the Figma write-back feature available to designers who start from screenshots rather than Figma links — so the full workflow is accessible regardless of input method.

A good AI tool doesn't replace the judgment. It protects the time you need to actually use it.