Much depends on the data available to you. Perhaps you can be more specific about the scale and scope. Modelling time is the straightforward bit. To understand how to conceptualise time as useful features, see [this excellent answer](http://datascience.stackexchange.com/a/2370/12363) on http://datascience.stackexchange.com/questions/2368/machine-learning-features-engineering-from-date-time-data Modelling the user is more complicated. You will likely not have enough data on each user, but you can build some user models. (Too few, then the system will make similar predictions for all users, without nuance. Too many and there will be sparsity, overfitting, and generally the same problems as having no profile models at all, ie one model per actual user.) This can be done supervised or unsupervised, finding representative clusters. (Search for *user profile categorisation*, *user models*, *user model clustering*)