Matching content item to a persons profile
Look into collaborative filtering and content based filtering.
Essentially, build a user-space - using their personality, etc features. build an item space in a similar manner- using their tags, what not.
Decide on a metric for each space, so you can compare how much each item is similar to each other(same for users).
Then look at each user preferences and say, this user is similar to that user who liked this item who is close-like to that item.
If user A liked item 1 and user B is similar to user A then its probable he will like item 1 as well.

This is a simple enough example