Role: Senior Product Designer (generative research, IA, interaction design, usability testing) Team: PM, Engineer, Product Designer (me) Timeline: 8 weeks; shipped Q2 2025 Platform: Trunk Flaky Tests — a CI tool that detects and quarantines unreliable tests
At Trunk, we introduced a paid feature called Quarantining, and usage numbers weren't as high as we predicted. To investigate the reason, I conducted user interviews, competitive analysis, and three rounds of usability testing and discovered several critical usability issues.
I redesigned the quarantine feature with increased visibility, a simplified mental model, and a way for users to save and view why the status changed. My designs shipped to production and passed customer usability tests, ensuring that usability issues were no longer a barrier to feature usage.
Flaky tests are tests that fail randomly. They waste engineering time when engineers flail for hours trying to get their PR to pass the test. To save engineers from this pain and drain on their time, Trunk's Quarantining feature allows engineers to quarantine flaky tests, so that quarantined tests keep running but don't block engineers from merging PRs. The user chooses between two quarantine modes: automatic, when the Trunk Flaky Test product automatically detects and quarantines flaky tests, and manual, when a CI owner sets the quarantine status.
Trunk's Flaky Test product's business model included Quarantining as a paid feature to incentivize upgrades, but low feature usage meant companies weren't upgrading often enough. We wanted to find out if the feature lacked usability or value (or both!).
Customer access at Trunk was tightly gated, so I first ran internal usability testing before spending our limited customer access. Sessions with participants surfaced clear insights. The Quarantining feature suffered from low visibility, a lack of a unique visual identity, mismatch with the user's mental model, and requiring a leap of trust before proof.
The status "Default (Not Quarantined)" was universally confusing. Nearly everyone asked: "Shouldn't there just be two settings — Quarantined or Not Quarantined?" Unanimous confusion isn't an education problem; it's a model problem. The name matched our system, not our users' mental models.
Turning on Auto-Quarantining demanded a leap of trust users weren't ready to make. This was an area where, as a designer, I wasn't yet sure if this was a usability or value problem and wanted to solve the previous three problems to see if it solved this fourth problem naturally.
To test usability of my design iterations, I defined success as task completion where testers completed a task list covering every system state. As they attempted each task, I asked them to:
I also proposed post-launch usage tracking.
I led the team in annotating examples of status design from Linear, GitHub, Sentry, Snyk, 1Password, and Figma. The best implementations shared two traits:
The annotations captured failure modes too — Sentry's buried activity feed and Snyk's silently vanishing rows.
Here is Sentry's UI with annotations. My second iteration imitated their "Workflow" line.
We tested these iterations internally and with customers.
What worked well:
What didn't work well enough:
What worked well:
What didn't work well enough:
What worked well:
What didn't work well enough:
Stakeholders asked to re-add the "Default" statuses. I wrote up the options with explicit trade-offs taken from interviews and our own reasoning, and under the Pros for including "Default", we listed "can't think of any." Having it written down helped reassure everyone we'd done the right thing by renaming it.
Our final customer validation came back clean: no task failures, no comprehension issues. Every contested element from earlier rounds — the hidden status history, the confusing status names, the preselection trap — was resolved.
The designs shipped to production. I left the company after launch but before usage data came in. What the design work established: usability issues were no longer a barrier to usage.
