How to design a core system for user engagement