Kind-of-Lost Kind-of-Lost · OR Tools · Staff Scheduler · Support

Staff Scheduling Optimizer

Supply-to-demand scheduling. Edit the data below (auto-saved in this browser), or import/export Excel — then Solve.
Get data in: Get data out: Download sample (.xlsx)
The tables below ARE your data. Type in them directly, paint the grids, import a workbook, or start from a sample — Solve always runs on what you see here. Your data auto-saves in this browser and will be here when you come back. Solved results are NOT saved (and are not part of the data export) — after solving, use Download results or just re-solve.

Demands

penalty = cost per uncovered unit per slot (higher = more important). concurrent = a person already assigned elsewhere can also cover this (presence-style).

People

One row per person: cost/hr (lower = assigned first) and their work-rule limits.

Skills

Which demands each person can serve, and at what rate (units per slot). A bilingual person gets two rows here — but only one row in People.

Schedules grid — paint with:

Click or drag to paint cells. default schedule: numbers are importance weights (higher = more important). Demand grids: required units per slot. Supply grids: availability (a) or fixed (f).
Bulk fill / paste from Excel
Days from to value
Or paste a range copied from Excel (first column = times like 08:00, header row = day names):

Parameters

What is this staff scheduling optimizer?

This is a free staff scheduling optimizer online — no signup, no trial, no “book a demo.” Instead of dragging shifts around a template until the week looks covered, it treats scheduling as a mixed-integer linear program (built with PuLP and the HiGHS solver) and finds the lowest-cost schedule that covers your demand while respecting each person’s availability, skills, breaks, and minimum / maximum hours. I wrote about how it grew from one client’s rules into a general scheduler for any team.

How it works

  1. Load one of the built-in samples — call center, healthcare clinic, fast food, hotel, retail, or warehouse — or type your own demand and availability into the grids (auto-saved in your browser).
  2. Set the rules: shift lengths, breaks, and per-person hour and day limits.
  3. Click Solve. The optimizer weighs labor cost against coverage-shortage penalties and returns the best schedule it can prove.
  4. Review coverage, hand-edit any cell to see the cost impact, and export the result to Excel.

A worked example

The call-center sample schedules 12 agents across four demand streams — English phone, Spanish phone, chat, and an always-present supervisor — in half-hour slots from 7:00 to 21:00, Monday through Saturday. Each agent has different availability and skills (only three agents handle Spanish, only two can supervise). Covering every stream at minimum cost by hand is genuinely hard; the solver does it in seconds and tells you exactly where coverage falls short if demand is impossible to meet.

Common questions

Is this scheduling tool really free? Yes. It runs a real optimization solver on every click of Solve, and your data lives in your browser plus the one request that solves it — there is no account and nothing stored server-side.

Can I keep working in Excel? Yes — import your workbook to fill the form, and export any solved schedule back to Excel. The sample download shows the exact sheet format.

How is this different from a scheduling template? A template records the schedule you invent; this tool invents the schedule. If you are curious why even a small scheduling model can be computationally nasty, see why a tiny scheduling MILP took minutes (CBC vs HiGHS).