02 — Clinician mobile app · 2025 – 2026

LocumTenens.com

Canonical UX reference

Designed and built the canonical UX reference for LocumTenens.com's clinician mobile app — a fully runnable, data-driven React prototype that defines what the production React Native app should build.

Product designer + design engineer — design, prototype, and design-system stewardship. Consumed two systems one-way: Crossroads (parent) and Crossroads Mobile.
Home — alerts + tap-to-fix routing
Home — alerts + tap-to-fix routing
The problem

Clinicians are mobile, time-pressed, and paid on strict payroll cycles. Missed timesheets, rejected entries, and lapsed credentials directly threaten pay and the ability to work. The app had to surface what's urgent, route the clinician straight to the fix, and reflect real backend data and states — not idealized happy paths.

What I designed & built

Home dashboard — a triage surface

Critical alerts render as tap-to-fix rows that route straight to the resolution screen — timesheet, expense, or credentialing. A “>5 alerts” state collapses the stack into one summary row with a grouped breakdown. “Your assignments” shows live status badges and gates action chips — you can't log time before an assignment starts.

Home dashboard
Home dashboard
Assignments · live status
Assignments · live status

A tiered notification system

Three urgency tiers — Act-now, This week, FYI — mapped to iOS interruption levels, with notification-center states (default, empty, resolved, overdue), lock-screen push anatomy, and in-app foreground patterns. The copy pattern pairs a type-relevant title with the specifics: assignment · date · amount.

3-tier urgency, act-now copy
3-tier urgency, act-now copy

Multi-week timesheet flows

Entry, breaks, callbacks, mileage, and review-and-submit — built against real production status enums and validation rules. “Add time” resolves a clinician's outstanding weeks: zero routes to the Time tab, one goes straight into that week, more than one opens a week-selection sheet.

Weekly timesheet hub / status
Weekly timesheet hub / status

Expenses + design-system stewardship

Receipt camera capture → OCR review → submit, with real editable and deletable status logic. Alongside it I ran a full primitive-adoption audit — migrating hand-rolled inline components onto canonical design-system classes, establishing a tag-driven typography system, and authoring cleanup docs for the design-system owners.

Expenses · submit entry point
Expenses · submit entry point
Jobs · recommendation feed
Jobs · recommendation feed
Craft highlights
/

Data-driven from the real domain model — statuses, validation rules, and entity shapes extracted from the production codebase, so the prototype reflects real data rather than invented values.

/

100% token-driven: zero hardcoded colors, font-weights, or fractional pixels — every value maps to a design-system token.

/

One-way design-system discipline — product-local needs stayed namespaced; deviations were surfaced to DS owners, never smuggled into DS files.

/

Realistic states, not just happy paths: empty, loading, error, offline, overdue, and backlog states are all built and toggleable.

Impact

Became the single source of truth for every screen, flow, and component the production React Native app builds against — reducing ambiguity in engineering handoff.

Drove measurable design-system consistency — inline one-off styling eliminated in favor of shared primitives across the whole app.

Surfaced and documented real product gaps (multi-week timesheet backlog, notification escalation) with proposed, buildable solutions.