This project is protected

Enter the password to view this case study.

That's not it — try again.
Case Study — LastMinute

When a nurse calls out at 2 AM, someone has to fill that shift.

I redesigned a healthcare scheduling system — dashboard, schedule, templates, manager mobile — for a product that existed but wasn't keeping up. Two interfaces, one system: managers on desktop, nurses on mobile.

Role
Product Designer
Timeline
May – Nov 2025
Team
3 designers + engineering
Platform
Web + iOS
LastMinute Dashboard
0.1 / Context

The product existed. The experience didn't.

LastMinute had a manager-only desktop app in beta for a few months, tested internally — no nurse interface, no mobile. I joined a team of three designers plus engineering to redesign the manager side and build the nurse experience from scratch. I owned the manager core (dashboard, schedule, templates, mobile companion) and the system architecture the whole team designed against.

Manager only
What existed before us
Beta for a few months, tested internally — desktop-only, no mobile, no nurse interface
2 Platforms
What we shipped
Manager desktop + mobile companion, nurse mobile — connected by one system
3 Designers
7 months, May – Nov 2025
I owned the manager core; we shared the IA and design system
0.2 / Two Users, Two Problems

Two users, two design problems

The old product treated scheduling as a manager task. But every shift decision has two sides — someone assigns it and someone works it. Designing for both meant two completely different interfaces sharing one system.

Manager

Desktop — density and control

Schedule grid, request queue, coverage gaps, staff availability, templates, admin. Charge nurses live in this all day. One glance should answer: "Are we covered?" The old product had this — but scattered across disconnected pages with no shared IA.

Nurse

Mobile — speed and clarity

Daily schedule, shift notifications, pick-up opportunities, call-out flow. Nurses check between patient rounds — 15 seconds, one thumb, on a phone in their scrub pocket. This didn't exist before. We built it from scratch.

1.0 / Process

Map the system before you open Figma

The old product had been built feature-by-feature over years — shift call-outs bolted onto a schedule page, a marketplace added as an afterthought, PTO buried in a settings panel. Before touching a single screen, I spent three weeks mapping how hospitals actually handle shift coverage: what happens at 2 AM when a nurse calls out, who gets notified, how shifts get traded across clinics, and where the process breaks down. That map became the blueprint for everything that followed.

01

Stakeholder interviews

Talked to charge nurses who manage floor coverage, hospital administrators who track labor spend, and on-call staff who pick up shifts. Each had a different mental model of the same system — and none matched the existing UI.

02

Flow decomposition

Broke the product into five subsystems in FigJam: shift assignment, coverage requests, PTO management, shift swaps, and the cross-clinic marketplace. Mapped current-state vs. proposed flows for each — this caught three circular dependencies before we wrote a line of code.

03

IA and ownership split

Defined a five-surface architecture — Dashboard, Schedule, Templates, Requests, Admin — with shared component patterns and naming conventions. Then split ownership: I took the manager core, teammates took requests and nurse mobile. The shared IA kept us in sync without daily check-ins.

04

Version cadence

Shipped in four passes: v2.0 (structure + layout), branding refresh (7 logo iterations alone), v2.1 (connected flows), v2.2 (polish + edge cases). Weekly crits with all three designers plus engineering kept the two platforms — desktop and mobile — from drifting apart.

AI in my own process

Three places AI showed up.

Hospitals don't have time for ambiguous design decisions. AI didn't make the calls — it compressed the time between insight and the next call I had to make.

Synthesis

Claude · stakeholder mental models

Across three weeks of system mapping, I had Claude cluster charge-nurse, admin, and on-call interview transcripts. The clusters made it obvious that the same word — "coverage" — meant three different things to three users. That insight became the Manager / Nurse split.

Prototyping

Gemini · dashboard & grid

The "are we covered?" dashboard and the scheduling-grid edit affordances were prototyped with Gemini's code generation before they reached the design file. Testing hover states and information density on real DOM was faster than mocking forty variants in Figma.

Adversarial review

Claude · edge cases & WCAG

Before each release, Claude reviewed the dashboard against WCAG AA targets — contrast, focus order, error states. I also asked it to imagine a 12-hour shift and surface which scheduling-grid edge cases would break first; overfilled positions came back at the top of the list.

FigJam board showing current vs proposed user flows for scheduling and coverage requests
1.1 / Iteration

Templates and schedules are the same problem

The biggest design challenge was the connection between templates and the schedule. Hospitals already had staffing data in spreadsheets — I designed a flow where managers import their Excel, generate a reusable template, apply it to any week, then add custom shifts on top. Templates are the base layer; customizations sit above without breaking the blueprint.

01Create Template
Create new template screen
02Template Overview
Template section after creation
03Apply to Schedule
Schedule overview with applied template
04Add Custom Shift
Add new customized shift on top of template
v2.0

