shiftrx・facility portal

An overwhelmed pharmacy owner had to leave one app and enter another just to post a job.

I unified the portal into one contextual product and rebuilt shift creation as a guided flow built for pressure.

I unified the portal into one contextual product and rebuilt shift creation as a guided flow built for pressure.

Role

Sole Product Designer

Timeline

2 quarters

Responsibilities

End-to-end process

Platform

Web

Screenshot of the ShiftRx Facility Portal shown on a laptop, displaying the Jobs dashboard with active postings and applicant counts.

01 - Context

Who it’s for, and what’s at stake

Owners open this portal rarely, and almost always under pressure: short-staffed, a shift to fill before tomorrow’s opening. A no-show can legally force a pharmacy to close for the day. The design had to earn trust at every step, not just the happy path.

2 → 1

A shifts portal and a bolted-on Careers app, joined by a “Switch to Careers” button, unified into one contextual product.

Managing both per-diem staffing and hiring felt like using two different products.

product

Built feature-by-feature with no shared system.

users

Users are infrequent, often non-technical, and almost always under time pressure.

02 - What I Inherited

A portal built section by section

The portal was functional but had never been designed as one product. Posting a shift, the single most important job, failed at every level.

Screenshot of the original ShiftRx facility portal showing separate Shifts and Careers interfaces connected only by a 'Switch to Careers' button.

Two products, one bolted on

Shifts and Careers were separate interfaces joined by a button. Managing both felt like leaving one app and entering another.

Creation in a cluttered modal

Every field at once, most styled gray so active ones read as disabled, and required fields revealed only at validation.

Screenshot of a shift-creation modal with every field shown at once, most styled gray so active fields are hard to distinguish from disabled ones.
Screenshot of the sidebar navigation showing 'Add Facility' listed as a global nav link rather than an action within the facilities table.

“Add Facility” lived in the sidebar

A global navigation action, not a destination, buried alongside links instead of belonging to the facilities table where it’s actually used.

One date at a time, from scratch

Every date needed its own pass through the modal, its own calendar tap, its own time range, its own save — with no way to apply one setup across several days.

Screenshot of the original date picker, showing a single date and time range selected per pass with no way to apply one setup across multiple days.
Screenshot of a job posting showing only a yes/no application status, with no visibility into candidate stage.

A job posting with no pipeline behind it

Beyond a yes/no on whether someone applied, there was no way to see where a candidate stood (invited, trial shift, hired) or to stop a facility from hiring outside the system entirely.

03 - What I Rebuilt

Decision by decision

One product instead of two, and a creation flow that respects the moment.

Two modes, not two apps

A sidebar toggle replaces the Switch button. Navigation, the primary CTA, and the dashboard cards all adapt to context.

A sidebar toggle replaces the Switch button. Navigation, the primary CTA, and the dashboard cards all adapt to context.

A five-step guided screen

One focus per step, required fields marked, and a progress indicator that fills with checkmarks, the sidebar always in view.

One focus per step, required fields marked, and a progress indicator that fills with checkmarks, the sidebar always in view.

Destinations, not actions

“Add Facility” left the sidebar. Facilities got its own table, with “+ Add Facility” as an in-context button where it belongs.

“Add Facility” left the sidebar. Facilities got its own table, with “+ Add Facility” as an in-context button where it belongs.

Multiple dates, one pass

Click individual dates or a range; selected days appear as removable chips, all sharing the same time and details instead of repeating them one by one.

Click individual dates or a range; selected days appear as removable chips, all sharing the same time and details instead of repeating them one by one.

Every hire, tracked end to end

A full applicant pipeline: invites, offers, trial shifts, plus work details and requirements captured at posting, so every hire stays inside the system instead of off the books.

A full applicant pipeline: invites, offers, trial shifts, plus work details and requirements captured at posting, so every hire stays inside the system instead of off the books.

04 - Decisions

What I chose and what I ruled out

Chose

Shifts + Jobs, one product

I put staffing and hiring in the same product, not two apps. A manager should never have to leave one to do the other.

I put staffing and hiring in the same product, not two apps. A manager should never have to leave one to do the other.

A dedicated screen, sidebar always visible

I chose a guided step-by-step structure that never takes over the screen, so the context a manager relies on stays one glance away.

I chose a guided step-by-step structure that never takes over the screen, so the context a manager relies on stays one glance away.

A longer onboarding that collects once

I made the setup longer on purpose, collecting everything once so every later interaction is frictionless. Thoroughness here is an investment, not friction.

I made the setup longer on purpose, collecting everything once so every later interaction is frictionless. Thoroughness here is an investment, not friction.

Ruled out, and why

A full-screen creation wizard

Taking over the whole screen removes every visible anchor for someone under pressure. A dedicated screen with a visible sidebar keeps that anchor safe, and drafts are never lost if you step away.

Taking over the whole screen removes every visible anchor for someone under pressure. A dedicated screen with a visible sidebar keeps that anchor safe, and drafts are never lost if you step away.

A short single-form onboarding

Quick to finish, but it leaves profiles incomplete and pushes re-entry friction onto every shift, the worst possible moment for it.

Quick to finish, but it leaves profiles incomplete and pushes re-entry friction onto every shift, the worst possible moment for it.

outcomes

What changed

~82%

Shift creation completion rate

<1 min

Time to post a single shift

2 → 1

Unified workflow

05 - Learnings

What I learned

One place to work from, not two

Switching apps to do one job cost owners time and confidence they didn't have to spare. Unifying Shifts and Jobs wasn't about elegance, it meant one less thing to think about when they were already stretched thin.

A longer onboarding can be right

The instinct to shorten is usually right, but every field skipped here meant asking the same question again on every future shift or job post. A longer setup once gave owners more control at the moment of posting.

Good UX is good business

Not every decision here was justified by user experience alone, some of the strongest calls also made the product easier to run and easier to grow. The two goals usually point the same direction.

Screenshot of the ShiftRx provider app shown on laptop and phone, displaying the redesigned shift dashboard.

Next case study

ShiftRx Provider App

The other side of the marketplace, from visual chaos to a product that earns provider trust.

Mayra Coronel

Product Designer building design systems and AI-powered features for early-stage healthtech and SaaS products.

Copyright © 2026 Mayra Coronel. All rights reserved.

Designed and built in Framer ♡

Mayra Coronel

Product Designer building design systems and AI-powered features for early-stage healthtech and SaaS products.

Copyright © 2026 Mayra Coronel. All rights reserved.

Designed and built in Framer ♡

Mayra Coronel

Product Designer building design systems and AI-powered features for early-stage healthtech and SaaS products.

Copyright © 2026 Mayra Coronel. All rights reserved.

Designed and built in Framer ♡