We develop a bi-objective optimization for a retailer product line, composed of substitutable variants, that seeks to maximize the retailer’s profit and consumer surplus concurrently, where the surplus is measured as a utility scaled in dollars. With fast-moving consumer goods in mind, we utilize a deterministic, price-dependent, utility model to develop the demand function. The problem is then formulated as a bi-objective mixed-integer nonlinear program. The ε-constraint method is used to fully develop the set of Pareto optimal solutions for this problem. Specifically, we derive analytical bounds on the values of ε that lead to Pareto optimal solutions. We then propose a scheme with simple steps that allows developing as many efficient solutions, as needed. To overcome the computational burden, we adopt a linearization scheme, which recast the problem into an integer-linear program that proves to be solvable within couple CPU seconds for large, industry-size, instances with tens of products and numerous consumer segments. Numerical examples on small- and large-size instances indicate that providing the customer with a high surplus level typically requires low prices and, surprisingly, small assortments (to reduce fixed costs). Another counter-intuitive observation that we make is that the price of a product sometimes raises when the required customer surplus level in the market is increased. This is due to cannibalization among products and change in the optimal assortment structure.