Resume Matcher – BERT Model (Domain-Adapted MiniLM)

This repository contains a domain-adapted BERT model (MiniLM variant) designed for semantic matching of resumes and job descriptions.
It also includes a pre-built FAISS index of job embeddings for fast similarity search.


Repository Contents

  • applicant/
    • jobs.faiss – FAISS index with pre-computed embeddings for job descriptions.
  • dapt_minilm_huggingface/
    • Fine-tuned model files (config, tokenizer, vocabulary, and weights).

How to Use

Applicant Use Case

An applicant can provide a single resume and retrieve the top-k most relevant job titles, based on semantic similarity rather than keyword overlap.

from sentence_transformers import SentenceTransformer
import faiss, numpy as np

# Load model
model = SentenceTransformer("your-username/resume-matcher-bert/dapt_minilm_huggingface")

# Encode resume
resume_text = "Experienced data scientist skilled in NLP and computer vision."
resume_vec = model.encode([resume_text])

# Load FAISS index
index = faiss.read_index("applicant/jobs.faiss")

# Search top matches
D, I = index.search(np.array(resume_vec, dtype="float32"), k=5)
print("Top matching job indices:", I[0])

Recruiter Use Case

A recruiter can upload a job description and a set of candidate resumes. The system encodes all documents with the MiniLM model and ranks the resumes according to their semantic closeness to the job description.

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

# Load model
model = SentenceTransformer("your-username/resume-matcher-bert/dapt_minilm_huggingface")

# Example job description
job_desc = "Hiring a data scientist with experience in Python, NLP, and deep learning."
job_vec = model.encode([job_desc])

# Example resumes
resumes = [
    "Software engineer with Java and Spring Boot background.",
    "Data scientist with Python, NLP, and machine learning expertise.",
    "Frontend developer with React and UI/UX design skills."
]

# Encode resumes
resume_matrix = model.encode(resumes)

# Compute similarity
scores = cosine_similarity([job_vec], resume_matrix)[0]

# Rank resumes
ranked_indices = np.argsort(scores)[::-1]
for idx in ranked_indices:
    print(f"Resume: {resumes[idx]} | Score: {scores[idx]:.4f}")

License

This project is released under the Apache License 2.0. It may be used for both academic and commercial purposes, with proper attribution.


Notes

  • Use this model when you need contextual, semantic understanding rather than keyword matching.
  • If you require a lighter baseline or need faster results, refer to the TF-IDF version.
Downloads last month
97
Safetensors
Model size
22.7M params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for Om-Shandilya/resume-matcher-bert

Finetuned
(512)
this model

Spaces using Om-Shandilya/resume-matcher-bert 2