Work/Sample Analysis Status
DNAstack · WorkbenchProduct strategyUX researchInteraction designDesign systems

From a vague ticket to a traceable, extensible filter system

The ticket asked for a status column. Research showed researchers also needed to query samples by status and other criteria to decide which ones to run next. I reframed the problem, shipped an extensible filter system in two sprints, unblocked our first customer's onboarding, and got the long-term query builder onto the roadmap.

RoleDesign Lead
Timeline3 months, 2 build sprints
Year2025
TeamSr. Designer, PM, 4 engineers, 2 bioinformaticians
Context

What Workbench does

A patient sample goes through a sequencing instrument like PacBio Revio or Illumina, which outputs a raw string of DNA. Workbench is where bioinformaticians and clinical geneticists run secondary and tertiary analysis: finding mutations and variations, and what might cause a disease or affect treatment.

Patient sample→Sequencing instrument · primary analysis→Raw DNA output→Bioinformaticians run Workbench · secondary and tertiary analysis

Ambiguous requirements

The ticket said: add a status column. Research would reveal a different problem.

Go-to-market blocker

The PacBio consortium's onboarding was gated on this feature shipping.

Two sprints

Engineering had two sprints dedicated to implementation.

Samples table before the redesign, with only sample, movies and date added columns
BeforeThe samples table showed no analysis history, so there was no way to tell what had run.
Research

What researchers were really asking for

There's no way in the UI to tell if my sample was analyzed before.
I want to find samples that ran workflow 1 but didn't run workflow 2.
I want to quickly identify which samples failed a particular workflow and rerun analysis.
I want to find samples that ran a particular workflow that generated .vcf outputs.

Seeing status wasn't enough. Researchers needed to query samples to decide which ones to run next. A filtering and traceability problem, not a display problem.

Exploration

Two directions, two clear verdicts

Direction 1 · Nested table
SampleLast analysisRuns
Pika WGS 94Finished10 succeeded
Pika WGS 12Partial1 failed, 1 pending
Human de novo AssemblyFailed10m 55s
Human WGSRunning11m 20s
Tertiary pipelineSucceeded3h 15m
Pika WGS 5Running1 running, 5 ok
RejectedAnswered "what happened to this sample," but broke down when a sample had many runs and still didn't let users find samples by criteria.
Direction 2 · Grouped UI
SampleWorkflowStatus
family: HG008_fam 3
HG001Human WGS 2.0Failed
HG002Human WGS 2.0Running
family: HG004_fam 4
HG003Human WGS 2.0Running
HG014Human WGS 2.0Running
ParkedRight mental model, too complex for two sprints. I set it aside and kept the architecture for later.
Turning point

Phenopacket changed the plan

Midway through, bioinformaticians flagged that samples would soon carry clinical metadata in Phenopacket, the GA4GH standard.

The filters had to absorb many new attributes later, like sex, disease, phenotypic features and sampled tissue, without a rebuild.

{ "subject": { "id": "HG002", "sex": "MALE" }, "phenotypicFeatures": [{ "type": { "id": "HP:0002094", "label": "Dyspnea" } }], "diseases": [{ "term": { "id": "MONDO:0005061", "label": "Lung adenocarcinoma" } }], "biosamples": [{ "sampledTissue": { "label": "Lung" } }] }
WhereSexMale
AndDiseaseLung adenocarcinoma
AndPhenotypeDyspnea
AndTissueLung

Same filter row, new attributes. No structural change.

Strategy

From a display request to a query system

I designed a new filter component built to need zero rework later. Every condition uses the same row, so new attributes plug in without changing the structure.

The ticketAdd a status column to the samples table
Display only
Filter system · one row, any attribute
Statusis, is not
Workflowname and version
File outputsoutput files
Date submittedanalysis history
Familysample groups
Phenopacketsex, disease, phenotypes · later

I prototyped the end-to-end flow before handoff, so engineering and the bioinformaticians could react to the real interaction:

Add a condition→Pick an operator→See results update→Save the filter→Reuse it as a badge
Judgment

The decisions that mattered

Research turned a small ticket into a much bigger problem. These were the calls I made with the PM, engineering lead and bioinformaticians to still ship in two sprints.

  1. 01

    Push back on the ticket

    Adding a status column was a few hours of work. Research showed the real requirement was much larger: researchers needed to find samples by criteria, like which ones ran one workflow but not another, to decide what to run next. I took that back to the PM and engineering lead, and we agreed to spend both sprints on a filter system instead.

  2. 02

    Ship less, design the whole thing

    The grouped UI matched how researchers think about sample families, but it couldn't ship in two sprints, so we set it aside. For filters, I designed the full set of operators up front and we released the basics first, so the first customer launched on time and the next release needed no redesign.

  3. 03

    Let a late constraint change the architecture

    When the bioinformaticians raised Phenopacket midway, the easy path was to note it for later. I reworked the filter so every condition uses the same row, then walked engineering and the bioinformaticians through the prototype before the data model locked.

What shipped

One filter system, any attribute

Sample Analysis final UI: Conditional query builder
Sample Analysis final UI: Richer operators
Sample Analysis final UI: Autocomplete, instant results
Sample Analysis final UI: Scalable metadata menu
1 / 4
Interactive

Try the saved filters

Click a saved filter to apply it. The conditions and results update the way they do in the shipped design.

workbench.omics.ai · Data · PacBio Human WGS
Saved filters · click to apply
Interactive
All filters
SampleFamilyWorkflowStatusOutputs
Outcomes

What it changed for the business

GTM unblocked

PacBio consortium onboarded on schedule

Our first consortium customer and a high-stakes launch for the business. Onboarding shipped on schedule.

Roadmap shaped

Query builder endorsed by leadership

Leadership called the query builder the north star and added it to the roadmap.

Zero rework

Ready for clinical metadata

The filter foundation absorbs Phenopacket attributes with no structural changes.