CV Insight AI is an end-to-end Streamlit-based application designed to intelligently analyze, score, summarize, and conduct Q&A on a batch of candidate CVs.
This app runs entirely locally, integrating Semantic Text Matching, a GGUF-based LLM (via Llama.cpp), and Retrieval-Augmented Generation (RAG) using a Faiss vector database.
💡 Parsing & Scoring Algorithm Details: For an in-depth explanation of how the CV parsing and semantic scoring processes work, see the Kaggle notebook: End-to-End CV Parsing and Semantic Scoring
- Automated CV Parsing: Reads and extracts essential information from PDF files (Experience, Education, Skills, etc.).
- Semantic Scoring: Calculates a match score between the candidate's CV and the input Job Title, Job Description, and Required Skills.
- AI Summary (Pros & Cons): Generates a concise summary highlighting the Strengths and Weaknesses of each shortlisted candidate using a local LLM.
- Chat with Candidates (RAG Q&A): Ask free-form questions about shortlisted candidates. The AI retrieves context from the vector database (Faiss) and answers based purely on the CV data.
This application is built with Python 3.10 and a fully pinned dependency stack to ensure stability across ML, RAG, and local LLM workflows.
torch==2.0.1transformers==4.30.2sentence-transformers==2.2.2(used with the all-MiniLM-L6-v2 embedding model)huggingface_hub==0.14.1numpy==1.26.4(pinned to avoid binary incompatibility with PyTorch and FAISS on Windows)
faiss-cpu==1.13.2(vector similarity search for document retrieval)llama-cpp-python==0.3.16(efficient local inference for GGUF LLM models)
pandas==2.3.3scikit-learn==1.7.2PyMuPDF==1.26.7(PDF text extraction and parsing)
streamlit==1.54.0(web-based UI / frontend)plotly==6.5.2
python-dotenv==1.2.1(environment variable management)requests(HTTP requests for external integrations)
-
Python 3.10 is required. Other versions may cause runtime or binary issues.
-
All dependencies are version-pinned to prevent:
- NumPy / PyTorch ABI mismatches
- FAISS runtime errors
- Incompatibilities with local LLM inference
-
Tested on Windows (CPU-only) environments.
-
Use
requirements.txtfor installing dependencies in a fresh virtual environment.
git clone https://github.com/your-username/cv-insight-ai.git
cd cv-insight-ai- Download a GGUF model from HuggingFace (e.g.,
gemma-3-4b-it-q4_0.gguf). - Create a folder named
llmin the project root. - Save the downloaded
.gguffile into thellm/folder.
Create a .env file in the project root and specify the path to your GGUF model:
MODEL_PATH=llm/gemma-3-4b-it-q4_0.gguf- Double-click
run.bat(Windows) to auto-setup the virtual environment and install dependencies. - On first run, the script will take longer as it creates
venvand installs all libraries fromrequirements.txt. - The Streamlit app will open at
http://localhost:8501. - Subsequent runs will launch instantly since the environment is already prepared.
-
Input Job Data: Enter Job Title, Job Description, Required Skills, and Highlight Keywords in the sidebar. Adjust weights as needed.
-
Choose CV Input Mode:
- Upload PDFs: Select individual CV files.
- Select Folder: Batch-process multiple CVs from a local folder.
-
Start Analysis: Click "Analyze CVs". The system parses, scores, visualizes (Radar & Bar Charts), and generates AI summaries.
-
Q&A (RAG): At the bottom of results, type questions like "Who is the most suitable candidate to handle SQL databases?" for AI recommendations based on CV data.
Built with ❤️ using Python & Streamlit.