1. A method comprising: receiving, by one or more processors of a computing device, a recommendation request corresponding to a user; retrieving a user profile of the user based on the recommendation request, the user profile comprising user preference data of the user associated with one or more items and user demographic information of the user; computing a utility value of an item based on the user profile and item models built based on user preference data of a plurality of users and item information of a plurality of items; and selecting a subset of items with highest utility values as the recommendation list.