Templates and schedules felt disconnected

Managers created templates in one place and applied them somewhere else. They'd build templates but forget to apply them, or edit the schedule directly and lose template changes.

v2.1

Connected, but custom shifts were invisible

I added apply-to-schedule directly in the template flow. But the schedule didn't distinguish template shifts from custom additions — managers couldn't tell what would change on a template update.

v2.2

Visual layering solved it

Template shifts and custom shifts became distinct visual layers. Updating a template propagates without touching customizations. Weekly crits pushed me to add import error handling and a "start from last week" shortcut.

2.0 / Manager Experience

The charge nurse's command center

My primary ownership. I redesigned the dashboard, scheduling grid, template system, and manager mobile app — the surfaces managers live in.

My work

Dashboard

Redesigned around "action items" instead of the old "current state" view. Pending approvals, unfilled shifts, coverage warnings — one glance answers: are we covered?

My work

Scheduling Grid

Two views: by area (ICU, Pediatrics, ER) and by staff. Create regular and customized shifts, edit published shifts, manage overfilled positions. Constraints baked in.

My work

Template System

Configure once, apply to any week. Roles, times, staff counts. I designed the creation flow, apply-to-schedule interaction, and empty-state onboarding.

app.lastminute.health/dashboard
LastMinute Manager Dashboard — action items, pending approvals, schedule snapshot, analytics
My work

Manager Mobile

Companion app: today's schedule, on-call staff with advanced filters, shift details, push notifications on lock screen. A quick-check tool for the hallway.

Team

Admin + Settings

Departments, roles, user groups, shift times. Another designer owned these; I set the IA and patterns they built on.

Team

Request System

PTO requests, coverage requests, shift marketplace. A teammate designed the flows; I defined the system model (draft → send → accept/decline).

Manager mobile — daily schedule with shift status
Daily Schedule
Manager mobile — on-call staff list with filters
On-call Staff
Manager mobile — shift details with staff assignments
Shift Details
3.0 / Nurse Experience

Mobile-first. Designed for thumbs.

A teammate owned the nurse app. I built the system architecture it plugs into — notification taxonomy, shift status model, data flows. When a nurse accepts a shift on mobile, the manager's grid updates instantly. That connection was my responsibility.

Team

Daily Schedule

Today's shifts, times, location, staffing level. Tap for full details. Swipe for other days.

Team

Notifications

All / Updates / Actions. Call-outs, shift offers, swap requests. One tap to accept or decline. Push on the lock screen for urgent items.

Team

Shift Call-out + Availability

Urgent coverage: big accept/decline. Availability calendar: mark which days you can work. PTO: pick dates, submit, get notified.

Nurse mobile app — shift preferences, calendar, schedule views, and open shift details
4.0 / Design Evolution

Each version killed something that wasn't working

V 2.0 Aug 2025

Foundation

I built the dashboard and scheduling grid; a teammate built the nurse app. Core loop worked, but the mental model was wrong — managers treated scheduling as a task, not a strategy. That insight reshaped my dashboard in v2.1.

Dashboard Schedule Nurse Mobile
Branding Q3 2025

Visual identity

I led branding end-to-end. Explored many logo directions, landed on a purple-dominant palette with a bar-chart icon. Built the design system all three designers used.

Logo Color Typography Components
V 2.1 Oct 2025

Expanded scope

I redesigned the dashboard around action items. A teammate built the Shift Marketplace flows against the system model I defined. Templates, admin, and the request system all came together in this round. Weekly crits kept surfaces aligned.

Dashboard v2 Marketplace Templates Admin
V 2.2 Nov 2025

Refinement + handoff

All three designers converged. I led the consistency pass — ensuring admin, requests, and nurse app followed the patterns from the manager core. Comprehensive dev handoff across every surface.

Edge Cases Consistency Dev Handoff
5.0 / Impact

What we shipped

Three designers, seven months, one cohesive product. I owned the manager core and the system architecture everyone designed against.

Web + iOS
Full platform redesign
Manager dashboard, nurse mobile, manager mobile companion
4 versions
Iterated from v2.0 to v2.2
Each version validated or overturned assumptions
Winner — User Experience
Health/Wellness UX category, Desktop Software discipline
6.0 / Reflection

What I'll carry forward

Systems thinking scales a small team

Three designers covered a massive surface because the architecture was shared. User flows, component patterns, and naming conventions upfront meant everyone could work independently while staying cohesive.

Map flows before screens

FigJam caught more problems than any wireframe review. Understanding the system before designing the screens made every iteration faster.

Two views beat one flexible view

The schedule grid worked once we stopped trying to make one layout answer every question. "By area" and "by staff" each did one job well — clearer than a single view with ten filters.

Redesign > greenfield

Users had muscle memory. Every improvement had to justify the disruption — especially where getting it wrong means an understaffed ward.

← Back to home