Profile Segmenting
Dave Rapin
Segments are subsets of curler profiles that meet user defined criteria. Like filters that you can save, preview, and augment over time. Segments are a powerful marketing tool that clubs can leverage when building out marketing email campaigns, but also as potential criteria to restrict certain content / features (who can spare, who can see a page, etc.)
Some examples are:
- Curlers over the age of 55.
- Curlers who joined any league last season, but have not yet joined a league this season.
- Curlers aged 19 to 25 who received a multi league discount in the current season.
- Curlers who have received more than $100 in discounts in the current season.
- Curlers who purchased at least 2 leagues.
- Curlers who have been with the club more than 2 years.
- Curlers who have been with the club less than 2 years.
- Curlers who have purchased one or more of a list of products, fees, or events (leagues / competitions).
There are a ton of possibilities, and not all criteria will be supported at first, but can be iterated on over time. All segmentation described here is profile based (curler profiles are required), and depends on what information is being collected.
Because these operations can be expensive, we'll probably need to limit how "definable" segments are, and instead have predefine segments that take customizable parameters so that we can implement them as functions in the database (stored procedures basically). We could also do ahead of time caching (materialized views), where creating or modifying a segment requires a "compile" stage where we populate the view.
Potentially we make criteria chain-able, so that you can take the results from one segment and run (pipe) them through another segment (as many segments as you like), to create a new composite segment. This might not be doable due to performance concerns though. Also, the concept of piping might be a little too advanced / complicated / hard to explain, but definitely worth considering.
Potentially we allow both AND and OR criteria, and grouping (algebraic order of operations).