Filtering out a subset of learning resources from a large repository to meet the requirements of a particular learning situation is a difficult task, due to the high degree of subjectivity in requirements and the combinatorial complexity of matching. In this paper, we propose a two stage approach with feedback. First, a pair of metrics quantifies the match between a learning resource and a learner model, and reduces the search space. Then, another pair of metrics quantifies the topic overlap and topic coverage, and optimizes them to form a lesson which is then delivered to the student. After each lesson the learner model is updated to reflect the new learning that has taken place. A set of process parameters allows the learner to vary the style of the lesson. © 2009 IEEE.