Goodwill Schedule Manager

Github Repo

Live Site

Problem:

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:

  1. 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:

    input

  2. 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.

  3. Create Output

    The new schedule is placed onto the Excel template used as an input. This includes off days and hours worked.

  4. 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:

    output