We present a novel method for software personalization. Personalization is understood broadly as a set of mechanisms by which an application is tailored to a particular end user and his or her task. The presented method outlined here is motivated by and remedies a few widely recognized problems in the way customization is carried out. The proposed method has been used in a collaborative system called Writer’s Aid. It relies on a declarative specification of preconditions and effects of system’s actions and applies artificial intelligence, automated reasoning, and planning framework and techniques to dynamically recognize the lack or availability of the personal information at the precise time when it affects a system action and initiates an interaction with the user aimed at eliciting this information in case it has not yet been specified.