How would you design a scalable notification system for a web application at Kairos with retries, delayed delivery, and failure handling?