ATS-Resume-checker

Enhanced ATS Resume Scorer - New Features

What’s New

For Hiring Managers

1. Custom Skills Input

2. AI-Powered Skill Extraction

3. Smart Skill Matching

4. Response Status


New Workflow

Before:

Upload Resume → Analyze with predefined skills → Get Score

After:

Upload Resume → Choose Skills → Auto-extract with AI → Intelligent Match → Get Score

Option 1: Provide Skills Explicitly
├─ Fast (10-15 sec)
├─ Precise matching
└─ Full control

Option 2: Let AI Extract
├─ Smart extraction (20-30 sec)
├─ Discovers relevant skills
└─ Adaptive to any role

Option 3: Hybrid
├─ Provide core skills
├─ AI finds related ones
└─ Best of both worlds

Use Cases

Scenario 1: Well-Defined Role

Hiring for: "Senior Python Developer"

Action: Enter specific skills
"Python, Django, FastAPI, PostgreSQL, Docker, 
AWS EC2, AWS RDS, REST API, Git, Jenkins"

Result: Precise matching against known requirements

Scenario 2: Evolving Technology

Hiring for: "Cloud Solutions Architect (Azure)"

Action: Leave skills empty, paste full JD

Result: Ollama finds:
- Azure infrastructure
- High availability
- Disaster recovery
- Architecture design
- Security compliance
- Identity management
- ... (20+ more auto-extracted)

Scenario 3: Cross-functional Role

Hiring for: "Tech Lead"

Action: Provide base skills + let AI enhance
"Python, Team Leadership, Communication, Mentoring"

Ollama adds:
- Project management
- Technical architecture
- CI/CD pipelines
- Software design patterns

🔧 Technical Implementation

Backend Changes

app.py - Enhanced /score Endpoint

# If no skills provided, use Ollama to extract them
if not required_keywords:
    ollama = get_ollama_scorer()
    if ollama.available:
        extracted_skills = ollama.extract_skills_with_llm(job_desc)
        # Top 25 skills from AI extraction
        required_keywords = ', '.join(extracted_skills[:25])

# Add metadata to response
result['skills_source'] = 'user_provided' or 'ai_extracted'
result['ollama_status'] = 'enabled' or 'disabled'

enhanced_matching.py - New Validation Module

# Validate skills with Ollama for confidence scoring
validate_skills_with_ollama(provided_skills, job_desc, resume)

# Extract skills intelligently from job description
enhance_skill_extraction(job_description)

Frontend Changes

hiring_manager.html - New Skills Input

<label for="required_keywords">Required Skills (Optional):</label>
<textarea id="required_keywords" name="required_keywords" 
  placeholder="Python, AWS, Docker, Kubernetes...
Leave empty to auto-extract from job description">
</textarea>

Expected Outcomes

Option 1: Explicit Skills (Fastest)

| Metric | Value | |——–|——-| | Time | 10-15 seconds | | Precision | Very High (100% control) | | Coverage | As provided | | Effort | Manual list creation |

Option 2: AI Extraction (Smartest)

| Metric | Value | |——–|——-| | Time | 20-30 seconds | | Precision | High (LLM-based) | | Coverage | Comprehensive | | Effort | Zero - automatic |

| Metric | Value | |——–|——-| | Time | 20-30 seconds | | Precision | Very High | | Coverage | Excellent | | Effort | Minimal |


Examples

Example 1: AWS Solutions Architect

INPUT:
Skills: "AWS EC2, AWS S3, Lambda, DynamoDB, CloudFormation"
JD: "...design scalable AWS solutions, implement disaster recovery..."

OUTPUT:
- Matched: 5 (all provided skills)
- Extracted: 8 more (Aurora, Route53, VPC, etc.)
- Total Skills Checked: 13
- Score: 65/100

Example 2: Azure Cloud Engineer

INPUT:
Skills: (empty - let AI extract)
JD: "...Azure infrastructure, high availability, 
backup/disaster recovery, identity management..."

OUTPUT:
- Extracted: 22 skills automatically
  - Azure Virtual Machines
  - Azure Networking
  - VPN Gateway
  - ExpressRoute
  - Azure AD
  - Backup/DR strategies
  - ... and 16 more

- Matched: 8/22
- Score: 42/100

Testing the New Features

Test 1: Explicit Skills

1. Go to /hiring-manager
2. Enter skills: "Python, Docker, AWS"
3. Paste job description
4. Upload resume
5. Check results show skills_source = "user_provided"

Test 2: AI Extraction

1. Go to /hiring-manager
2. Leave skills empty
3. Paste job description
4. Upload resume
5. Check results show skills_source = "ai_extracted"
6. Note: Takes 20-30 seconds (Ollama processing)

Test 3: Hybrid Approach

1. Go to /hiring-manager
2. Enter: "Azure, Python" (just core skills)
3. Paste full job description
4. Upload resume
5. System uses provided skills + extracts additional ones

Configuration

Using FAST Mode (No AI)

In performance_config.py:

DEFAULT_MODE = PerformanceConfig.FAST
# Skills extraction: TF-IDF only (instant)
# No Ollama calls (fastest)

Using BALANCED Mode (Default)

DEFAULT_MODE = PerformanceConfig.BALANCED
# Skills extraction: TF-IDF + user input
# Optional Ollama for deep analysis
# 20-30 seconds expected

Using QUALITY Mode (Full AI)

DEFAULT_MODE = PerformanceConfig.QUALITY
# Skills extraction: Ollama LLM (intelligent)
# Full Ollama analysis (comprehensive)
# 40-60 seconds expected

Benefits

For Hiring Managers

No More Guesswork - AI extracts relevant skills Saves Time - Don’t manually list 50+ skills Flexible - Use AI or provide explicit skills Adaptive - Works with new technologies Transparent - Knows what criteria are used

For Candidates

Fairer Scoring - Relevant skills detected Clearer Feedback - See exactly what skills matter Growth Path - Understand what to learn

For Organization

Better Candidates - More accurate matching Faster Hiring - Automated skill extraction Scalable - Works for any role Data-Driven - Metrics on skill importance


Quick Start

Step 1: Try Explicit Skills

1. Start app: python app.py
2. Go to http://localhost:5000/hiring-manager
3. Enter skills: "Python, Docker, AWS"
4. Upload resume + job description
5. See how it scores

Step 2: Try AI Extraction

1. Same as above, but leave Skills field empty
2. App uses Ollama to extract skills (if running)
3. Takes 20-30 seconds
4. See AI-extracted results

Step 3: Mix & Match

1. Enter base skills: "Python, AWS"
2. Leave other skills to AI
3. See combined results
4. Best of both worlds!

Documentation


Ready to Use!

All enhancements are backward compatible:

Start using it now:

python app.py

Visit: http://localhost:5000/hiring-manager