Skip to content

mission-possible: Resume Analyzer Agent#99

Open
Harini-R-2024 wants to merge 1 commit intoLamatic:mainfrom
Harini-R-2024:mission-possible
Open

mission-possible: Resume Analyzer Agent#99
Harini-R-2024 wants to merge 1 commit intoLamatic:mainfrom
Harini-R-2024:mission-possible

Conversation

@Harini-R-2024
Copy link
Copy Markdown

@Harini-R-2024 Harini-R-2024 commented Mar 24, 2026

🚀 Resume Analyzer Agent

This agent analyzes a resume and compares it with a job description.

Features:

  • Skill matching
  • Match percentage calculation
  • Suggestions for improvement

Built using Lamatic AgentKit.

Resume Analyzer Agent

  • Adds a new Resume Analyzer Agent to compare resumes against job descriptions

  • Files added:

    • README.md - Agent documentation and usage guide
    • agent.py - Core logic with analyze_resume() function
    • agent.yaml - Agent manifest configuration
  • Key features:

    • Skill matching between resume and job description
    • Match percentage calculation (intersection of keywords / job description words)
    • Improvement suggestions (generated when match percentage < 50%)
    • Returns matched skills list, percentage score, and recommendations

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 24, 2026

📝 Walkthrough

Walkthrough

A new Resume Analyzer Agent is introduced that compares resume text against a job description to calculate skill matches and match percentages. The implementation includes documentation, a Python function that performs keyword matching and percentage calculation, and an agent manifest configuration file.

Changes

Cohort / File(s) Summary
Resume Analyzer Agent
kits/resume-analyzer-agent/README.md, kits/resume-analyzer-agent/agent.py, kits/resume-analyzer-agent/agent.yaml
Added new agent implementation with documentation. The agent.py contains an analyze_resume() function that compares resume text to job description by lowercasing and splitting both inputs into word sets, calculating matched skills, and computing match percentage (with improvement suggestions when below 50%). The agent.yaml defines the agent manifest with name, description, and entrypoint configuration.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'mission-possible: Resume Analyzer Agent' clearly and specifically describes the main addition: a new Resume Analyzer Agent component.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
kits/resume-analyzer-agent/agent.py (1)

4-5: Use stronger tokenization than whitespace split.

Current splitting misses punctuation-normalized matches and can reduce match quality. A small regex tokenizer will improve accuracy.

Proposed refactor
+import re
+
 def analyze_resume(resume_text, job_description):
     result = {}
 
-    resume_words = set(resume_text.lower().split())
-    job_words = set(job_description.lower().split())
+    def tokenize(text):
+        return set(re.findall(r"[a-zA-Z0-9+#.]+", text.lower()))
+
+    resume_words = tokenize(resume_text)
+    job_words = tokenize(job_description)

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: daa18ca8-7a74-4b87-8cc7-22332aca86fc

📥 Commits

Reviewing files that changed from the base of the PR and between cd0d519 and d411e59.

📒 Files selected for processing (3)
  • kits/resume-analyzer-agent/README.md
  • kits/resume-analyzer-agent/agent.py
  • kits/resume-analyzer-agent/agent.yaml

Comment on lines +1 to +5
def analyze_resume(resume_text, job_description):
result = {}

resume_words = set(resume_text.lower().split())
job_words = set(job_description.lower().split())
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Validate input types at function entry.

If either argument is None or non-string, .lower() will fail at runtime. Add a guard for predictable behavior.

Proposed fix
 def analyze_resume(resume_text, job_description):
+    if not isinstance(resume_text, str) or not isinstance(job_description, str):
+        raise TypeError("resume_text and job_description must be strings")
+
     result = {}

Comment on lines +9 to +10
result["matched_skills"] = list(matched_skills)
result["match_percentage"] = round(len(matched_skills) / len(job_words) * 100, 2) if job_words else 0
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Return matched_skills in a deterministic order.

list(matched_skills) is order-unstable because sets are unordered. That can create flaky snapshots/tests and inconsistent responses.

Proposed fix
-    result["matched_skills"] = list(matched_skills)
+    result["matched_skills"] = sorted(matched_skills)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
result["matched_skills"] = list(matched_skills)
result["match_percentage"] = round(len(matched_skills) / len(job_words) * 100, 2) if job_words else 0
result["matched_skills"] = sorted(matched_skills)
result["match_percentage"] = round(len(matched_skills) / len(job_words) * 100, 2) if job_words else 0

Comment on lines +1 to +21
# Resume Analyzer Agent

## 🚀 Overview
This AI agent analyzes a resume and compares it with a job description.

## 🔥 Features
- Extracts matching skills
- Calculates match percentage
- Provides improvement suggestions

## 🛠️ How it Works
1. Takes resume text
2. Takes job description
3. Compares keywords
4. Returns match score and suggestions

## 💡 Use Case
Helps job seekers improve their resumes for better job matching.

## ⚡ Built With
Lamatic AgentKit No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add required Setup, Environment Variables, and Usage sections.

The README is present, but it does not yet document setup steps, env vars, or usage instructions, which are required for kits.

Proposed documentation patch
 # Resume Analyzer Agent
 
 ## 🚀 Overview
 This AI agent analyzes a resume and compares it with a job description.
+
+## 🧰 Setup
+1. Ensure Python is installed.
+2. Navigate to this kit directory.
+3. Run the agent:
+   ```bash
+   python agent.py
+   ```
+
+## 🔐 Environment Variables
+- None required for the current implementation.
 
 ## 🔥 Features
 - Extracts matching skills
 - Calculates match percentage
 - Provides improvement suggestions
@@
 ## 💡 Use Case
 Helps job seekers improve their resumes for better job matching.
 
+## ▶️ Usage
+You can call the analyzer directly:
+
+```python
+from agent import analyze_resume
+
+resume = "Python developer with API and backend experience"
+job = "Looking for Python backend developer with API skills"
+print(analyze_resume(resume, job))
+```
+
 ## ⚡ Built With
 Lamatic AgentKit

As per coding guidelines, "kits/**/README.md: Every kit must have a README.md that documents setup, environment variables, and usage".

Comment on lines +7 to +15
- Extracts matching skills
- Calculates match percentage
- Provides improvement suggestions

## 🛠️ How it Works
1. Takes resume text
2. Takes job description
3. Compares keywords
4. Returns match score and suggestions
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Align feature wording with actual behavior.

The implementation does keyword overlap, not true skill extraction. Consider wording this as “matching keywords/tokens” to avoid overstating capability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants