1. Create a learning demands pool. 2. Generate learning plan and roadmaps from demands. 3. Manage learning progress with task cards. 4. Provide exercise and challenges to increase fun. 5. Add review and preparation modules.