What you have is calls coming in throughout the day and employees with some sort of priority to handle the calls. To generalize, you have jobs to be done and workers which are not equal. This is a job management system. There is a form of priority queue that handles this. Normally, we consider that the jobs have priority. Here, they are all the same. So, the jobs are in a FIFO queue. The workers are in a priority queue. When a worker is done with a job, the worker goes in the queue. They get in front of anyone who has a lower priority (behind anyone with an equal-to or higher priority). When there is a job to be done and a worker in the queue, the worker takes the job.
That is all good when everyone is busy. It is not good when there is sparse work. The same worker does all the work. We don't care for computers because the CPUs don't complain. However, we want to spread the work out. What is used in node-based systems is a timer. The longer someone waits in the queue, the higher that person's temporary priority gets. The time increment is up to you. You can say that a person's priority goes up by 1 every hour. So, to get their temporary priority, you get their priority and add how many hours they have been in the queue. This helps ensure that every node in a distributed system gets some work at some time.
A problem you will have when researching this is that, based on my experience, about 99% of all job management systems place all priority and weight on the jobs, not the workers. All workers are equal. So, you have to flip it. In one textbook I had many years ago, they simply reversed the roles. Instead of viewing it as a employee taking a call, you think of it as a call taking an employee. The calls become your "workers" and the employees become your "jobs". Then, you can view it as a basic priority-based queue.