Skip to content

ParamVerma535/skillsync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 SkillSync — AI Resume × Job Description Gap Analyzer

Paste your resume + any job description → get an AI-powered gap analysis, match score, skill breakdown, and a prioritized action plan in seconds.


✨ What It Does

SkillSync uses Claude (claude-opus-4-5) to deeply analyze the semantic relationship between your resume and a target job description — going far beyond simple keyword matching.

Feature Description
📊 Match Score 0–100% semantic match using LLM reasoning
Matched Skills Skills your resume already demonstrates
Missing Skills Critical gaps you need to address
🎯 Action Plan Prioritized steps (High / Medium / Low)
🏷️ Keywords ATS-optimized keywords to add to your resume
⚠️ Interview Risks Weak points a recruiter might probe
💪 Strengths Where you stand out for this specific role

🖼️ Demo

Resume: 3 years Python, ML Engineer, scikit-learn, pandas, FastAPI
JD:     Senior MLOps Engineer — Kubernetes, MLflow, Airflow, Terraform

→ Match Score: 52%
→ Missing: Kubernetes, MLflow, Airflow, Terraform, CI/CD
→ Action: "Add a personal project deploying a model to Kubernetes (minikube)"
→ Risk: "No production deployment experience mentioned"

🏗️ Architecture

User Input (Resume + JD)
        │
        ▼
┌──────────────────┐
│   Streamlit UI   │  ← app.py
└────────┬─────────┘
         │  structured prompt
         ▼
┌──────────────────────────┐
│  Anthropic Claude API    │  ← claude-opus-4-5
│  (claude-opus-4-5)       │
└────────┬─────────────────┘
         │  JSON response
         ▼
┌──────────────────┐
│  Parsed Results  │  → Score, Skills, Actions, Risks
└──────────────────┘

Key design decisions:

  • LLM-as-reasoner: Claude doesn't just match keywords — it infers transferable skills, notices context, and understands job-level seniority
  • Structured JSON output: Prompt engineering forces Claude to return strict JSON, making the output reliably parseable
  • No vector DB needed: For single document comparison, a well-crafted prompt outperforms embeddings + cosine similarity at a fraction of the complexity

🚀 Quick Start

1. Clone the repo

git clone https://github.com/ParamVerma535/skillsync.git
cd skillsync

2. Install dependencies

pip install -r requirements.txt

3. Set your API key

cp .env.example .env
# Edit .env and paste your Anthropic API key
# Get one free at: https://console.anthropic.com

Or export it directly:

export ANTHROPIC_API_KEY=sk-ant-...

4. Run the app

streamlit run app.py

Open http://localhost:8501 in your browser.


🧠 Prompt Engineering Highlights

The core of this project is a carefully engineered prompt. Key techniques used:

# 1. Role assignment for expertise framing
"You are an expert technical recruiter and career coach."

# 2. Strict JSON-only output to prevent markdown wrapping
"Return ONLY a JSON object with no markdown, no backticks."

# 3. Explicit schema definition to force structured output
# (see the full JSON schema in app.py)

# 4. Sanitization before parsing
raw = re.sub(r"```json|```", "", raw).strip()
result = json.loads(raw)

This pattern — role + constraint + schema + sanitize — is the foundation of reliable LLM output parsing.


📁 Project Structure

skillsync/
├── app.py              # Main Streamlit application
├── requirements.txt    # Python dependencies
├── .env.example        # API key template
├── .gitignore
└── README.md

💡 Possible Extensions

  • Upload PDF resume (use pypdf or pdfminer)
  • Batch analyze multiple JDs at once
  • Export results as PDF report
  • Add FAISS/ChromaDB for multi-resume management
  • Fine-tune scoring with domain-specific weights
  • Streamlit Cloud / HuggingFace Spaces deployment

🛠️ Tech Stack

  • Frontend: Streamlit — rapid Python web UI
  • LLM: Anthropic Claudeclaude-opus-4-5
  • Language: Python 3.9+
  • Prompt Strategy: Structured JSON output via zero-shot instruction

🤝 Contributing

PRs welcome! If you extend this with PDF upload, batch processing, or a new analysis dimension — open a PR.


📄 License

MIT — use freely, modify freely, credit appreciated.


Built with ❤️ and the Anthropic Claude API

About

AI-powered resume × job description gap analyzer using Claude API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages