Auto-matching is fast — but every real operation has situations a machine can't be trusted to decide on its own.
"This client always goes to our senior stylist, Anna." "This staffer and this client don't get along — keep them apart." "Nobody's on the floor that day; we've got training." Shiftaru lets you set exactly these situations as constraints. You keep the speed of automation and the judgment of a human — both working together.
🎉 Now live
Shiftaru is officially live. The free practice mode (sample data) needs no signup.
👉 https://shiftaru.com
Three kinds of constraint
From the Constraints panel on the schedule-building screen, you can set three kinds.

1. Must-assign (this person, always)
Pin "this client (or job) must be handled by this specific staff member." A salon's requested stylist, a home-care agency's fixed caregiver, a relationship that's simply already settled — matching puts this above every other condition and always builds the booking with that pairing.
2. Avoid (never pair these)
Set "never schedule this client with this staff member." Past friction, a personality clash — the kind of thing that's hard to put into words but you still want kept apart — is reliably avoided.
3. Date/time block (keep this time open)
Set "no one is scheduled on this day, or during this window." Training, all-hands meetings, equipment maintenance, a temporary closure — any time you don't want bookings can be sealed off in advance. A block that covers a whole shift removes that shift; a block over only part of it is avoided when placing bookings.
How must-assign and avoid change the matching
Constraints act as a filter that runs before the matching.
- A must-assign client gets that staff member first (area and other conditions are still weighed, to avoid contradictions)
- An avoid pairing is removed from the candidate pool
- Every other client is matched automatically, the usual way
In other words: fix what's already decided, and let the machine handle only what isn't. Not fully automatic, not fully by hand — the right split in between.
Where it's useful
- Salons — mark requested-stylist clients as must-assign → requests are honored while walk-ins spread automatically
- Home care — mark clients with a fixed caregiver as must-assign → the relationship holds while the rest is optimized
- Any business — put training days and inventory days on a date/time block → the schedule avoids them automatically
Summary
- Constraints come in three kinds: 1. must-assign, 2. avoid, 3. date/time block
- You get the right split: fix what's decided, automate the rest
- Requested stylists, fixed caregivers, personality fits, training days — the things you can't leave to a machine get built into the system
Keep the speed of auto-matching while still protecting what the floor actually needs. That bridge is what constraints are for.
- ▶ https://shiftaru.com — free practice mode, no signup
- ▶ Read more: Shiftaru Blog