Came across several interesting articles on collaborative filtering over the weekend and this one is particularly interesting.
This algorithm is able to deal with a binary case. i.e. If I like this this this and dislike that that that, what are the chances that someone who has the same taste as me like something else.
I will modify it a little to use it with groups of demographies and test it to see if it improves CPA in the real world.
Will post more after research.