extension/learn — Issue #33: How will we handle recommendations?
Author: jasonadamyoung
Created: 2011-11-29 12:48:43+00:00
State: open
Labels: decision needed

Following is a list of items (which may not capture all of the decisions needed) that will need decisions to proceed with an initial recommender system implementation:

> Note: this list is still in draft form

**What are means of conveyance for recommendations?**

We've focused on email, and there's a port of the knappsack design (viewable (in demo)[http://demo.learn.extension.org/mailer/recommendation]) already. Are we going to display recommendations in any other places?

**What timing governs delivery of email recommendations?**

We've said 'weekly' previously. But what does that mean? Do recommendations go out on a particular day? Are they spread throughout the week? This goes with...

**What content is in an email recommendation?**

The first obvious choice is "events occurring next week" - but that assumes a late-week delivery. One could do events "through next week" - which is Time.now <= Event#session_start <= (Time.now + 7 days).end_of_week (and that's what I've checked in to this point).

But are there other events that should be in recommendations? Events that are past but have a recording added? How are those mixed in? Are they separated in display? How many of each do we pick?

**What related issues do the emails present?**

* How do we handle "unsubscribes"? (dependent partially on Issue #23)
* How do we handle replies and bounces to the "From:" address? (and what technical implementation is needed to support that?)
* What measures do we have in place to prevent us from looking like a spammer?
* How will emails be queued for delivery?
* Are we going to track clicks on the links in the emails to sessions? (If so, we need a per-learner coded link to log the click)
* Are we going to bug the html email to get a sense of whether the email was opened?

**How will we make recommendations?**

Issue #28 defines an "activity-based" recommender system. But that only has relevance when a person has activity (see EventActivity model for types of activity). For those that have not used Learn - how will we send those persons recommendations? We've talked about "tags" and "AaE activity" - but where do we get that data? Issues #29 and #30 need decisions in relation to any data we might pull from darmok.