Design principles for competence-based recommender systems