We have a part of our intranet that lists all the foreign language speakers within the organization that fellow employees can reach out to if they need translation assistance. Naturally, there are many speakers of the more common languages such as Spanish or French, and fewer of the less common languages.

The current challenge is that when someone filters down to see high frequency language speakers (such as Spanish), those at the top of the default sort end up getting all the traffic asking for translation assistance (for the user, there is no reason to look further), while those at the bottom of the default sort are almost never contacted. Regardless of the chosen sort, it seems this pattern will continue.

What are good ways to prevent this type of bias from happening?

We have discussed:

  • Randomizing results within the filter
  • Tracking clicks and sort least to most popular within the filter (translators are contacted with an email link)
  • I would love to know a solution to this issue. Similar selection patterns are common-place in the application I work on.
    – Itumac
    Sep 4, 2012 at 22:21
  • 2
    "Regardless of the chosen sort, it seems this pattern will continue." Why? The sort can just move the least used translators to the top.
    – you786
    Sep 5, 2012 at 18:27
  • @you786 Agreed... if we start tracking and sorting by usage - currently not being done. Sep 5, 2012 at 21:56

5 Answers 5


Simple is better.

Unless you really need the load to be balanced equally, just randomize the list. Doesn't require any more data being stored and can be done client-side in the javascript anyways if necessary.

  • Simpler was better. We went with this solution as it solved the issue at hand without going back to the drawing board to rethink the app. Had there been time and resources, the other suggestions may have been useful. Sep 10, 2012 at 22:31

Is the equity of choice a good thing for the user? If the user could benefit from better load balancing due to shorter queue times, longer assistance or better resources, why not expose that fact to the users and let them choose less busy staff for their own sake?

If the equity isn't useful for the user, try exposing more points of difference in the list so users have more to choose on (much as Greenforest suggests).

If you do implement invisible re-sorting (eg randomization), I would consider implementing a 'known translators' feature, where translators the user already knows are placed highly on the list. That way, if a user comes back to the page to request something else of a translator they already have a relationship with, they won't be tripped up by the randomization.

  • +1 for a very sound and general answer. Finding the points of difference is a task for Luke. I can also think of many such points: user ratings, queue size, specialization area, proficiency level, preferred communication type... Sep 6, 2012 at 7:25
  • 1
    I think it might be hard to implement a load balancing scheme in into this. Once you have used a translator and liked the interaction, why return to the list at all? I'd just stick my head around his/her door directly, or shoot him/her an email with additional queries. That will not register on your balancing system, apart from people not using the link but just typing the name in the email box, talking to the person at lunch or coffee, etc.
    – André
    Sep 6, 2012 at 9:00
  • @André - you raise a good point; I suppose it depends on whether there are any ways to interact with the translator outside of the proposed system. Sep 6, 2012 at 9:31

You could balance the workload by assigning points to the translators but hiding those from the user. Let's say we have 5 translators: Alfred, Bianca, Carlos, Dave, and Eliza. Assuming lazy users we'd expect Alfred to shoulder most of the workload, especially in a very long alphabetized list.

Instead, let's say that every time a translator completes a translation they are assigned a point (maybe based on length of translation, maybe not). Thus, the list can be ordered by point value in reverse so that the most-used translators fall to the bottom.

To make it even more equitable, simply remove the user's ability to select a particular translator and enforce random assignment based on the actual need.

  • 1
    Removing a user's ability to select a particular translator is a bad idea. Reordering is sufficient. If a user likes a particular translator (or prefers to always use the same translator to allow that translator to build up expertise with the specific product line), they will be unhappy.
    – Brian
    Sep 5, 2012 at 16:50
  • 1
    That's fine. I'm looking at the business process from an apathetic standpoint, where input=(translation need) and output=(translated text) and A,B,C,D,E all perform the work without regard to differences in quality, speed, likeability, etc. Sep 5, 2012 at 17:51

Sometimes (I guess more often than not) very good translations require some domain knowledge. How about listing the fields of expertise of each translator in addition to name and language? This might distribute the requests for assistance and at the same time increase the quality.

Regarding your options: A click counter on the email address might not work as intended, as some users copy+paste email addresses instead of clicking them (think using webmailers that won't open with mailto links). And clicking the link doesn't neccessarily lead to an email sent to the translator. So I guess randomization would do the trick too, especially in smaller lists.


Does it need to be a list? You might be able to simplify it with a recommend or suggest pattern that selects one result that meets your criteria. The select algorithm could be random for the initial iteration and then build in intelligence later (read never).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.