PlanSolve is still in pre-alpha – Features may change or break. Feedback welcome!

Shift Assignment Solver

Optimize employee shift assignments with skill matching, contract compliance, and fair distribution. Perfect for healthcare, retail, manufacturing, and security scheduling.

Key Features

Skill-Based Assignment

Match employees to shifts based on required skills and qualifications

Contract Compliance

Ensure working hours and consecutive day limits are respected

Fair Distribution

Balance workload across employees and ensure fair shift distribution

Time Window Constraints

Respect shift start/end times and rest period requirements

Preference Optimization

Consider employee shift preferences when possible

Cost Optimization

Minimize total labor costs while meeting all requirements

Use Cases

Healthcare

Hospital staff scheduling with nursing skills and emergency coverage

NursesDoctorsSupport staff

Retail

Store employee scheduling with customer service skills

CashiersSales associatesManagers

Manufacturing

Production line staffing with technical skills

OperatorsTechniciansSupervisors

Security

Guard scheduling with security clearances and patrol requirements

Security guardsPatrol officersSupervisors

API Parameters

ParameterTypeDescriptionRequiredExample
employeesarrayArray of employees with their skills, availability, and contract constraintsRequired[{ "name": "Alice", "contract": "FULL_TIME", "skills": ["nursing"], "availability": ["2024-01-15"] }]
shiftsarrayArray of shifts that need to be staffed with time windows and requirementsRequired[{ "name": "morning_shift", "from": "2024-01-15T06:00:00", "to": "2024-01-15T14:00:00", "skills": ["nursing", "patient_care"], "value": 3 }]
contractsarrayContract definitions with working hour limits and constraintsRequired[{ "name": "FULL_TIME", "max": "PT40H", "min": "PT32H", "maxConsecutiveWorkDays": 5 }]
optionsobjectSolver configuration options like time limits and iterationsOptional{ "timeLimit": 300, "maxIterations": 1000 }
weightsobjectConstraint weights to customize optimization prioritiesOptional{ "requiredSkills": 1000, "workingHours": 1000, "shiftPreferences": 100 }
fairnessobjectFairness rules for shift distribution among employee groupsOptional{ "fairnessBuckets": [{ "employees": ["Alice", "Bob"], "shifts": ["night_shift"] }] }

API Endpoints

MethodEndpointDescription
POST/api/shift/solveSubmit a shift assignment optimization request
GET/api/shift/solve/{jobId}Check the status of an optimization job
GET/api/shift/solve/{jobId}/resultRetrieve the completed optimization results
GET/api/shift/solve/{jobId}/analyzeAnalyze the optimization results

Ready to Get Started?

Follow our quick start guide to create your first shift assignment optimization, or explore our SDK documentation for detailed integration examples.