Recommending the users videos they might like that they have not watched

Hello, I am trying to run a somewhat (not really) complex query to recommend a "playlist" to users. Like youtube. I am using the current query:

MATCH (a:Person { name: $user })-[r:WATCHED]-(b:Video) WITH r, b ORDER BY r.ms LIMIT 50 MATCH (b)-[r2:WATCHED]-(c:Person) WITH r2, c, b ORDER BY r2.ms LIMIT 100 MATCH (c)-[r3:WATCHED]-(d:gVideo) WITH d, r3, b ORDER BY r3.ms WHERE NOT b.mpd = d.mpd RETURN DISTINCT d LIMIT 100

What I am trying to do in plain language is get the users most recently watched videos (order by r.ms (milliseconds property of time watched)), get other users that have watched that recently and recommend the videos they have watched recently. Filter recommended videos to not be equal to videos the user has watched recently.

Im wondering if there is a more sophisticated way of doing this using collections or subqueries as I dont seem to be getting what I want it is recommending recently watched and not filtering them out.