In the previous article I argued that scheduling gets easy once you split it into three parts. This time: what actually happens inside the automatic matching, with diagrams.
No heavy algorithm theory. All you really need to know is what it optimizes for, and in what order.
🔧 Note
Shiftaru is in active development. Right now you can try the free practice mode (sample data, no signup).
👉 https://shiftaru.com
The overall flow
Matching in Shiftaru is three steps.
1. Collect 2. Match 3. Adjust
requested date/time apply the constraints review on screen and
area, service, and assign fix only what bothers you
availability
↓ ↓ ↓
Google Forms greedy algorithm tentative → confirmed
You handle step 1 (prep) and step 3 (final call). The machine takes step 2 — the part that actually hurts.
Inside step 2: what gets priority
"Automatic matching" can sound like it's just filling slots at random. It isn't. It searches for combinations that satisfy the constraints, in this priority order:
- Area fit (highest weight)
Staff who cover the customer's requested area win. Closest first. - Order of preference
First choice beats second beats third. Whichever can actually be honored. - Workload balance
Spread the work so nobody gets buried — staff with lighter loads get preference. (You can flip this to "concentrate on the same people" if that's how you run.)
On top of that, there are hard constraints — break one and the assignment simply isn't made:
- Does the person hold the required certification (home care, nursing, etc.)?
- Can they handle this subject or level (tutoring, lessons)?
- Are they already booked at that time? Is there room for travel and breaks?
- Would this push them past their daily or weekly cap?
Anything touching safety or feasibility (certifications, conflicts, caps) is never violated. Anything that's a preference (proximity, order of choice) gets scored and compared. That two-tier approach is what produces schedules you can actually run.

The greedy algorithm, in one line
Shiftaru uses a greedy algorithm. It sounds technical; it isn't.
"Assign the best available match, one at a time, in order."
For each slot it asks: among everyone who satisfies the hard constraints, who's the best fit? It locks that in and moves to the next slot. It's the same thing you do by hand — just fast, and without missing anyone.

Even at a few hundred people, results come back in seconds. So "someone's plans changed, rebuild everything" takes a moment, not an evening.
Step 3: the machine doesn't get the last word
The important part: an automatic match is a draft.
Real operations carry context the data can't hold — "she can't miss this day," "I want this pairing this time." So Shiftaru gives you:
- A reason for every unmatched request (no shift on the requested day / outside the service area / missing certification)
- Near-miss candidates — the people who almost fit — with one-click manual assignment
- Results that stay tentative until you confirm them
The machine clears 90% of the work. You decide the last 10%. That division of labor is the whole reason it holds up in practice.
Wrapping up
- Three steps: collect → match automatically → adjust by hand
- Matching = area → preference order → workload balance, plus hard constraints (certifications, conflicts, caps)
- The method is a greedy algorithm: best match first, one slot at a time. Seconds, even at scale.
- Automation produces the draft. You make the final call.
🚀 Try it now (in development, free practice mode)
Everything described above runs in the browser with sample data. No install, no signup.
👉 https://shiftaru.com
Note: while it's in development, some features (importing your real data, exporting results) unlock with a license. Start with practice mode.
If you're now wondering "OK — but where does all that customer data get stored?", good instinct. Shiftaru never sends your customers' or staff's personal information to a cloud server. Here's why, and how that works.
- ▶ https://shiftaru.com — free practice mode, no signup
- ▶ Read more: Shiftaru Blog