Monday, February 6, 2012

Automatic volunteer assignment based on user preferences

Volunteer management has always been a challenging task to run a TSA
swim team.  Although first come first served model has been used by
some teams, some other teams prefer to assign volunteer jobs manually
by an administrator.  This is commonly done by asking families to
select the types of jobs they want to do and which meets they are
available to volunteer (on paper or online).  I don't have the
complete list of reasons to do this.  Partly it could be that a family
may pick a task and didn't realize that the job needs prior training,
or the "easier" jobs are quickly taken, leaving the rest of families
with jobs they don't know how to do.  Whatever the reasons are,
manually allocating jobs based on user's preference on meets and job
types is a very tedious task (takes hours or even days) and the admin
can easily make mistakes such as assigning a family to a work in a
meet they didn't select (on vacation) so they can't do it.

I recently implemented a feature (built into the TSA Swim Team
Manager) that allows such assignment to be done automatically based on
user preference selections.

Some highlights of the feature:

1. set the priority of a job.
For example, a family selected Timer, Starter and Runner as preferred
job types.  Not many people have the training to work as a starter so
we can raise the priority of the Starter job.  The system will assign
the family to do starter and leave the lower priority tasks to other
families.  Task with a priority of 0 means no auto assignment will
happen, e.g. a job named as "Substitute" or "Any position".  Admin can
also set priority to 0 for jobs they'd do manually later (i.e. they
know who should do such jobs).

2. find troubled spots and assign such spots first.
For example, only 4 families selected to volunteer as Timer for 6/24's
meet and we need 6 Timers, we will put these 4 families as Timers
instead of any other preferred tasks they selected that have more
available families.

3. honor family job preference (priority).
If both family A and B selected to work as Runner, but only 1 runner
is needed and family A selected the task as their first choice and
family B as second, family A will be assigned this task.

4. balanced work load.
Each family will be assigned at most the number of tasks defined in
team's Season setup.

5. rerun.
Assigned positions will NOT be overwritten.  When situation changes,
this routine can be rerun to pick up the (preference or job) changes.

6. manual overwrite.
All automatically assigned positions can be manually overwritten and
stay that way.  Auto assignment only happens to spots that are
available (unassigned).

No family will be assigned a job or work in a meet that they didn't
select.  To make this function work better, please ask families to be
more flexible (select more job types and meets) to give the system
more options.

I tested this routine against one of the teams' 2011 user preference
data and 90+% of the assignments can be made in a matter of seconds.
The remaining unassigned positions/families are mostly due to their
limited preferences (e.g. they only chose to work in 3 meets as 9-10
boy pusher but these positions are already filled).

This feature should save the volunteer admin a lot of time and reduce
the number of wrong assignments due to human errors.


No comments:

Post a Comment