1. A method comprising: receiving a task including at least one normalized task attribute; accessing a plurality of profiles, each profile associated with a user 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 profile based on a stochastic model using the fitness metric; and routing the task to the user associated with the selected profile.