ShiftFlow PRO is, by most descriptions, an AI product. It generates two-week retail rosters with an LLM at its core, designed to work across multiple providers. AI is in the pitch, the architecture, and the name of half the features. So the design decision people find most surprising is this: the break planner — the feature that decides when every employee steps away from the floor — contains no AI at all. It's deterministic, client-side code. On purpose. Forever.
The stakes hiding in a fifteen-minute break
A retail break schedule looks trivial until you read a collective agreement. Guaranteed hours differ by employment type. Two employees covering the same role can't be gone at once. An opening manager and a morning auditor have to be on the floor at specific times. Get it wrong and the cost isn't a UX bug — it's a union grievance, with real money and real trust attached.
During discovery, I sat with the store manager who rebuilt this roster from memory every two weeks. The thing she feared wasn't inefficiency — she'd survived inefficiency for years. It was the silent mistake: the schedule that looks fine, gets published, and turns out to have under-scheduled someone with a 40-hour guarantee.
Where the line actually sits
Generating a draft schedule is a perfect LLM task. The search space is huge, the constraints are many, and a human reviews every draft before publishing — the failure mode is "manager edits a bad suggestion," which costs minutes. So ShiftFlow happily sends roster generation to Gemini or Claude, forces the output into a strict JSON schema, and asks the model to explain its reasoning next to every decision.
Compliance is the opposite shape of problem. The rules are few, fully known, and absolute. There is no creativity to add — only correctness to lose. An LLM doing this work is a probabilistic system performing arithmetic with a liability attached, and its failure mode is invisible until someone files a grievance. So the entire compliance layer — break allocation, coverage-overlap checks, and the guaranteed-hours math — runs as plain deterministic code: same inputs, same output, every single time, immune to model drift, provider outages, and prompt regressions.
The rule, portable
Every product I've shipped since has the same split somewhere. In Scrutas, the audit modules that carry legal weight run deterministic checks; AI writes the explanations. The pattern generalizes: AI generates, code guarantees. Use the model where a wrong answer is cheap and a human is in the loop; use boring code where a wrong answer is expensive and nobody's watching.
The uncomfortable part is that this decision made the product demo worse. "Everything is AI" is a better pitch than "AI where appropriate." But the store manager doesn't run demos. She publishes schedules — and she's had zero guarantee-related grievances since launch. I'll take that trade every time.