function rank_for_user(candidates, user, model):
   scored = [(model.predict_engagement(user, item), item) for item in candidates]

   scored.sort_by(score, descending=true)
   return [item for score, item in scored]
