## 2 Materials and Methods
To run the procedure in practice, the R programming language, Python, or other similar means can be used, which allows the generation of the repeated actions contained in steps 1-3 of the procedure. In the example shown in Section 3, the R programming, version 2023.12.1+402, is used. Regarding the second information scenario, a situation may occur when more information on customers' preferences is known. This can happen, for instance, through internet forums run by a company's representative or an outside contributor. The forums often run a poll to detect users' preferences, and they are rather quietly observed by companies because it is a simple way for them to learn more about their customers in an unobtrusive way. When such information is available, it is fairly straightforward to develop a concept of exploiting it, so that a product can be designed that appeals to clients. What may not be as clear, however, is how to implement the concept when the information is available from a large number of clients, since some less obvious problems may occur along the way. Using a specific example, the concept and its implementation with proper information technologies will be described, reflecting on the potential pitfalls that may elude one's attention in the process. The concept itself is rudimentary. The problem of creating a rational product design can be approached as follows under the current data scenario:  
1. Taking into account preferences of the ith client, create a set \(M_{i}\) of product configurations that fall within these preferences. Doing so for each client from the market sample, a set \(M=\bigcup_{i}M_{i}\) of potentially interesting product configurations is established. Each configuration contained in \(M\) addresses at least one client. 2. Find out which product configuration from \(M\) satisfies the largest number of customers from the market sample. If a product variant is to satisfy a customer, its attributes must fall within the barriers defined by the customer's preferences. To implement the two steps in the presence of larger amounts of data, a couple tools are required: a programming environment to generate product configurations that can be manufactured and satisfy the needs of a given client (step 1 of the procedure), and a visualization tool that displays how many generated product configurations are shared (step 2 of the procedure). Visualization tools that best fit the needs given by step 2 belong to the category of business intelligence. Their advantage is relative simplicity with which they interact with data; their disadvantage is that, although they usually have their own programming language, the coding does not have the properties of a full-grown programming, which means that it does not provide a way to create repetitive actions, such as the programming-specific cycles needed to generate product configurations in step 1. As straightforward as the concept and its implementation just described may seem, there are some pitfalls that can be unwillingly and easily overseen and should be avoided. Regarding the generation of product configurations in step 1, this will usually be done in such a way that for each product feature, its space of possible configurations will be run through in a computer system, but this procedure cannot be done automatically without noticing that relations may exist among product characteristics, as will often be the case. If there are indeed such dependencies, a fully automatic generation of product variants will most certainly result in having some variants that are impossible to produce. Such product configurations should not enter the analysis, of course, since they cannot be produced in the first place. To avoid the situation, product features should be divided into two categories: the independent and those that depend on them. Only the independent are then generated in their different combinations within a computer system, while the dependent are set up additionally, based on the form of their dependence on the independent features.