Goodwill Schedule Manager
15 Oct 2016Problem:
Creating a Goodwill Schedule requires time that is not available. Therefore handmade schedules are unoptimized and error-prone.
Solution:
Write a fast, portable program that creates optimized schedules while requiring minimal technical know-how from the user.
Tools Used:
- Python
- Flask
- Bootstrap
- DigitalOcean
- OpenPyxl
How I Did It:
Take Input
Goodwill Managers are not computer whizzes but know how to use Excel. GSM accepts an Excel Sheet as an input. Via openpyxl, GSM is able to read the employee names, positions and availability from excel files (and .xlsx). A standard input may look something like this:
Create the Schedule
Goodwill has a strict scheduling system. Store hours Monday through Saturday are 9am - 9pm and 10am - 8pm on Sundays. There is no overtime. Full-time workers only work 8 hour shifts, 40 hours a week. Part time workers either work 8 hour shifts or 4 hour shifts, and have a max of 16 - 24 hours a week. There are five mandatory shifts that each day must have.
For each of the five essential shifts, the employee data is queried for an employee most capable and available. This process is repeated for each day in the week. Afterwards, if there are employees that have not hit their hour minimums they are scheduled for supporting shifts.
Create Output
The new schedule is placed onto the Excel template used as an input. This includes off days and hours worked.
Make the program portable
Instead of having users install the program I built a web interface. Using Flask and Bootstrap I stitched together a basic design that accepts the needed inputs. Hosting is done via DigitalOcean. Using the standard input from above the user may wind up with this: