The logic we use behind our weighted round robin is pretty sophisticated
First things first, when you select weighted round robin as your routing rule, then all of the weights must add up to 100. Distributely will prevent you from saving your routing weights when this is not the case.
Once your weights are set, then they will reflect the number of records that will be assigned to a given agent over the course of 100 records. What happens in our system is that a sequence of the agents in the team is produced which will assign the exact number of records to those agents based on their associated weight over the course of those 100 record assignments. When you click the preview link next to save weights you can see the sequence produced by Distributely. After 100 records have gone through the sequence, the sequence will start back at the beginning and assign agents in the same order over the next 100 records.
The sequence will prevent an agent from showing up in the sequence multiple times in a row as much as possible. When an agent has an outsized weight compared to other team members (i.e. a three-person team includes one agent with an outsized weight of 60 compared to the other two with a weight of 20) then that agent will show up two or three times in a row. As the variation of weights assigned to agents increases, the number of times a agent shows up in succession will also increase. That being said, regardless of the variation of weights within the team and the number of records that are assigned in succession, over the course of 100 assignments the appropriate number of records will be assigned to the agents within the team. This is all assuming that nothing changes related to the weights or availability of team members as the sequence runs its course.
If an agent is unavailable due to time off, a weekly schedule, or a cap, then they will be skipped in the sequence, in which case a record will be assigned to the next available agent in the sequence. As the unavailable agent is skipped, agents who are available may be assigned multiple records in succession.
If the weights are changed at any point, that will update the sequence and restart it from the beginning as a new sequence. This can cause an agent to show up multiple times in succession depending on where they appeared in the previous and new sequences.
If users are added or removed from a team, then the weights within that team will also change, which will update the sequence and restart it from the beginning as a new sequence. This can cause an agent to show up multiple times in succession depending on where they appeared in the previous and new sequences.