At this point there was no more functionality I needed to build, so I turned to personalization. My inspiration came from MovieLens, which lets you add tags to movies.
MovieLens went further than I remembered. In spring 2009 it shipped tag expression: you could mark a tag as a reason you liked an item, disliked it, or felt neutral about it. Three states, attached to the pair of you and that movie, private to you and shown to everyone else as a community average. The valence never made it into the public datasets, so most people only ever see the plain tags.
I wanted something simple but powerful that influenced the recommender alongside the graph connections. If I rate Sons of Anarchy five stars, I can also tag it “motorcycle gangs.” Then the recommender reaches shows connected to Sons of Anarchy through its people, and shows carrying that tag.
The biggest limitation is that tags are user generated. Once a tag is created, it is globally available to every TVLens user.
Removing a rating and seeing everything you have rated both came earlier, on Day 21; tags are what personalization needed on top of them.
Overall I am happy with the personalization so far. As we onboard users, we will add the features they actually find valuable.
For a more in-depth explanation, read this ADR. The machinery that turns a tag into a re-ranked list is Layer 2.
