Kivo Health: Reducing Manual Work by 80%

Product Designer·1.5 years, phased·6 min read

Creating visibility and cutting coordination overhead. I turned a 2,062-row spreadsheet into an action-oriented dashboard that took manual work from 15 hours a week down to 3.

Kivo Health Kit Operations Dashboard showing shipping overview and inventory tracking
80%
Manual work reduced
15 hrs/week → 3 hrs/week
43 → 3
Clicks per shipment
93% reduction
93%
Cost reduction
$78K → $5.2K annually

The Problem

Kivo Health provides telehealth pulmonary rehabilitation for COPD patients, shipping comprehensive kits containing iPads, medical devices, exercise equipment, and educational materials directly to patients' homes. Each kit contains 25+ individual components that need to be tracked and managed.

As the program scaled from 24 kits/month to 100+, the manual coordination system started breaking down. Before I designed anything, I sat down with the warehouse manager and mapped the entire kit preparation and fulfillment process end to end.

Original 2,062-row spreadsheet used to manually track kit shipments before the dashboard

The coordinator managed everything through that 2,062-row spreadsheet and manual processes across disconnected systems, spending 15+ hours a week just on data entry, copy-paste work, and tracking. I mapped every step, system touchpoint, and data flow in a big FigJam diagram. Walking through it with the team was when it really clicked how much complexity was hiding behind what sounded like a simple request: "ship a kit to a patient."

Figjam diagram mapping kit operations workflow with system connections and manual process steps

What we discovered: manual bottlenecks (kit requests via Slack, copied to a spreadsheet, manually entered into the Admin system in 31 clicks, then a warehouse shipping request created in 12 more), redundant data entry (the same patient information typed into 3+ systems), system disconnects (waiting on warehouse emails for iPad serial numbers, manually checking the UPS website, tracking inventory via periodic emails), and plain cognitive overload from mentally scanning 2,000+ spreadsheet rows to find what was urgent.

That map became the foundation for everything after. It's basically how we decided what to fix first, second, and third.

Phase 1: Visibility

Goal: replace the spreadsheet with a searchable, action-oriented dashboard

Phase 1 dashboard with three-tab architecture showing Today, Upcoming, and All views for kit tracking

Instead of one overwhelming list, I created three distinct views optimized for different needs. TODAY is action-oriented: "what needs my attention right now?" UPCOMING is a pipeline view: "what's coming in the next 1-4 weeks?" ALL is the complete archive, for historical lookup, reporting, and return tracking, with advanced filters and quick stats like "Total: 1,956 kits | 1,438 returned."

Why three tabs, not filters on one view

The coordinator's actual mental model was urgency, not status. She wasn't asking "show me kits filtered by date," she was asking "what's on fire right now versus what can wait." A single filterable table would've made her rebuild that triage every time she opened it. Splitting Today/Upcoming/All bakes the triage into the structure itself, so the urgent stuff is just where you land, not something you have to go dig out.

Phase 2: Integration

Goal: stop manually checking UPS and waiting on warehouse emails

With the foundation in place, we added integrations to pull data in automatically, starting with UPS tracking.

Before

Copy tracking number, open the UPS website, paste, check status, copy status, paste to spreadsheet. About 3 minutes per kit, times 5-10 kits a day.

After

The dashboard checks the UPS API every 4 hours automatically. Status updates appear without manual work, on a visual timeline: Shipped → In Transit → Delivered.

Phase 2 dashboard with UPS tracking integration showing live shipment status timeline

This is the one place I deliberately didn't try to automate anything. The dashboard surfaces who needs follow-up so nobody has to scan a spreadsheet to find them, but the actual outreach is still a manual call, text, or letter, because that's a judgment call, not a data problem.

Phase 3: Role-Based Views

Goal: optimize the interface for different roles and workflows

Coordinators and executives needed pretty different things from this, but I deliberately held off on splitting the views until Phases 1 and 2 were solid. The coordinator was the one drowning in manual work every day, so that's where the first two phases went. Once that foundation held up, Phase 3 was about giving each role what they actually needed: task-level operational detail for the coordinator, high-level program metrics for executives.

Coordinator view. Built for the coordinator's actual workflow: ship kits, manage inventory, respond to automated alerts. The Phase 1 "Today" tab crammed all of that into one prioritized list; this view splits it into dedicated sections instead, a quick shipping table, a tasks section for one-off and automated requests, and inventory tracking with critically-low/low/ok highlights.

Coordinator dashboard view with shipping table, task tracking, and inventory supply levels

Executive view. The coordinator needs task-level detail. Executives need the opposite: aggregated metrics and trends, without the day-to-day noise. This view leaves the operational detail out entirely and shows program health (Active Kits, Overdue Value, Return Rate, each with a color-coded trend) and impact tracking (outstanding value, expected returns, kit utilization).

Executive dashboard view showing program health metrics, active kits, return rates, and financial impact tracking

Why these three numbers

I picked Active Kits, Overdue Value, and Return Rate because they're the three an executive would actually ask about in a hallway conversation, not because they were the easiest to pull from the data. Anything more granular than that belongs on the coordinator's screen, not this one. If a metric didn't change what someone would do next, it didn't make the cut.

Impact & Outcomes

MetricBeforeAfterChange
Time per kit request2 minutes~30 sec-75%
Weekly admin time15 hours3 hours-80%
Annual labor cost~$78,000~$5,200-93%

What Actually Worked

I went in assuming the win would come from automating as much as possible. It didn't. Just making information visible turned out to be almost as valuable on its own. Before, the coordinator was mentally scanning 2,000+ spreadsheet rows to find what was actually urgent, and once that surfaced automatically, a lot of the daily stress was gone before anything had actually been automated.

The integration work is what really moved the needle, more than any individual screen I designed. Hooking into the Admin API killed the copy-paste work completely, and that one connection probably did more than a dozen UI improvements would have. Same with UPS tracking: just pulling that status in automatically saved 30 minutes a day that no interface tweak could have touched.

I also learned where to stop. I'd originally planned to automate the return follow-up emails too, but it turned out patient communication needs actual judgment: some people respond to a call, some to a text, some only to a physical letter. So the dashboard just surfaces who needs a follow-up, and the coordinator decides how. Not every problem gets better by removing the human from it.