An AI-powered Resume Analyzer built with FastAPI, Ollama, and Docker.
The application extracts structured candidate information from PDF resumes and compares resumes against job descriptions using a locally hosted Large Language Model (LLM).
- 📄 Analyze PDF resumes
- 🤖 AI-powered resume parsing using Ollama
- 🎯 Resume vs Job Description matching
- 📊 Structured JSON responses
- 🐳 Docker support
- ⚙️ Environment-based configuration
- ✅ Automated testing with Pytest
- 🚀 GitHub Actions CI pipeline
- 📚 Interactive Swagger API documentation
| Category | Technology |
|---|---|
| Backend | FastAPI |
| Language | Python 3.12 |
| LLM | Ollama (Llama 3.2) |
| Containerization | Docker |
| Testing | Pytest |
| CI/CD | GitHub Actions |
| Documentation | Swagger / OpenAPI |
resume-analyzer/
│
├── config/ # Application configuration
├── data/ # Sample resumes
├── exceptions/ # Custom exception handlers
├── models/ # Pydantic response models
├── prompts/ # LLM prompts
├── services/ # Business logic
├── tests/ # Unit tests
├── uploads/ # Temporary uploaded files
├── utils/ # Utility functions
│
├── app.py # FastAPI application
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── README.md
└── .env.example
Client
│
▼
FastAPI REST API
│
Upload Resume PDF
│
▼
Extract Text from PDF
│
▼
Generate LLM Prompt
│
▼
Ollama (Llama 3.2)
│
▼
Structured JSON Output
│
▼
API Response
git clone https://github.com/iamanishh/resume-analyzer.git
cd resume-analyzerpython -m venv .venvActivate it
Windows
.venv\Scripts\activateLinux/macOS
source .venv/bin/activatepip install -r requirements.txtDownload:
Pull the model
ollama pull llama3.2:3bStart Ollama
ollama serveCreate a .env file
MODEL_NAME=llama3.2:3b
OLLAMA_BASE_URL=http://localhost:11434uvicorn app:app --reloadOpen
http://127.0.0.1:8000/docs
Build the image
docker build -t resume-analyzer .Run the container
docker run --rm -p 8000:8000 resume-analyzerNote: When running inside Docker on Windows, configure
OLLAMA_BASE_URLto use:
http://host.docker.internal:11434
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
Health Check |
| POST | /analyze |
Analyze a Resume |
| POST | /analyze/match |
Compare Resume Against Job Description |
pytestGitHub Actions automatically
- Installs dependencies
- Runs tests
- Builds the Docker image
on every push to the main branch.


