Selection of a call for handling by a call-center agent (106-108) is based on which call's handling by the available agent will tend to optimize call-center performance criteria such as efficiency (e.g., minimize per-call handling time) or derived benefit (e.g., maximize revenue). Each agent has a service profile for each type of call that they handle. A service profile (400-402) comprises present values of a plurality of service metrics, such as proficiency, profitability, customer satisfaction, and agent satisfaction. When an agent becomes available, the present values of the service metrics of the service profile (500-502) of that agent for each type (e.g. skill) of available call handled by the agent are combined (610) into a score according to one of a plurality of formulas which corresponds to that call type, and a call of the type for which the agent has the best (e.g., either highest or just-sufficient) score is assigned (612) to the agent. Preferably, a call score is also computed (807) for each available call type, based on factors such as the purpose of the call, the call's in-queue wait time, the priority of the call, etc. The call type for which the agent has the best score is selected (812) to be the one for which the call score best matches the agent's corresponding score. When the assigned agent finishes handling the call, his or her performance is evaluated (202-206) based on the service metrics, and the valuations are used (210) to revise the present values of the service metrics of that agent's service profile. The revision process gives (208) more weight to valuations of more-recently-handled calls to reflect both long-term and short-term agent performance trends and variations.