a wall of legacy text
The content had grown release after release, for years: long, descriptive topics, and tasks that sometimes ran past ten steps. Nobody wrote it badly; it accumulated, and the reader had to dig for the action.
I did not rewrite it all. I changed what each release let me touch, piece by piece.
NDA-safe throughout: no product screenshots. The strings below are representative, paraphrased recreations. They show the writing decisions, not exact production content.
regulated, audited, seven audiences
regulated ground
HIPAA, FDA and EMA adjacent clients, ISO 13485, ISO 82079-1.
a waterfall release train
Review cycles had to prove what changed from iteration to iteration.
seven personas, different guides
Each role reads its own documentation, gated by its own permissions.
every action audited
Reporting is the single source of truth, so its documentation is critical.
code, product, and usage data
I did not guess at the copy. I read the logic behind each feature, then checked the writing against how people actually used it.
The logic behind each feature, so the copy described what the system actually did, not what the spec hoped it did.
In the product on production environments, and UAT on every publication.
Analytics, heatmaps, and A/B tests on the content itself.
help, right when you need it
Guidance sits one click from the field, exactly when the choice is being made, so many errors never happen. Three recurring moments, each with its own job.
Names the fault and the fix. Shows the expected format as a plain example, in language that keeps the user's confidence intact.
Solution-first facilitator tone. Names the exact thing being removed, states the consequence, and the button says the verb, not a vague "OK".
Written from the reader's role. Leads with what they can now do, not the feature name. Surfaces per role, only when a change affects them, and ships localized.
system-centric strings, made human
The defaults name the problem. My rewrite names the fix, and the way forward. Flip the switch to see the same three strings, both ways.
Value does not match the required pattern.
Action not permitted.
Are you sure? [ OK ] [ Cancel ]
help, one click from the field
An NDA-safe recreation: no product screenshots, representative strings. The help sits exactly where the choice is made, so many errors never happen.
What gets locked
The help popover, shown where the reader meets it.
write once, adapt per study
Every study sends a first-access message, but the details differ. A named-variable model lets each team localize it without breaking the tone.
You now have access to [study] in [product]. The study is sponsored by [sponsor]. Questions? Contact [support].
First time here? Your password setup arrives in a separate email.
representative copy · editable at study level · the helper line pre-empts the top first-run support question
what changed, in the docs and the process
Documentation moved into sprints planned 1:1 with development scope, truly agile: drafts started early, testing was built into the plan, and the cross-functional review got shorter.
Task success rose 40% and support tickets fell 30% on the content I redesigned, with progressive disclosure and in-app guidance.
what I took from it, and what's next
The code is the source of truth for copy. Reading the logic behind each feature is what kept the writing honest.
The build cadence. Structured query models with SMEs, engineers, and QA compressed the doc cycle from a build every week across four to five weeks down to two builds in the same window.
Finish the accessibility retrofit. It moved at the speed of releases, and there is more to reach WCAG all the way through.