The AI-powered Resume/ATS Scoring Assistant automates screening and scoring resumes using large language models (LLMs). It evaluates resumes against job descriptions, offering feedback and recommendations to improve efficiency and accuracy in applicant tracking systems (ATS).
This project uses a microservices architecture with:
- Frontend UI - React-based interface for resume uploads and results
- Backend Server - Node.js/Express for file handling and service orchestration
- AI Services:
- Job Title Detector - Extracts job titles from the job descriptions
- Keywords Extractor - Uses LLM to identify relevant skills and keywords
- Match Scorer - Uses LLM to evaluate resume-job compatibility
Prerequisites
- macOS (for brew installation)
- Docker Desktop
- Internet connection
- OpenAI API key (for keyword extraction)
- Install Homebrew
make install-brew
- Install required tools
make install-tools
- Create a KinD Kubernetes cluster.
make kind-create
- Change context
kubectx kind-resume-ats-dev-cluster-
Use
k9sto manage the cluster. -
Create the OpenAI API key secret. Note: This exposes your key to the console and history.
kubectl create secret generic openai-api-key --from-literal=OPENAI_API_KEY=your-actual-openai-api-key(Preferably) Insert your OpenAI key in deployment/openai-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: openai-api-key # Ensure this name matches what deployments expect
type: Opaque
stringData:
OPENAI_API_KEY: "sk-..." # <-- Put your actual key here
Then run kubectl apply -f deployment/openai-secret.yaml.
- Deploy backend microservices
make deploy-backend-services
- Deploy frontend services
make deploy-frontend-services
- Deploy the ingress.
make deploy-ingress
Note: The ingress status will initially be stuck in Pending.
- Label the node for ingress
# Get the node name
kubectl get nodes
# Add the ingress-ready label (replace with your node name)
kubectl label node resume-ats-dev-cluster-control-plane ingress-ready=true- Access the page http://localhost:30211.