Voices of Consent is a nonprofit organization whose goal is to support survivors after a traumatic event. In the aftermath of a traumatic event, Voices of Consent sends a box to a survivor who requests one.
Survivor Boxes are personalized packages put together to let survivors know they are not alone after an event, and includes resources to use as survivors begin the recovery process (including information about laws in their state, free health and counseling services in their area). The boxes are sent to survivors who request them directly, or can be picked up at hospitals or police stations.
Please check out the Voices of Consent website to learn more about this organization.
The purpose of this application is to streamline the process of coordinating many volunteers in different locations and at different points in the lifecycle of a request.
This scope of this application includes:
- requesting, designing, packaging, shipping and tracking a box
- maintaining inventory supplies
- creating and managing volunteer roles
- managing events
- Someone submits a
BoxRequestform/requesters/new- No login required
- People select abuse types (emotional, physical, sexual, all of the above) and answer other questions that cue what types of support Voices of Consent can provide
- Out of the form responses, we create the following via the
BoxRequestsTriageController:- Requester (person who requested a form)
- Associated
BoxRequest- We prepopulate tags based on
AbuseTypesand other form responses
- We prepopulate tags based on
- An email is sent to all
Volunteers(people) who havePermission(via theirUseraccount) to review box requests (BoxReviewer) - BoxReviewer Volunteers can either Claim or Decline review from the button in their email
- All requests available for review are also able to be claimed via Status button in main nav (BoxRequests index)
- After a similar Claim/Decline email related to new BoxRequests, boxes get "Designed", where a Volunteer with Permission will add
BoxItemsto aBox - The Designer will be taken to the Design page (via
BoxDesignController), where they will select items to add to this person's box from theInventory Typedropdown. - Users can also add new on-the-fly
BoxItemseven if there isn't an underlyingInventory Type
- Voices of Consent compiles resource materials specific to each person's BoxRequest data.
- This often requires referencing many websites, copy/pasting info into documents, adding some images/styling to make it prettier, and then saving the result as a PDF.
- We'd love to support/assist with that process later on, and this is the initial groundwork to add Research as a phase of Box production.
- Technically it's required for specific BoxItems (we don't need research on a "toothbrush", but we do on a "local resources packet").
- The Researcher is often a different person than the Assembler. Once the packet PDF has been uploaded to the BoxItem, the Assembler will print the item before marking it off on the checklist of included items as part of BoxAssembly (packaging).
- Once all the box is Designed, and via a similar Claim/Decline email someone will Claim the task of Packaging (assembling) the Box
- They are provided with a mobile-friendly, on-screen checklist to confirm that each
BoxItemmade it in to theBox
- Similar to the other phases, after a Volunteer completes BoxAssembly, an email is sent to Volunteers with Shipping Permission
- Volunteer Prints the mailing label and affixes it to the Box
- Volunteer ships the package, and then
marks the box as shippedby includingLocationit was shipped from (e.g. USPS, FedEx, etc), the cost of the receipt, andtracking number.
To check out where/how the lifecycle methods are implemented, visit:
aasmblocks in thebox_request.rbandbox.rbmodels- Check out how we determine things like
is_reviewed,is_shipped, etc, by looking at those instance methods inbox_rb - View
box_requests/index.html.erbfile orlocalhost:3000/box_requestsin your local browser to see a grid of box_requests and their lifecycle phases spec/models/box_spec.rbto see how we can manually walkbox_requestsalong in the process
Volunteersare people (as areRequesters).- We chose to keep
Volunteersseparate fromUsersso that the User model only deals with login info. - We chose to put
Requester(people who submitBoxRequests) data andVolunteerdata into different tables, just so we never accessRequesterdata accidentally. - The above phases are distinct so that the privacy of
Requestersis preserved. For example, the person Assembling the Box likely isn't also the person affixing the mailing label, etc.
The Volunteer model is where we keep all the personal data for a person, such as phone, address, age range, etc, and these people will not necessarily be direct users of the Voices of Consent application itself aside from signing up as a volunteer. Lots of volunteers never actually use the application itself but may for example show up at a packing party, and we are just tracking them with the Volunteer model. If a Volunteer record is created, a User record is not created along with it.
The User model is not just tracking a volunteer’s info but is specific to the account information for a user of the application, and includes info such as a person’s site permissions, password token, etc. A User record belongs_to the Volunteer model, and when a User record is created it will also have an associated Volunteer record created along with it.
- Inventory Management
- Multiple locations each have inventory
- When
BoxItemsare Assembled, they will be removed from the relevantLocation'sInventoryTallyvia anInventoryAdjustment
- Volunteer Attendance Tracking
Volunteerscan sign up forMeetingsatLocationsviaAttendancemodelAttendancecan then be tracked
- MessageLogs
- Every time our system sends an autogenerated email, we will log it as a
MessageLog- Examples include:
- To: Requester -- Thank you for your BoxRequest
- To: Volunteers w BoxRequest Review permission -- A new BoxRequests exists. Please Claim or Decline.
- To: Volunteers w BoxDesign permission - A Box is ready for review. Please Claim or Decline.
- etc
- Examples include:
- We'll also allow Admins to create
MessageLogsad hoc, so it essentially provides basic CRM support
- Every time our system sends an autogenerated email, we will log it as a