@pranavraut033/ats-checker 0.2.0 → 1.0.1

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 CHANGED
@@ -1,47 +1,96 @@
1
1
  # ats-checker
2
2
 
3
- Deterministic, configurable ATS (Applicant Tracking System) compatibility checker with no external dependencies. Provides a single entry point `analyzeResume()` and extensible configuration for weights, skills, rules, and profiles.
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
- ## Quick start
11
+ ## Usage
12
12
 
13
- ```ts
14
- import { analyzeResume } from "ats-checker";
13
+ ```typescript
14
+ import { analyzeResume } from "@pranavraut033/ats-checker";
15
15
 
16
- const { score, breakdown, suggestions } = analyzeResume({
17
- resumeText: "...",
18
- jobDescription: "..."
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
- - **weights**: adjust scoring weight for skills, experience, keywords, and education.
25
- - **skillAliases**: normalize synonyms to canonical skills.
26
- - **profile**: specify mandatory/optional skills and minimum years of experience.
27
- - **rules**: add custom penalties via functions that inspect parsed resume/job data.
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
28
50
 
29
- See `src/types` for full type definitions.
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
68
+
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
- ## Features
86
+ ## Documentation
87
+
88
+ - [Configuration Guide](docs/configuration.md)
89
+ - [LLM Integration](docs/llm-integration.md)
90
+ - [Web Interface](docs/ui.md)
91
+ - [Architecture](docs/architecture.md)
92
+
93
+ ## License
40
94
 
41
- - Zero runtime dependencies
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
95
+ MIT
47
96
 
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
  */