Live · In active use

ShiftFlow PRO

An AI-assisted scheduling tool for unionized, hourly workforces: retail, hospitality and healthcare support. It turns hours of manual spreadsheet work into a compliant, budget-aware roster for the pay period in minutes.

My role
Requirements → build
Status
v2.5.0 · Live
Stack
Client-side JS + LLM APIs
AI providers
Gemini · Claude
The 30-second version

Live at v2.5 and in active use. Rostering that took hours of spreadsheet work every pay period is now a generated draft the manager edits. Union rules and hour guarantees run as deterministic code, so the manager reviews a schedule that already complies.

ShiftFlow PRO interface, Employees and Roles screen, shown with illustrative data

The problem

A schedule is a constraint-satisfaction problem, done by hand

Every pay period, a manager rebuilds the roster from scratch in a spreadsheet, reconciling contractual hour guarantees, shifting statutory-holiday hours, labor budgets, and role coverage all at once, entirely from memory and habit.

  • Guaranteed weekly hours differ by employment type, and each type has its own band.
  • Statutory holidays shift opening hours and require auto-populated STAT shift codes.
  • Coverage rules keep conflicting employees apart and guarantee critical roles (openers, key holders) are always staffed.
  • A missed hours guarantee is a contract breach, so the cost of a mistake is real, not cosmetic.

Discovery

Who the schedule actually serves

SM

Scheduling Manager · Primary

Needs a compliant draft fast, a quick replacement during call-ins, and confidence that guarantees and budgets are met without doing the math themselves.

Pain: contract breaches from under-scheduling, budget overruns, split-shift math
EM

Employee · Indirect

Needs consistent scheduling patterns, fast approval on time-off, and confidence their availability window is actually respected.

Pain: inconsistent shifts, slow time-off turnaround

Backlog

User stories that shaped the build

US-01 As a scheduling manager, I want guaranteed weekly hours enforced automatically so I never breach a contract through under-scheduling. Must
US-02 As a scheduling manager, I want an AI-generated draft schedule from my constraints so I don't build the roster by hand every pay period. Must
US-03 As a scheduling manager, I want statutory holidays to auto-populate STAT shifts and adjusted hours so holiday scheduling isn't a manual exception. Must
US-04 As a scheduling manager, I want a one-click coverage finder when someone calls in sick so I can fill the shift without scanning the roster by hand. Should
US-05 As a scheduling manager, I want conflicting breaks flagged automatically so two people in the same role aren't both out at once. Should
US-06 As an employee, I want my availability and time-off requests respected in the schedule so I'm never booked when I can't work. Must
US-07 As a scheduling manager, I want to upload past schedules so the AI learns our real operational patterns over time. Could

Requirements

Spec'd as testable acceptance criteria

RequirementPriority
Enforce configurable guaranteed-hour bands per employment type on every generated draftMust
Force structured JSON output (schedule + reasoning) from every supported LLM providerMust
Auto-populate STAT shift codes and Sunday-style hours on designated holidaysMust
Run break generation client-side, deterministically, never delegated to the LLMMust
Coverage finder excludes candidates already scheduled, unavailable, or over their weekly hour capShould
All API keys and roster data stay in client-side storage: no backend, no server-held PIIShould
Parse historical spreadsheets client-side to extract location-specific shift trendsCould

My role

From the manager's actual workflow to a shipped tool

I sat with the scheduling process directly, translated every contractual and operational rule into an explicit constraint set, and specified how an LLM could generate a compliant draft a manager could trust. I then built the application end to end: the rules engine, the AI integration layer (designed to work across multiple model providers), and the editing surface managers actually use every pay period.

What I built

A rules engine wrapped around three AI providers

Multi-provider AI generator

Direct client-to-API calls, designed to work across Gemini, Claude, and GPT models. Every response is forced into a structured JSON schema: a shift-code grid plus a plain-language rationale for every decision.

Guaranteed-hours rules engine

Enforces per-employment-type hour bands, statutory-holiday shift codes, and role coverage before a draft ever reaches the manager.

Break planner & conflict checker

Break generation runs client-side rather than through the LLM: deterministic, and immune to model drift. Flags overlapping breaks for employees sharing a role.

Call-in coverage finder

One click scans the roster for a valid replacement, respecting availability, hour caps, and time-off, then logs the absence automatically.

Under the hood

The schedule is generated, not typed

Compiled constraints (availability, holidays, budgets, roles) go to the model as a single context. It returns a shift-code grid plus its reasoning, which the manager reviews inline before publishing.

// forced structured output{
  "schedule": [{ "empId": "E07", "days": ["M","M","O","C","OFF","OFF","P"] }],
  "reasoning": "Kept both key holders off Sat together per coverage rule; E07 held at the full-time guarantee…"
}

Outcome

Compliance checks moved from memory into code

ShiftFlow v2.5 is in active use. Every draft roster is checked against guaranteed-hour bands, labour budget, statutory holidays and coverage rules before a manager sees it, so the manager reviews a schedule that already complies. Break planning and sick-call coverage run as client-side heuristics, so the tool keeps working if an AI provider fails. Roster data and API keys stay in the browser. There is no backend and no server-held personal information.

v2.5Live and in active use
4Rule families checked before a manager sees a draft
0Servers holding roster data

Roadmap

What ships next

v2.6.0

Multi-location switching + a shared employee pool to borrow staff across nearby locations.

v2.7.0

SMS/email schedule publishing plus an employee portal for manager-approved shift trades.

v3.0.0

POS-driven traffic forecasting and direct payroll export (ADP, Ceridian).

More case studies

Want a discovery sprint or a prototype like this one for your product? Book a call.