1. A computer-implemented method for making optimal decisions, the method comprising, by a processor: receiving a plurality of candidates from an interested party; receiving a plurality of criteria associated with a characteristic of the plurality of candidates, each of the plurality of criteria being associated with a type; receiving values, from the interested party, for each of the plurality of criteria for each of the plurality of candidates, wherein the values have one of a numerical form or a non-numerical form based on the type; normalizing the values for each of the plurality of criteria by applying normalization rules associated with each of the plurality of criteria, wherein the normalization rules comprise at least one of minimum and maximum values, expected distribution, and range of values; generating a raw candidate ranking by ranking the plurality of candidates for each of the plurality of criteria; receiving a context-based weight model for each of the plurality of criteria, each context-based weight model being configured to indicate a priority of each of the plurality of criteria wherein the context-based weight model comprises an exponential weighting rule configured to prioritize a most important criteria of the interested party; generating a weighted ranking of the plurality of candidates by applying the context-based weight model for each of the plurality of criteria to the raw candidate ranking; and sorting the plurality of candidates based on the weighted ranking, thereby generating a weighted list of the plurality of candidates sorted through a comparison of each of the plurality of criteria without premature candidate elimination.