@pranavraut033/ats-checker 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -22
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -5
package/README.md
CHANGED
|
@@ -1,47 +1,100 @@
|
|
|
1
1
|
# ats-checker
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A zero-dependency TypeScript library for evaluating resume compatibility with Applicant Tracking Systems (ATS). It parses resumes and job descriptions, calculates a deterministic score from 0 to 100, and provides actionable feedback to improve match rates.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install ats-checker
|
|
8
|
+
npm install @pranavraut033/ats-checker
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Usage
|
|
12
12
|
|
|
13
|
-
```
|
|
14
|
-
import { analyzeResume } from "ats-checker";
|
|
13
|
+
```typescript
|
|
14
|
+
import { analyzeResume } from "@pranavraut033/ats-checker";
|
|
15
15
|
|
|
16
|
-
const
|
|
17
|
-
resumeText:
|
|
18
|
-
|
|
16
|
+
const result = analyzeResume({
|
|
17
|
+
resumeText: `John Doe
|
|
18
|
+
Software Engineer with 5 years of experience in JavaScript and React.`,
|
|
19
|
+
jobDescription: `We are looking for a software engineer with JavaScript experience.`
|
|
19
20
|
});
|
|
21
|
+
|
|
22
|
+
console.log(result.score); // 78
|
|
23
|
+
console.log(result.breakdown.skills); // 85
|
|
24
|
+
console.log(result.suggestions); // ["Add more specific JavaScript frameworks", ...]
|
|
20
25
|
```
|
|
21
26
|
|
|
22
27
|
## Configuration
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
Adjust scoring priorities, define skill synonyms, and add custom rules:
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
const result = analyzeResume({
|
|
33
|
+
resumeText: "...",
|
|
34
|
+
jobDescription: "...",
|
|
35
|
+
config: {
|
|
36
|
+
weights: { skills: 0.4, experience: 0.3, keywords: 0.2, education: 0.1 },
|
|
37
|
+
skillAliases: { "javascript": ["js", "ecmascript"] },
|
|
38
|
+
rules: [{
|
|
39
|
+
id: "no-tables",
|
|
40
|
+
penalty: 10,
|
|
41
|
+
condition: (context) => context.resume.hasTables
|
|
42
|
+
}]
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
See [Configuration](docs/configuration.md) for complete options.
|
|
48
|
+
|
|
49
|
+
## Features
|
|
50
|
+
|
|
51
|
+
- Deterministic scoring based on skills, experience, keywords, and education
|
|
52
|
+
- Detects common ATS issues like missing sections or keyword overuse
|
|
53
|
+
- Customizable scoring weights and validation rules
|
|
54
|
+
- Optional LLM integration for enhanced suggestions
|
|
55
|
+
- Includes a web interface for testing (`npm run dev`)
|
|
56
|
+
- [Live Demo](https://pranavraut033.github.io/ats-checker/)
|
|
57
|
+
|
|
58
|
+
## API
|
|
59
|
+
|
|
60
|
+
### `analyzeResume(input: AnalyzeResumeInput): AnalyzeResumeResult`
|
|
61
|
+
|
|
62
|
+
Analyzes a resume against a job description.
|
|
63
|
+
|
|
64
|
+
**Input:**
|
|
65
|
+
- `resumeText: string` - The full text of the resume
|
|
66
|
+
- `jobDescription: string` - The job description text
|
|
67
|
+
- `config?: ATSConfig` - Optional configuration overrides
|
|
28
68
|
|
|
29
|
-
|
|
69
|
+
**Output:**
|
|
70
|
+
- `score: number` - Overall ATS score (0-100)
|
|
71
|
+
- `breakdown: ATSBreakdown` - Component scores
|
|
72
|
+
- `matchedKeywords: string[]` - Keywords found in both
|
|
73
|
+
- `missingKeywords: string[]` - Important keywords not in resume
|
|
74
|
+
- `suggestions: string[]` - Improvement recommendations
|
|
75
|
+
- `warnings: string[]` - Issues detected
|
|
30
76
|
|
|
31
77
|
## Development
|
|
32
78
|
|
|
33
79
|
```bash
|
|
34
80
|
npm install
|
|
35
|
-
npm run build
|
|
36
|
-
npm test
|
|
81
|
+
npm run build # Build to dist/
|
|
82
|
+
npm test # Run tests
|
|
83
|
+
npm run dev # Start web UI at http://localhost:3000
|
|
37
84
|
```
|
|
38
85
|
|
|
39
|
-
##
|
|
86
|
+
## Documentation
|
|
87
|
+
|
|
88
|
+
**Live Docs** (hosted on GitHub Pages):
|
|
89
|
+
- https://Pranavraut033.github.io/ats-checker/docs/
|
|
90
|
+
|
|
91
|
+
**Local Docs** (in repository):
|
|
92
|
+
- [Configuration Guide](docs/configuration.md)
|
|
93
|
+
- [LLM Integration](docs/llm-integration.md)
|
|
94
|
+
- [Web Interface](docs/ui.md)
|
|
95
|
+
- [Architecture](docs/architecture.md)
|
|
96
|
+
|
|
97
|
+
## License
|
|
40
98
|
|
|
41
|
-
|
|
42
|
-
- Deterministic, explainable scoring (0-100)
|
|
43
|
-
- Customizable weights, rules, and industry profiles
|
|
44
|
-
- Parses resumes and job descriptions
|
|
45
|
-
- Detects ATS-unfriendly patterns (tables, keyword stuffing)
|
|
46
|
-
- Generates actionable suggestions
|
|
99
|
+
MIT
|
|
47
100
|
|
package/dist/index.d.mts
CHANGED
|
@@ -382,6 +382,7 @@ declare const LLMPrompts: {
|
|
|
382
382
|
suggestionEnhancementSystem: string;
|
|
383
383
|
/**
|
|
384
384
|
* User prompt for suggestion enhancement
|
|
385
|
+
* IMPORTANT: Includes strict JSON schema to ensure consistent output across all LLM providers
|
|
385
386
|
*/
|
|
386
387
|
suggestionEnhancementUser: (suggestions: string[]) => string;
|
|
387
388
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -382,6 +382,7 @@ declare const LLMPrompts: {
|
|
|
382
382
|
suggestionEnhancementSystem: string;
|
|
383
383
|
/**
|
|
384
384
|
* User prompt for suggestion enhancement
|
|
385
|
+
* IMPORTANT: Includes strict JSON schema to ensure consistent output across all LLM providers
|
|
385
386
|
*/
|
|
386
387
|
suggestionEnhancementUser: (suggestions: string[]) => string;
|
|
387
388
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1100,11 +1100,23 @@ Maintain the core message but make it more concrete.
|
|
|
1100
1100
|
Return ONLY valid JSON.`,
|
|
1101
1101
|
/**
|
|
1102
1102
|
* User prompt for suggestion enhancement
|
|
1103
|
+
* IMPORTANT: Includes strict JSON schema to ensure consistent output across all LLM providers
|
|
1103
1104
|
*/
|
|
1104
1105
|
suggestionEnhancementUser: (suggestions) => `Enhance these suggestions for clarity and actionability:
|
|
1105
1106
|
${suggestions.map((s) => `- ${s}`).join("\n")}
|
|
1106
1107
|
|
|
1107
|
-
Make them specific and measurable where possible
|
|
1108
|
+
Make them specific and measurable where possible.
|
|
1109
|
+
|
|
1110
|
+
CRITICAL: You MUST return ONLY valid JSON in this exact format (no markdown, no extra text):
|
|
1111
|
+
{
|
|
1112
|
+
"suggestions": [
|
|
1113
|
+
{
|
|
1114
|
+
"original": "the original suggestion text",
|
|
1115
|
+
"enhanced": "your improved, more actionable version",
|
|
1116
|
+
"actionable": true
|
|
1117
|
+
}
|
|
1118
|
+
]
|
|
1119
|
+
}`,
|
|
1108
1120
|
/**
|
|
1109
1121
|
* System prompt for JD clarification
|
|
1110
1122
|
*/
|