Skip to main content

Workshift scheduler for a helpline

Project description

Workshift scheduler for a helpline

Code written in Python finds the best possible schedule for volunteers while incorporating constrains and special requirements using CP-SAT Solver (Constraint Programming - boolean SATisfiability problem Solver).

Java version is in development.

The problem

Arranging volunteers for a helpline service for the period of one month.

There are three types of work that could be done on the same day:

  • Phone shift: Every day.
  • Chat shift: Mondays and Wednesdays.
  • Observer shift: Any day.


Properties of each volunteer:

  • Available days.
  • Function: doing phone, chat, both or observation for training purposes.
  • Maximum amount of weekend shifts.
  • Whether their shifts have to be on separate weeks.
  • Whether they welcome observers.
  • Whether they want to work alone.
  • Whether they cannot yet work alone.
  • List of people they do not want to work with.

Each volunteer has to have 4 days between their shifts.


  1. Have minimum one volunteer for each day.
  2. Fill chat shifts.
  3. Have a second volunteer even on phone days.
  4. Employ observers on days when there is only phone shift.


Maximize filled shifts.


Requires 64-bit Python 3.7

pip3 install helpline-scheduler


  1. Select your language in EN/HU/CN

    Alternatively you can create your XX language extension by creating the corresponding data_XX.csv and files.

  2. Export corresponding data/data_XX.csv file into a spreadsheet, fill in your data, then export back into this file.

  3. Execute the program from its directory:



  1. Prints results into the terminal and saves it into schedule_YYYY_MM____YYYYMMDD_hhmm.txt.
  2. Saves results into schedule_YYYY_MM____YYYYMMDD_hhmm.csv which can be conveniently imported into a spreadsheet.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for helpline-scheduler, version 2019.4.8.post6
Filename, size File type Python version Upload date Hashes
Filename, size helpline_scheduler-2019.4.8.post6-py3-none-any.whl (28.1 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size helpline-scheduler-2019.4.8.post6.tar.gz (12.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page