---
Transparency in Tag Matches: How We Achieved It
Recently, a debate erupted in our Slack chat among team members regarding how users understand tag matches. One developer presented a complaint from a client who could not comprehend why their resume did not match a job posting, despite having similar skills. This prompted us to consider: how can we help users better understand why the algorithm made certain decisions?
Why This Matters
The issue of tag matches affects everyone: from users searching for jobs to companies looking for suitable candidates. A lack of understanding of how algorithms work can lead to user dissatisfaction and, consequently, a decline in trust in our platform. In a highly competitive recruitment market, this could be a deciding factor in choosing between us and other solutions. If users cannot grasp how the system operates, they may simply turn to competitors.
Specific Issues
In one instance, a user applied for a position but did not receive a positive response. They reached out to us with a question about why their resume did not match the requirements. We discovered that the tag matching was based on algorithms that did not explain how the tags were selected. This led to dissatisfaction and ultimately a deterioration in the user experience.
Initial Steps
Initially, we decided to implement a simple feedback system that would inform users which specific tags were used for the match. However, this solution proved to be too superficial. We received numerous comments indicating that users did not understand what tags were and how they worked. Therefore, we returned to the drawing board to find a more comprehensive solution.
Technical Approach
We opted to implement a more sophisticated system that not only displayed tags but also explained how the algorithm arrived at its conclusions. We created a model that analyzed matches and generated explanations in natural language. Here is a code example we used for this task:
# Example code for generating explanations
class ExplanationGenerator:
def generate(self, matching_tags):
return f