1. A method performed by at least one computer, comprising: determining shoe information for each of a plurality of shoes, wherein the shoe information includes three-dimensional (3D) characteristics of an inside of a shoe, wherein the 3D characteristics of the inside of the shoe include an internal height of the shoe; determining insole information for a plurality of insoles, wherein the insole information includes 3D characteristics of an exterior of an insole; automatically determining foot information for a consumer's foot by the at least one computer based on a 3D scan of the consumer's foot by a 3D scanner, wherein the foot information includes 3D characteristics of a shape of the consumer's foot, wherein the 3D characteristics of the shape of the consumer's foot include a height of a top of the consumer's foot; assigning a compatibility score to each combination of shoe and insole in a plurality of combinations of shoes in the plurality of shoes and insoles in the plurality of insoles, wherein assigning the compatibility score to each combination of shoe and insole comprises: for each shoe of the plurality of shoes performing— for each insole of the plurality of insoles, automatically assigning by the at least one computer a compatibility score to a combination of the each shoe and the each insole according to a fit within the each shoe of the consumer's foot and the each insole according to the shoe information of the each shoe, the insole information of the each insole, and the foot information for the consumer's foot based on the 3D scan by the 3D scanner, wherein the compatibility score assigned to the combination of the each shoe and the each insole is based on a comparison of the internal height of the each shoe to the height of the top of the consumer's foot; ranking selected combinations of shoes and insoles in the plurality of combinations of shoes and insoles relative to another one or more combinations of shoes and insoles in the plurality of combinations of shoes and insoles based on the compatibility scores assigned to the selected combinations of shoes and insoles relative to the compatibility scores assigned to the other one or more combinations of shoes and insoles, each selected combination including a specific shoe of the plurality of shoes and a specific insole of the plurality of insoles; providing a recommendation to the consumer including the selected combinations of shoes and insoles based on the ranking of the selected combinations of shoes and insoles; and generating at least one of a shoe or an insole of the plurality of combinations with a 3D printer based on the recommendation.