Personal Goals
How Personal Goals work
A Personal Goal represents a challenge to a person using voluntarily to achieve a specific outcome or status such as eligibility to volunteer in a school, be confirmed as a member of an organisation. meet any specific training requirements for an activity etc.
The starting point of the journey is represented by a Personal Goal Card The steps required to achieve the goal are represented by Work Steps and the the completion of the Goal is marked by issuing a badge.
Goal -> Work, Work Work -> Badge
Goal - The desired future state
Work - the actions taken
Badges - Marker of the result.
Work steps may involve a range of activities such as:
fill in a form
watch or read training material
take a test
visit a remote location, transcript obscure runes from a moss covered stone, decode the message and whisper it into the ear of a well known pop star.
For each Goal we have the following things to think about.
Where do goals originate?
How someone knows they have to complete a goal?
How goals get given to someone to complete?
How they complete the goal?
How we indicate that the goal has been completed?
Where do goals originate?
Goals originate from the voluntarily platform, or from activity providers.
Most goals are prompts by Voluntarily that move people forwards on their volunteering journey.
Activity goals are things specific to an activity such as onboarding or training.
Goals require an original author and may require specific original code to be added to the platform (in modular form). In this version we do not plan to make designing and implementing Goals part of the user interface. Instead they will be constructed in the database or code base.
A Goal Collection in the database holds all the registered potential goals. If the work steps require interactive pages in the system these are represented by pages in the code base.
A simple Goal might require nothing more than the card which links to an external workflow resulting in a badge being issued. A more built-in goal might require one or more interactive pages added to the code base. either directly or via an add-in repository. In this case the GoalCard link points at the internal page.
How are goals represented?
Goal Schema
title - a short name that indicates what needs to be done - these use verbs and active voice.
Complete your profile,
Get Police Vetted
Attend your first event
Complete your safety training
subtitle - a sentence that describes the purpose of the goal
badge - the name and ID of the badge that will be issued on completion
imgUrl - a picture that illustrates the goal
description - one or two paragraphs about why you need to do this, what steps are involved and what the outcomes will be.
preconditions - badges that you have to have in order to start this goal.
startLink - entry point into the interactive workflow
slug - language-independent identifier.
language code - which language the goal and workflow is in.
Category - 'Getting Started', 'Prepare for volunteering'
evaluation - function that checks whether the goal has been completed - e.g. badge presents, status value etc.
For translation purposes, two goals can lead to the same outcome but are in different languages. In this case they need to share a common slug.
It is not strictly necessary for a goal to result in a badge. It may result in an internal status change to a person's record. In this case, the goal should be cleared at the time the change is made.
Goal Groups
Often several goals will be allocated to a person at one time. e.g. on first sign up. We don’t keep a separate collection of goal groups. We look for goals having the same category.
On the /goals page we list all the available goals organised by category. In order to assist testing a button under each list allows the user to assign that category of goals to themselves.
GoalCard Component
A GoalCard is the visual representation of the goal. It is a portrait mode card showing the illustration, title, and subtitle. It may also show the associated badge. On hover/active a 'more information' link may show a more detailed description. The entire card is clickable.
Once clicked the person will move into the work steps which may have one or more interactive pages that lead the person through the work necessary or might handoff to a separate system such as a Learning Management System LMS or Training Delivery Platform (TDP) or even a Voluntarily Activity.
Typically goal pages will open in a new tab/window so that people can progress on multiple pathways without losing sight of their orginal dashboard.
How do goals get given to someone to complete?
Each person has a list of goals allocated to them. As these are only required on the home page and are private they are not stored directly in the person object. But will be obtained from a personalGoals collection in much the same way we get membership or interests.
To allocate someone a goal create a one or more new items in the personalGoals collection with key of the person id.
personalGoal { personID goalID status: [ queued, in-progress, completed, hidden, cancelled] dateStarted dateCompleted }
Allocation of goals take place at key life events for the volunteer
Creation of a new account. - when people sign in for the first time they are allocated the 'getting started' group of goals.
After completing specific activities e.g on badge allocation we can check the goalgroup list for a matching trigger and then load in the next set of goals.
manually by SysAdmin or OrgAdmin
Voluntarily - by browsing badges and requesting one
When signing up for an Activity - on interested status changes.
When joining an organisation. - on membership status changes.
The Goal List should be de-duplicated so that each goal only appears once even if it arises from multiple triggers. Hence before adding a goal to someone check they don't already have it. However, People can try for the same goal in multiple languages. i.e PersonID + GoalID + language represent a unique key.
How does someone know they have to complete a goal?
Each person has on their home page (dashboard) a section that holds their current goal cards. For first time users this may be labelled 'Getting Started' Once people achieve certain goals the label may change to something more advanced e.g. 'Stepping Up' The label is taken from the Category of the leading goal card.
The section is a GoalList, rendering a grid of GoalCards. Sorted by priority and dependency order - i.e. the things that need doing first are shown first. While the list may be quite long we would normally only show the first few (4) items to complete although the person should be able to scroll through all the open goals.
As people complete goals they receive badges. On receiving a badge the goal is removed from their current goals. If people want to ignore a goal it can be hidden from the list (hide) button, but it will remain in their queue and can be restored at some point.
How do they complete the goal?
To initiate completion of a goal a person clicks on the GoalCard. This takes them to the first step which may be a page in the system or the beginning of a workflow in the TDP or LMS.
Once the work has been completed the external system needs to notify Voluntarily of the achievement by calling a voluntarily API tied to the original goal. This, in turn, triggers issuing the badge. (needs to be trusted and needs to be transmitted to the LMS as a callback endpoint. )
When the client calls for the list of personalGoals before they are delivered their evaluation code will be tested server side. If the goal meets the evaluation criteria then it will be marked as completed and not returned. At this point, badges can be issued. This will cause the card to disappear from the list. Also at this point, a new goal group might be added to the list.
Note that if part of the evaluation fails e.g. badge could not be issued then the card will remain and will be retried in the future.
Option: when the goal is first marked as completed it is still returned but is highlighted with a 'Completed' sash. Clicking the card now marks it as acknowledged and it will disappear.
How do we indicate that the goal has been completed?
Some goals require no further illustration. For example the goal of completing your profile just links to the profile page. When each goal card is loaded its evaluation criteria can be run e.g. check if the profile is > x% complete if so the goal removes itself but does not create any badges etc.
Usually goals result in the issuing of badges. These are added to the person's badge collection and shown on their dashboard under their profile picture.
In the case of a goal such as register as a teacher, or join a group no badge is issued but the internal status is change. as a result, the person may see new User interface elements such as Create Opportunity button.
Examples
Register as a Teacher
This is placed into a person's goals if for any reason we think that they might want to be allowed to create opportunities.
Test to allocate:
new account created
somehow we think they are a teacher but they are not signing in through ESL.
GoalCard
Goal { title: 'Register as a Teacher' subtitle: 'enables creation of new activity requests' badge: OpportunityProvider imgUrl - a picture of a teacher Description - Identify as a teacher by filling in your NZ Teacher Registration Number. If this matches your signed-in name, is in the Full category and has not expired then we can enable you to create new opportunities. preconditions: ['signed-in', 'validated-email', 'not-already-op] startLink: '/goals/teacherRegister' slug: 'register-as-teacher' language code: 'en/NZ' category: 'Getting Started' evaluation: status.includes('Role.OP') }
WorkFlow
Show single page with form to collect teacher registration id. call API to validate the person's name and registration Update the person record with teacher.registration fields. set OP status.
Completion
When the cards are shown again as the person will have OP status the card will be marked as completed.
Complete Profile
This is placed into a person's goals on their first signup. As we allow people to sign in with very little information except for name and email address it is important to encourage them to fill in more. Core requirements are a picture and full name for humanity, Also emails should be verified. A person should list an about me section and add some skills and interests along with location so that we can make recommendations.
Test to allocate:
new account created
Getting Started Group
GoalCard
Goal { title: 'Complete your profile' subtitle: 'Help us match your skills and interests with volunteering opportunities in your area.' badge: fullProfile imgUrl - identity card. Description - Tell us more about yourself. This will help us find you volunteering activities that match your skills and interests and are in your location. Add a picture and something about yourself to help teachers build a good team of volunteers. preconditions: ['signed-in'] startLink: '/person/profile' slug: 'fullProfile' language code: 'en/NZ' category: 'Getting Started' evaluation: profileCompleted(me) }
WorkFlow
Link goes to the persons profile. (not the same as the dashboard)
Completion
When cards are listed the completeness checklist is run on the persons profile and if high enough the card is removed.