Every other scheduling tool on the market gives you a blank grid and a drag-and-drop interface. They call it auto-scheduling. What they mean is that the software lets you build a schedule faster than a spreadsheet. ShiftWiz does something categorically different. It actually generates the schedule. Here is what that process looks like from the inside.
The problem nobody talks about: scheduling is NP-hard
Scheduling is a combinatorial optimization problem. With 12 employees and 20 open shifts, the number of possible valid assignments runs into the billions. Add availability windows, minimum rest periods, certification requirements, hour targets, fairness constraints, and labor budget limits, and you have a solution space so large that exhaustive search is not possible. You cannot try every option. You have to be smart about how you search.
A human manager solving this problem manually is not solving it. They are approximating it. They are making a series of reasonable-looking local decisions, checking for the most obvious violations, and publishing what they have. The result is a schedule that works but leaves significant quality on the table. The fairness is approximate. The coverage is approximate. The efficiency is approximate.
ShiftWiz does not approximate. It runs a real optimization process with a mathematically principled approach to finding high-quality solutions in a very large search space.
Phase 1: Constraint collection
Before the engine places a single shift, it loads everything it knows. Employee availability for every day and time window. Approved and pending time-off requests. Certification and role qualifications. Individual hour targets and maximums. The labor budget ceiling. Six weeks of shift history for fairness tracking. Swap history for revealed preferences. Demand forecasts if connected sales data is available. Minor status flags and applicable hour caps.
This is not a checklist the manager runs through. This is structured data that the engine holds simultaneously as it evaluates every assignment decision. No constraint gets forgotten because someone was tired on Sunday night.
Phase 2: Most-constrained-first ordering
The engine does not start with the easiest shifts to fill. It starts with the hardest. Shifts that require rare certifications, shifts in high-demand windows with few available employees, shifts that nobody has marked as available for. Solving the constrained shifts first prevents the engine from painting itself into a corner where it has handled all the easy assignments and has nobody left who can legally or logistically cover the difficult ones.
This ordering heuristic is borrowed from constraint satisfaction research and makes a substantial difference in how often the engine finds a complete, valid solution on the first pass.
Phase 3: Forward-checking backtracking
As the engine assigns each shift, it runs a forward check: given this assignment, does a valid assignment still exist for every remaining unassigned shift? If the answer is no, it backtracks immediately and tries a different assignment instead of proceeding further down a dead-end path.
This is what separates a scheduling engine from a scheduling assistant. A scheduling assistant fills in what looks correct in the moment. A scheduling engine verifies that the current decision does not destroy future options before it commits to it. The difference shows up in how often the final schedule is actually complete versus how often it leaves gaps that need manual cleanup.
Phase 4: Multi-seed generation
The engine does not run once. It runs from multiple random starting points simultaneously. Each starting point is called a seed. Different seeds explore different regions of the solution space. Some will dead-end. Some will find valid complete schedules quickly. The engine collects the best valid schedule from each seed and carries them forward to the next phase.
Why does this matter? Because scheduling is a landscape with many local optima. A single run from a single starting point will reliably find a local optimum, a schedule that cannot be improved by any small change. But different starting points may find different local optima. Running from multiple seeds dramatically improves the chances of finding one of the better local optima rather than getting stuck in a mediocre one.
Phase 5: Simulated annealing
Simulated annealing is a classic algorithm for escaping local optima. The idea comes from metallurgy: when metal cools slowly, atoms have time to find lower-energy configurations than they would if cooled quickly. Applied to scheduling, the engine starts with a high "temperature" that allows it to accept slightly worse solutions as it searches. This lets it escape local optima that trap greedy algorithms. As the temperature decreases over iterations, the engine becomes increasingly selective, zeroing in on the best solution found so far.
ShiftWiz runs thousands of annealing iterations per schedule generation. It also evaluates chain swaps during annealing, where swapping two or more employees between shifts simultaneously produces a better result than any single swap would. These combinations are hard for a human to see and easy for an algorithm to evaluate at scale.
Phase 6: 8-dimension scoring
Every candidate schedule gets scored across eight dimensions simultaneously: coverage completeness, employee availability respect, hour target accuracy, labor budget compliance, weekend fairness, rest period compliance, certification coverage, and demand-adjusted staffing. The score is not an average. Each dimension has a weighted contribution, and the engine optimizes the composite score rather than any single factor in isolation.
A schedule that is great on coverage but terrible on fairness scores lower than a schedule that is very good on both. The engine produces results that are balanced across all eight dimensions because that is what the scoring function actually rewards.
What this produces
A published-ready schedule, generated in seconds, that respects every availability constraint, honors pending time off, satisfies certification requirements, stays within labor budget, distributes weekend and closing shifts equitably across the team's recent history, enforces rest periods between shifts, and calibrates staffing to expected business volume.
That is not what you get from a drag-and-drop grid. That is what you get from a real scheduling engine.
ShiftWiz exposes the same engine as a standalone API at /api/engine/v1/generate. If you are already using a platform like 7shifts or Homebase for employee management and just want the scheduling brain, you can call the engine directly with JSON and get a complete schedule back. No UI required.
Why I built it this way
I am a software developer. When I watched my fiancée spend her Sunday afternoons manually rebuilding the schedule for her coffee shop on Sling, the thing that struck me was not that she was slow or doing it wrong. She was doing it correctly given the tools available to her. The tools were wrong. The problem she was solving is fundamentally a computer science problem, and she was solving it with a drag-and-drop grid.
I built ShiftWiz because I knew the right answer to this problem was an actual engine, not a better spreadsheet. Everything in the architecture follows from that decision.