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 characteristics of an inside of a shoe; determining insole information for a plurality of insoles, wherein the insole information includes 3D characteristics of an exterior of an insole; determining foot information for a consumer's foot, wherein the foot information includes 3D characteristics of a shape of the consumer's foot; the method being characterised in that it further comprises the following steps: for each shoe of the plurality of shoes performing: for each insole of the plurality of insoles, assigning 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; and selecting selected combinations, each selected combination including a shoe of the plurality of shoes and an insole of the plurality of insoles, the selected combinations having higher compatibility scores relative to the compatibility scores of other combinations of shoes of the plurality of shoes and insoles of insoles; and providing a recommendation to the consumer including the selected combinations. determining shoe information for each of a plurality of shoes, wherein the shoe information includes three-dimensional characteristics of an inside of a shoe; determining insole information for a plurality of insoles, wherein the insole information includes 3D characteristics of an exterior of an insole; determining foot information for a consumer's foot, wherein the foot information includes 3D characteristics of a shape of the consumer's foot; the method being characterised in that it further comprises the following steps: for each shoe of the plurality of shoes performing: for each insole of the plurality of insoles, assigning 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; and selecting selected combinations, each selected combination including a shoe of the plurality of shoes and an insole of the plurality of insoles, the selected combinations having higher compatibility scores relative to the compatibility scores of other combinations of shoes of the plurality of shoes and insoles of insoles; and providing a recommendation to the consumer including the selected combinations. for each shoe of the plurality of shoes performing: for each insole of the plurality of insoles, assigning 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; and selecting selected combinations, each selected combination including a shoe of the plurality of shoes and an insole of the plurality of insoles, the selected combinations having higher compatibility scores relative to the compatibility scores of other combinations of shoes of the plurality of shoes and insoles of insoles; and providing a recommendation to the consumer including the selected combinations.