1. An apparatus comprising: a computer-readable storage medium comprising a program code encoded therein, wherein the program code is configured to be executed by a processor, the program code comprises a plurality of logic blocks, the logic blocks are configured to customize a product, and the logic blocks comprise a first logic block configured to create a customizable product, wherein the customizable product comprises a set of one or more attributes, and the set of one or more attributes defines the customizable product; a second logic block configured to assign the customizable product to a customizable product class, wherein the customizable product class is a parent class of a hierarchy, the hierarchy is configured to define a configurator, the configurator is configured to reference the hierarchy to permit configuration of the customizable product, and the configuration of the customizable product is performed using a customizable user interface mapped to the customizable product to provide a graphical user interface, the customizable user interface comprising: a user interface theme, the user interface theme including a set of properties, the user interface theme selected from a set of theme templates; a user interface control, the user interface control associated with a set of customizable product attributes; and a user interface group, the user interface group includes a set of one or more of the user interface controls; a third logic block configured to add a component product class to the customizable product class, wherein the component product class is a subclass of the customizable product class, the component product class comprises one or more component products, each of the one or more component products is configured to be selected using the customizable user interface, and each of the one or more component products is configured to be added to the customizable product, upon selection of the each of the one or more component products using the customizable user interface; a fourth logic block configured to provide natural language templates, wherein each template contains a fill-in-the-blank sentence in a natural language syntax; a fifth logic block configured to add a customizable class rule to the customizable product class, wherein the customizable class rule prohibits the selection of one or more component products for addition to the customizable product after selection of a specific component product for addition to the customizable product, and the customizable class rule is generated by selecting one or more natural language templates, and filling in each blank in each selected template with one or more of the customizable product class, the component product class, an attribute of the customizable product class, an attribute of the component product class, a mathematical expression, and a non-selected natural language template; and a sixth logic block configured to map the customizable user interface to the customizable product class, wherein the customizable user interface is configured to provide access structure to the configurator.