<aside> 🔒
Recreated for this portfolio. This rebuilds the kind of briefing I brought to Tandem Care's leadership. The company's data is confidential, so the region, caregivers, hours and costs are illustrative, built to show how the model worked. The decision and its outcome are real.
</aside>
Move to split operating hours: 8 a.m. to 2 p.m. and 4 to 8 p.m. That lets us extend service to 8 p.m. for the bedtime visits families are asking for, without paying for a 12-hour day. In a modeled region of 8 caregivers (illustrative figures), split hours cut paid downtime by about 88% compared with a straight 8 a.m. to 8 p.m. day, and nearly eliminate daily overtime, with no change in client visit hours delivered.
Families were asking for bedtime visits, so we wanted to extend the service day from its 6 p.m. close to 8 p.m. But caregivers clock in at their first visit and out at their last. Every gap between visits is paid time with no client in front of them. Stretch the day to 8 p.m. and a caregiver with an 8 a.m. first visit and an 8 p.m. last one is on the clock for 12 hours, with overtime built in, even if they only worked eight hours of visits.
We were paying for the shape of the schedule, not the care.
| Time block | Visits starting (illustrative, one week) |
|---|---|
| 8 to 10 a.m. | 22 |
| 10 a.m. to 12 p.m. | 26 |
| 12 to 2 p.m. | 20 |
| 2 to 4 p.m. | 6 |
| 4 to 6 p.m. | 18 |
| 6 to 8 p.m. | 14 |
xychart-beta
title "Visits starting, by time block (illustrative, one week)"
x-axis ["8-10a", "10a-12p", "12-2p", "2-4p", "4-6p", "6-8p"]
y-axis "Visits" 0 --> 30
bar [22, 26, 20, 6, 18, 14]
Demand drops sharply between 2 and 4 p.m. That dip is where most paid downtime was coming from: caregivers waiting between a lunchtime visit and an evening one.
Two example caregivers from the modeled region, a straight 8 a.m. to 8 p.m. day vs split hours. Same visit hours, same care delivered. Some visit start times shift into the new blocks, and the paid gaps shrink.
gantt
dateFormat HH:mm
axisFormat %-I %p
todayMarker off
section Straight 8 to 8 day
Visit :done, c1, 08:00, 2h
Paid downtime :crit, c2, 10:00, 30m
Visit :done, c3, 10:30, 90m
Paid downtime :crit, c4, 12:00, 1h
Visit :done, c5, 13:00, 2h
Paid downtime :crit, c6, 15:00, 2h
Visit :done, c7, 17:00, 1h
Visit :done, c8, 18:00, 2h
section Split hours
Visit :done, n1, 08:00, 2h
Visit :done, n2, 10:00, 90m
Paid downtime :crit, n3, 11:30, 30m
Visit :done, n4, 12:00, 2h
Unpaid break :n5, 14:00, 2h
Visit :done, n6, 16:00, 1h
Visit :done, n7, 17:00, 2h
Straight 8-to-8 day: paid 12 hours for 8.5 hours of visits (3.5 hours of paid downtime, 4 hours over 8). Split hours: paid 9 hours for the same 8.5 hours of visits (30 minutes of paid downtime, 1 hour over 8).
gantt
dateFormat HH:mm
axisFormat %-I %p
todayMarker off
section Straight 8 to 8 day
Visit :done, a1, 08:00, 2h
Paid downtime :crit, a2, 10:00, 1h
Visit :done, a3, 11:00, 90m
Paid downtime :crit, a4, 12:30, 2h
Visit :done, a5, 14:30, 1h
Visit :done, a6, 15:30, 90m
Visit :done, a7, 17:00, 1h
section Split hours
Visit :done, b1, 08:00, 2h
Paid downtime :crit, b2, 10:00, 30m
Visit :done, b3, 10:30, 90m
Visit :done, b4, 12:00, 1h
Unpaid break :b5, 13:00, 3h
Visit :done, b6, 16:00, 90m
Visit :done, b7, 17:30, 1h