Inspiration

Hiring is often slow, inconsistent, and quietly biased. Qualified candidates get filtered out by keyword-matching systems that don't actually understand context, while human reviewers bring their own unconscious bias to the table. I wanted to build something that does both jobs better: parse resumes intelligently and score them in a way that's explainable and fair.

What it does

ClearHire takes in resumes (PDF), extracts the relevant content, and sorts candidates based on how well they match a role against a job description, with a specific focus on the industry hiring.

  • PDF extraction — pulls structured text out of raw resume files
  • TF-IDF matching — scores resume content against job requirements
  • Industry skill detection — recognizes domain-specific skills and certifications relevant to industry roles
  • Experience extraction — identifies and weighs relevant work history
  • Weighted scoring — combines signals into a single ranked score
  • Bias reduction — reduces reliance on proxy signals that can introduce unfair filtering
  • Smart explanations — shows why a candidate scored the way they did, instead of a black-box number

How we built it

I built chearhire in phases, the earliest focused on getting a working mvp with resume parsing, matching, and a usable scoring pipeline. The second phase layered in domain specific intelligence to make sure that regardless of the industry of the use case, clearhire will return credible results.

Domain skill detection and refinements to reduce bias in how candidates were ranked, along with UI polish through Streamlit so the tool is actually usable, not just a script.

Challenges we ran into

I had some difficulty tuning the matching logic. TF-IDF alone tends to overweight common resume buzzwords and underweight the specific industry terminology that actually signals relevant experience, so getting the scoring to reflect real domain fit took iteration.

The hardest tradeoff was balancing accuracy with fairness. Signals that improve raw match accuracy like specific applicant name, company names, gender, age or phrasing style can also act as proxies for bias. Reducing reliance on those signals without tanking the model's ability to correctly rank qualified candidates meant constantly testing where that line sits.

Accomplishments that we're proud of

We're proud that ClearHire isn't just a resume keyword-matcher. It's built with fairness as a core design goal, not an afterthought. Adding bias-reduction logic and explainable scoring on top of a working matching pipeline meant more effort, but it's the part of the project we care about most, because it addresses a real, well-documented problem in hiring rather than just automating the status quo.

We're also proud of taking this from a raw idea to a fully working, deployed application. Resumes go in, structured parsing and industry- domain scoring happen automatically, and a recruiter gets a ranked, explainable output they can actually act on. It's a complete, usable tool, not just a proof of concept.

What we learned

Building ClearHire taught me that fairness isn't a feature you bolt on at the end. It has to be considered at every stage, from how resumes are parsed to how features are weighted in the final score. It's easy to build something that's accurate on paper but still quietly biased in practice, because bias often hides in signals that look neutral, like word choice or formatting style.

I also learned a lot about the limits of TF-IDF and keyword-based matching. It's a good starting point, but real hiring decisions depend on context that pure term-frequency approaches miss which pushed me to think more carefully about what "relevant experience" actually means in a specific industry context, not just which words appear on a resume.

What's next for ClearHire

  • Deeper domain intelligence — expanding skill and certification detection to cover more specialized roles across different industries
  • Stronger bias auditing — adding tools to measure and report on scoring fairness across demographic proxies, not just reduce bias informally

Built With

Share this project:

Updates

Submission history