There are a few avenues by which "extra" volunteers can enter the system:
- Concurrent use. Example: at 12 pm, Joe finds an opportunity he wants to sign up for and starts filling out the form. It's the last vacancy, but it takes him 5 minutes to complete it. Jane finds the same opportunity at 12:02 and completes the form in 2 minutes.
- The "additional volunteers" feature. For most opportunities, in addition to signing yourself up, you can register friends, colleagues, etc. Example: Dee finds an opportunity with two vacancies and begins registering. When she fills out the form she registers herself and two friends, putting the opportunity at plus-one capacity.
- Sharing links directly to the signup page, bypassing the "shopping cart." The way the system currently works is that once the "number of volunteers needed" configured for a volunteer opportunity is reached, the volunteer opportunity is removed from public listings. However, the sign up form has no intelligence about this.
Concurrent use (Avenue #1) is tricky to address. As part of the form submission handling, we can do a last-second check before saving Joe's information and display a "Sorry, someone else claimed this before you" message, but that seems like a subpar user experience. As long as the chance of overbooking is low and the occurrences infrequent, such overbookings are tolerable and can be dealt with on a case by case basis. This avenue will not be addressed at this time.
For Avenue #2, we can limit the number of additional volunteers that the user can register based on the number of vacancies. In Dee's case, when she types a 2 in the "Number of additional volunteers" field, let's:
- change her entry to a 1 (i.e., the max that can be registered in addition to herself, based on the number of signups at the time of page load)
- display a message, "This opportunity can accommodate only 1 more volunteer."
- provide three buttons to choose from:
- Continue with 1 volunteer
- Search for other opportunities in this project
- Search all volunteer projects
Avenue #3 can be addressed by checking how much space is left when the user pulls up the page and displaying a message rather than a signup form if it's full.