If you have ever uploaded a resume to an applicant tracking system and wondered why a human never saw it, you already understand the black-box problem of AI hiring. Most resume-scoring tools hide their logic behind SaaS dashboards and polite rejection emails. HackerRank took a different route. Its Hiring Agent is open source, which means anyone can crack it open, trace the code, and see exactly how an LLM turns a PDF and a GitHub link into a number. One developer did exactly that. What they found is not a polished recruiting framework. It is a mirror showing us how easily automation codifies personal opinions.

Under the Hood

The pipeline is deceptively simple. A candidate’s PDF resume is converted to Markdown, then parsed into a rigid JSON structure with fields for work history, skills, education, and side projects. Python scripts shuttle the data from one stage to the next, but the actual thinking happens inside a chain of prompts. Each section gets its own prompt. The LLM reads the structured data, applies scoring rules written in plain English, and returns a grade.

This architecture matters. The heavy lifting is not happening in clever algorithms or training loops. It is happening in the wording of the prompts. Change a few adjectives in the instruction set, and the same engineer goes from a strong hire to a weak candidate. That makes the tool fragile. It also makes it honest. Most AI hiring vendors would never let you see the prompts. HackerRank’s prototype exposes the truth that resume scoring has always been about the rubric, not the code.

The Tyranny of the 35 Percent

The most striking bias hides in the scoring rubric. Open source contributions account for 35 percent of the total score. That is an enormous weight. To put it in perspective, a candidate’s entire work history, education, and skill set must compete with one slice of their extracurricular coding life for the other 65 percent.

The rules are even stricter than the weighting suggests. Personal GitHub repositories do not count. Maintaining your own library, no matter how useful, scores zero. The tool only rewards contributions to other people’s projects. The candidate must be a committer on someone else’s codebase to earn those points.

That preference carries real demographic weight. Engineers who maintain their own tools often do so because they solved a problem no one else was solving. They might also hold jobs that forbid external contribution, work in regions with fewer large open-source communities, or simply have family obligations that make unpaid coding after hours impossible. By writing the prompt this way, the tool does not measure raw engineering ability. It measures participation in a specific coding culture, then calls it objectivity.

When the Instructions Don't Land

The rubric also tries to reward startup experience. The prompt explicitly suggests giving extra points to founders and early-stage engineers. That sounds reasonable in theory. Startup veterans often wear many hats and ship under pressure. So the tester tried an experiment. They took a single resume and changed nothing except the most recent job title, running it through the agent three times with three different labels: Senior Java Engineer, Founding Engineer, and Co-founder / CTO.

The scores barely moved. The LLM essentially ignored the instruction.

This is one of the most important findings from the entire audit. It proves that a prompt rule is only a suggestion. Large language models are trained on vast corpora of text that contain their own stubborn biases about what signals quality. If the model’s training data associates prestige with certain titles, company names, or keywords rather than the phrase “founding engineer,” your carefully written instruction may simply bounce off. The prompt tells the model to care about startup titles, but the model has its own ideas, and it wins. That gap between human intent and machine behavior is dangerous when the output is a hiring score.

Points Without Purpose

Beyond the major weightings, the rubric is full of oddly specific micro-rules that feel less like data-driven decisions and more like someone’s late-night brainstorming session.

Een LinkedIn-profiel is precies één punt waard. Niet de kwaliteit van het profiel. Niet het aantal aanbevelingen of de diepgang van de werkgeschiedenis. Het simpelweg hebben van een URL op het cv voegt één punt toe aan het totaal. Ondertussen is deelname aan Google Summer of Code vijf punten waard. En als een kandidaat geforkte repositories op GitHub heeft, negeert de agent elke fork met minder dan vijf eigen forks.

Elke regel van deze regels vormt een luid oordeel, vermomd als een stille coëfficiënt. Waarom is een aanwezigheid op LinkedIn überhaupt een punt waard? Het geeft aan dat een kandidaat weet hoe hij een sociaal netwerk moet invullen, niet dat hij een gedistribueerd systeem kan ontwerpen. Waarom is GSoC vijf keer zoveel waard als een LinkedIn-link? Misschien omdat de auteur van de prompt respect heeft voor het programma. Dat respect is nu een wervingsbeleid geworden. En waarom de grens trekken bij vijf forks? Een tool met tien gebruikers zou een cruciaal nicheprobleem kunnen oplossen. Onder dit systeem zou het maar beter niet kunnen bestaan.

Deze getallen komen niet voort uit een regressieanalyse. Ze zijn gekozen door individuen. De één besloot dat deelname aan open source meer dan een derde van de waarde van een engineer is. Een ander besloot dat een LinkedIn-profiel 1 punt waard is. Wanneer je die gissingen automatiseert, geef je ze de autoriteit van software.

Elke Prompt Is een Vooroordeel

Het moeilijkste deel van het bouwen van een agent voor het scoren van cv's is niet het parsen van PDF's of het aanroepen van een API. Het is beslissen wat ertoe doet. Elk woord in een scoring-prompt is een waardeoordeel over wat een goede engineer maakt. Moeten zijprojecten zwaarder wegen dan reguliere banen? Moet publieke code belangrijker zijn dan werk bij een privaat bedrijf? Moet een sociaal mediaprofiel überhaupt van belang zijn? Er zijn geen wiskundig correcte antwoorden op deze vragen. Er zijn alleen culturele voorkeuren.

Wanneer een recruitmentteam dit handmatig doet, zijn de vooroordelen in ieder geval verdeeld over veel beoordelaars die het oneens kunnen zijn, kunnen kalibreren en kunnen leren. Wanneer een LLM het doet, verharden de vooroordelen van één prompt engineer in een herhaalbare functie die op schaal draait. De tool elimineert subjectiviteit niet. Het archiveert het.

Gebruik het als een Spiegel, Niet als een Filter

HackerRank’s Hiring Agent kan het beste worden begrepen als een prototype. Het voelt als een eerste concept, wat precies is wat het is. Het biedt een fascinerend vroegtijdig inzicht in hoe AI-wervingsinstrumenten worden geconstrueerd, maar het mist de kalibratie, het testen en de diverse input van een echte recruitmentorganisatie.

Als je wervingssoftware bouwt, bestudeer het dan zorgvuldig. Het laat zien hoe snel willekeurige regels veranderen in geautomatiseerde poortwachtersfuncties. Als je een kandidaat bent, onthoud dan dat deze systemen geen orakels zijn. Het zijn spreadsheets vermomd in natuurlijke taal, en ze dragen de aannames in zich van degene die de prompts heeft geschreven.

Totdat deze tools even rigoureus op vooroordelen worden getest als de engineers die ze beoordelen, zouden ze menselijke gesprekken moeten ondersteunen, niet vervangen.