shiftrx・PROVIDER app
A provider app with no design language was losing pharmacists before they ever saw a shift.
I rebuilt it in two phases, first a visual system from scratch, then a full onboarding overhaul.
Role
Sole Product Designer
Timeline
2 quarters
Responsibilities
End-to-end process
Platform
Web, iOS, Android
01 - Context
Who it’s for, and what’s at stake
Deletion events over the first half of last year, clustering into three failure modes: too few local shifts, pay dissatisfaction, and app usability.
Usability was the one failure mode entirely within a designer's control. That's where I started.
product
Already live and in daily use by pharmacists and techs, built feature-by-feature instead of a shared design language.
trust
Trust is the most fragile asset here: licensed professionals handing over credentials. Tone and clarity are load-bearing.
02 - What I Inherited
The app was functional but built feature-by-feature. I spent my first days using them as a provider would, documenting what I hit. It wasn't a product with a few rough edges. It was a product with no language.
Tags that looked disabled
Status tags and buttons followed no shared rules. A confirmed shift could look identical to a disabled control.
Nowhere for the eye to land
Long screens read as one dense block, with nothing to guide the eye toward what mattered.
An assistant with nothing to say
A generic overlay sat on top of the dashboard, 'How can I help today?' and an empty field, with no sense of what it could actually help with.
Three names for one feature
The same section read 'Careers' in the mobile header, 'Jobs' in the mobile tab bar, and split into 'PRN Shifts' and 'Part/Full Time Jobs' on desktop, all pointing at the same thing.
"Professional Info" meant everything
Role, malpractice insurance, a phone number, SMS consent, and a state license all lived under one heading, with no real thread connecting them beyond needing an answer.
03 - What I Rebuilt - PHASE 1
I built the design language from scratch
Without a coherent language, nothing else could be consistent or trustworthy.
Shifts and Jobs, one tap apart
Clear sections replace a wall of text
A name and three places to start
A score you can actually improve
04 - What I Rebuilt - PHASE 2
The visual fix revealed a structural one
Even after the visual pass, onboarding still asked for too much, in the wrong order, before providers had any reason to stay. Every drop-off was a provider who never entered the marketplace, fewer applicants, shifts going unfilled. A supply problem with direct business consequences.
intent before identity
05 - Decisions
What I chose and what I ruled out
Chose
Two deliberate phases
Intent before identity
Consent gets its own screen
Ruled out, and why
Deferring credentials fields, specifically
Touching onboarding architecture in Phase 1
Leaving the profile photo optional
outcomes
What changed
+20%
New user activation rate
-42%
UX-related support tickets
06 - Learnings
What I learned
One shared system, two sides of a marketplace
I was the only designer on both sides: the Provider app that pharmacists and techs used to find shifts, and the Facility platform that pharmacy managers used to post them. A shared system was the only way to keep both consistent instead of drifting into two different products that happened to share a name.
"Providers" wasn't one user
I learned the umbrella term covered two different anxieties. Technicians needed pay and background-check timing to be clear, fast, that was the difference between trusting the app and calling support. Pharmacists cared more about reputation and whether the work matched their role. Same label, two different sets of priorities.
Unclear copy was a support cost
Providers called customer service asking when their pay or background check would clear, not because the information didn't exist, but because the app never said it. Once that status lived in the product itself, the calls dropped.

