1. A computer-implemented method comprising: receiving at a computer system a task from a requester, the task including at least one normalized task attribute; receiving at the computer system a plurality of profiles from users distributed across a communications network, each profile associated with one of the users and including a plurality of skill metrics and a plurality of performance indicators of the user; calculating an initial value for each profile based on the at least one normalized task attribute and the plurality of skill metrics; calculating a fitness metric for each profile based on the initial value using a neural network having weights based on the plurality of performance indicators; selecting a portion of the plurality of profiles based on the fitness metric; selecting one of the profiles from the portion of the plurality of profiles based on a stochastic model such that each of the profiles in the portion of the plurality of profiles has a probability of being selected; routing the task from the computer system to the user associated with the selected profile; and updating the plurality of performance indicators for the user associated with the selected profile based on one or more of: the elapsed amount of time for the user to accept the routed task; and the percentage of all tasks routed to the user, including the routed task and any tasks previously routed to the user, to which the user has provided a solution.