an efficient algorithm is presented for selecting an agent to service a task in a skills - based routing system . a set x is determined of all states of the boolean variables that contain the required skills for a task . a resume table of available agents is built , organized by the states of the n variables ; each agent is represented in each state that includes all skills possessed by the agent . all available and qualified agents are determined from the resume table ; those agents associated with a state of the resume table outside of the set x are disqualified . an agent is selected from those remaining . preferably , an agent is selected having a minimum qualification level to service the task . one preferred way of doing this is to subtract from the number of terms in a canonical form of the required skills expression a number equal to the number of times the agent appears in the set of states x and picking an agent with the lowest result . in the preferred embodiment , however , proficiency levels of each required skill are taken into account in making the final selection .