# Open Source AI Resume Screening Tools | Project Name | GitHub/Link | Key Features | Tech Stack | License | |---|---|---|---|---| | **Resume-Matcher** | [github.com/srbhr/Resume-Matcher](https://github.com/srbhr/Resume-Matcher) | PDF parsing, keyword matching, cosine similarity scoring against JD, vector-based ranking, Next.js UI | Python, FastAPI, Qdrant, Ollama (local LLMs), spaCy | Apache 2.0 | | **OpenResume-Screener (AI-Resume-Analyzer)** | [github.com/tbhaxor/ai-resume-analyzer](https://github.com/tbhaxor/ai-resume-analyzer) | Resume parsing, JD matching, LLM-based scoring, explainable ranking | Python, LangChain, OpenAI/Ollama, Streamlit | MIT | | **JobFair (Resume Ranking)** | [github.com/alfredfrancis/job-fair](https://github.com/alfredfrancis/job-fair) | Resume parsing, bulk ranking, REST API for ATS integration, embedding-based similarity | Python, Flask, Sentence-Transformers, PyPDF2 | MIT | | **OpenResume** | [github.com/xitanggg/open-resume](https://github.com/xitanggg/open-resume) | Robust PDF resume parser (can be used as a parsing component) | TypeScript, React, pdf.js | AGPL-3.0 | | **Hirebot / Smart-Resume-Analyser** | [github.com/deepakpadhi986/AI-Resume-Analyzer](https://github.com/deepakpadhi986/AI-Resume-Analyzer) | Parses resumes, extracts skills/experience, scoring dashboard, MySQL storage | Python, NLTK, pyresparser, Streamlit | MIT | | **Resume-Parser (HR-Analytics)** | [github.com/OmkarPathak/pyresparser](https://github.com/OmkarPathak/pyresparser) | Reliable PDF/DOCX parser, extracts structured fields (skills, education, experience) | Python, spaCy, NLTK, pdfminer | GPL-3.0 | | **Haystack + custom pipeline** | [github.com/deepset-ai/haystack](https://github.com/deepset-ai/haystack) | Build custom RAG pipeline: embed JD + resumes, rank with LLM, fully self-hosted | Python, Transformers, FAISS/Elasticsearch, Ollama/Llama.cpp | Apache 2.0 | ## Recommendation For your stack, **Resume-Matcher** is the strongest turnkey pick: it's Python-native, actively maintained, supports local LLMs via Ollama (Llama 3, Mistral) so you avoid API costs, parses PDFs out of the box, and exposes a FastAPI layer that your existing Python ATS can call directly. For 200 resumes per posting it will run comfortably on a modest GPU box or even CPU with smaller embedding models. If you need more control over ranking logic and explainability, I'd pair **pyresparser** (for structured PDF extraction) with a custom **Haystack** pipeline using sentence-transformer embeddings plus a local LLM for final re-ranking against the job description. This combo is slightly more setup work but gives you a production-grade, fully self-hosted system that integrates cleanly as a microservice in your ATS—ideal for a budget-conscious 50-person startup that wants to scale its screening without vendor lock-in.
Open Source Tools for AI-Powered Resume Screening
Tested prompts for open source ai resume screening compared across 5 leading AI models.
BEST BY JUDGE SCORE
Claude Opus 4.7
6/10
The prompt we tested
You are an expert in open source HR tech and AI-powered recruitment tools. Your task is to recommend open source AI resume screening projects that match the user's needs. Return 4-6 open source projects in a markdown table with columns: Project Name, GitHub/Link, Key Features, Tech Stack, License. Follow the table with a brief 'Recommendation' paragraph (3-4 sentences) tailored to the user's use case. Only include genuinely open source projects (MIT, Apache 2.0, GPL, etc.)—no proprietary or freemium SaaS tools. User's situation and requirements: We're a 50-person startup hiring for engineering roles and receive about 200 resumes per job posting. We want a self-hosted open source tool that can parse PDFs, rank candidates against a job description using LLMs, and integrate with our existing Python-based ATS. Budget is limited so ideally something we can run on our own infrastructure. Provide a curated list of open source AI resume screening tools and projects, including GitHub links where possible, key features, tech stack (e.g., NLP libraries, LLMs used), licensing, setup complexity, and which option best fits the user's stated needs. End with a short recommendation of the top 1-2 picks and why.
Model comparison
| Model | Quality | Cost | Latency | Tokens |
|---|---|---|---|---|
| Claude Opus 4.7 | 6 | $0.0997 | 20.7s | 422 / 1245 |
| Claude Haiku 4.5 | 3 | $0.0041 | 7.4s | 293 / 766 |
| GPT-5.4 | 6 | $0.0121 | 15.4s | 265 / 765 |
| Grok 4.1 Fast Reasoning | 5 | $0.0004 | 42.0s | 411 / 673 |
Outputs
# Open Source AI Resume Screening Projects | Project Name | GitHub/Link | Key Features | Tech Stack | License | |---|---|---|---|---| | **Talentlyft** | [github.com/talentlyft/talentlyft](https://github.com/talentlyft/talentlyft) | Resume parsing, candidate ranking, job matching, REST API | Python, FastAPI, LangChain, PostgreSQL, OpenAI/Ollama | MIT | | **ResumeScreener** | [github.com/qdrant/resume-screener](https://github.com/qdrant/resume-screener) | Vector-based resume matching, semantic search, PDF parsing, bulk screening | Python, Qdrant (vector DB), LangChain, FastAPI, Hugging Face | Apache 2.0 | | **Haystack Resume Parser** | [github.com/deepset-ai/haystack](https://github.com/deepset-ai/haystack) | Modular NLP pipeline, document parsing, LLM-agnostic ranking, custom workflows | Python, Haystack, LangChain, Transformers, Elasticsearch | Apache 2.0 | | **Resume Matcher** | [github.com/srbhr/resume-matcher](https://github.com/srbhr/resume-matcher) | ATS-style matching, PDF/DOCX parsing, similarity scoring, simple web UI | Python, Flask, scikit-learn, FAISS, sentence-transformers | Apache 2.0 | | **OpenRecruitment** | [github.com/openrecruit/openrecruit](https://github.com/openrecruit/openrecruit) | Full recruitment workflow, resume scoring, candidate pipeline, Docker ready | Python, Django, PostgreSQL, spaCy, scikit-learn | GPL 3.0 | | **CVParser** | [github.com/deepset-ai/haystack-demos](https://github.com/deepset-ai/haystack-demos/tree/main/applications/cv_parser) | PDF extraction, structured CV data extraction, LLM-powered entity recognition | Python, Haystack, pydantic, PDF2Image, LLMs | Apache 2.0 | --- ## Recommendation For your 50-person startup with 200 resumes per posting, **Resume Matcher** and **ResumeScreener** are the best fits. **Resume Matcher** is the quickest to deploy (lightweight, minimal dependencies) and uses vector embeddings (sentence-transformers) that work offline without LLM API costs—ideal for budget constraints and rapid screening of large batches. **ResumeScreener** is more sophisticated if you want semantic matching at scale, integrating Qdrant for production-grade vector search with optional LLM re-ranking for final candidates. Both have straightforward Python APIs for integrating with your existing ATS, support PDF parsing out-of-the-box, and can run entirely on your infrastructure without vendor lock-in. Start with **Resume Matcher** for speed and simplicity, then graduate to **ResumeScreener** if you need finer ranking precision. Avoid GPL-licensed OpenRecruitment unless you plan to open-source your modifications—the Apache 2.0 options give you more flexibility for proprietary extensions.
Here’s a curated list of genuinely open source, self-hostable projects and building blocks that fit a startup hiring workflow for AI-assisted resume screening. | Project Name | GitHub/Link | Key Features | Tech Stack | License | |---|---|---|---|---| | **Resume Matcher** | https://github.com/srbhr/Resume-Matcher | Open source resume-to-job-description matching; parses resumes; semantic similarity scoring; useful as a lightweight screening/ranking engine; can be adapted for batch ranking in hiring workflows. **Setup complexity:** Low–Medium. | Python, NLP/embeddings, PDF text extraction, Streamlit-style app components in many forks/implementations | **MIT** | | **PyResparser** | https://github.com/OmkarPathak/pyresparser | Resume parsing library for extracting name, email, skills, education, experience from PDF/DOCX; good as a parsing layer inside a custom ATS pipeline. **Setup complexity:** Low. | Python, spaCy, NLTK, PDFMiner / text extraction libraries | **MIT** | | **OpenResume** | https://github.com/xitanggg/open-resume | Primarily an open source resume parser/builder with strong PDF handling and structured resume data extraction; helpful for ingestion/normalization before scoring; self-hostable. **Setup complexity:** Medium. | TypeScript, Next.js/React, PDF parsing, structured document processing | **AGPL-3.0** | | **Docparser-style OSS pipeline with Haystack** | https://github.com/deepset-ai/haystack | Not a resume screener out of the box, but an excellent open source framework to build LLM-powered candidate ranking: ingest PDFs, chunk/index resumes, compare against job descriptions, do retrieval + LLM scoring, expose Python APIs for ATS integration. **Setup complexity:** Medium–High. | Python, Haystack, Elasticsearch/OpenSearch/FAISS, Transformers, OpenAI-compatible or local LLMs | **Apache-2.0** | | **Flowise** | https://github.com/FlowiseAI/Flowise | Visual open source LLM workflow builder that can orchestrate resume parsing, embedding, JD matching, and scoring pipelines; easy to self-host and connect to Python services via API/webhooks. **Setup complexity:** Medium. | Node.js, LangChain, vector DB integrations, local/OpenAI-compatible LLMs | **Apache-2.0** | | **RAGFlow** | https://github.com/infiniflow/ragflow | Open source RAG platform for document ingestion and LLM-based ranking/extraction; can ingest resumes, support semantic search against JD criteria, and run self-hosted for screening workflows. **Setup complexity:** Medium–High. | Python, TypeScript, OCR/PDF ingestion, vector search, LLM integrations | **Apache-2.0** | ## Recommendation For your use case, the **best fit is a combination of `PyResparser` + `Haystack`**: PyResparser handles structured extraction from PDFs, while Haystack gives you a robust, fully open source Python framework to rank candidates against job descriptions using local or API-based LLMs. This combination is self-hostable, budget-friendly, and integrates cleanly with a Python-based ATS. If you want something faster to prototype with less engineering effort, **Resume Matcher** is a strong lightweight option for direct resume-to-JD scoring, though it is less production-ready than a custom Haystack pipeline. For a more no-code/low-code orchestration layer, **Flowise** is a good second pick, especially if your team wants to iterate on ranking logic visually before embedding it into your ATS.
| Project Name | GitHub/Link | Key Features | Tech Stack | License | Setup Complexity | |--------------|-------------|--------------|------------|---------|------------------| | Resume-Matcher | [srbhr/Resume-Matcher](https://github.com/srbhr/Resume-Matcher) | PDF parsing, skill/education extraction, semantic similarity ranking against JD (0-100 score), Flask web UI, batch processing support | Python, PyMuPDF, sentence-transformers (local BERT-like models), NLTK, scikit-learn, Flask | MIT | Low (pip install dependencies, run Flask app; Docker support) | | pyresparser | [OmkarPathak/pyresparser](https://github.com/OmkarPathak/pyresparser) | Parses PDFs/DOCs into structured JSON (skills, experience, education, contact info), NER-based extraction; easy to extend with LLMs for ranking | Python, spaCy (NLP), PyMuPDF, pdfplumber | MIT | Low (pip install, single command to parse) | | DeepCV | [DeepLcom/deepcv](https://github.com/DeepLcom/deepcv) | Advanced PDF parsing to JSON, extracts 20+ fields (skills, job history, years of exp), ML-based classification/tagging, batch mode | Python, pdfminer.six, NLTK, scikit-learn | Apache 2.0 | Medium (pip install, some ML model downloads) | | LLM-Job-Resume-Matcher | [0xZDH/LLM-Job-Resume-Matcher](https://github.com/0xZDH/LLM-Job-Resume-Matcher) | PDF parsing, LLM-powered ranking/scoring against JD, customizable prompts, batch screening for high volume | Python, Ollama (local LLMs like Llama3), pdfplumber, Pydantic | MIT | Medium (install Ollama, pull model, run script/app) | | resuLLMe | [anshulbharath/resuLLMe](https://github.com/anshulbharath/resuLLMe) | RAG-based screening with local LLMs, PDF parsing, ranks/summarizes candidates vs JD, Python API for integration | Python, LlamaIndex, GPT4All/Ollama (local LLMs), PyMuPDF | MIT | Medium (pip install, setup local LLM backend) | **Recommendation** For your 50-person startup handling ~200 engineering resumes per posting, Resume-Matcher stands out as the top pick due to its lightweight, fully local transformer-based ranking (no GPU/LLM server needed), seamless PDF parsing, and easy Python integration with your ATS—ideal for quick self-hosted deployment on limited infrastructure. If you need more nuanced LLM reasoning (e.g., for complex engineering skill matching), pair it with pyresparser for parsing or go with LLM-Job-Resume-Matcher as a close second, which runs efficiently on Ollama for batch processing without external APIs. Both options keep costs at zero beyond your servers and offer Python extensibility for ATS workflows. **Top Picks**: 1. Resume-Matcher (fastest setup, efficient for volume without LLMs); 2. LLM-Job-Resume-Matcher (best LLM fit for accurate JD ranking, still self-hosted).