ResumeForgeLint

ATS (Application Tracking System) resume validation & compatibility tool. Lint your plain-text resume for ATS readability before you apply.

Companion to ResumeForge — generate ATS-friendly styled PDFs from plain text

Installation

git clone git@github.com:JohnStrong/ResumeForgeLint.git
cd ResumeForgeLint
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Requires Python 3.10+.

Features (v1)

Note: Profile/Summary and References are not scored in v1. Most ATS systems do not parse these sections for structured data, and modern best practice is to omit References entirely. They do not contribute to the score positively or negatively.

Scoring Rubrics

Header (20 points)

Work Experience (20 points)

Skills (20 points)

Education (20 points)

Commands

validate

Analyse a .txt resume, score each section, and print a summary report.

resumeforgelint validate --input resume.txt

What it does:

  1. Reads the plain-text resume
  2. Detects sections via fuzzy heading matching (synonym sets)
  3. Scores each section and flags issues (critical / warning / info)
  4. Prints a summary to stdout:
    • Overall rating (🟢 Good / 🟡 Needs Work / 🔴 Poor)
    • Per-section breakdown with score and top issue

Examples

Good resume

All required sections present with complete information. Scores 80/80 (100%).

$ resumeforgelint validate --input examples/good_header.txt
Overall: 🟢 Good (80/80)

  Header             🟢  20/20
  Experience         🟢  20/20
  Education          🟢  20/20
  Skills             🟢  20/20

Needs Work

Has all sections but Education is missing degree type and institution. Experience lacks action verbs. Scores 62/80 (77%).

$ resumeforgelint validate --input examples/needs_work.txt
Overall: 🟡 Needs Work (62/80)

  Header             🟢  20/20
  Experience         🟢  17/20  ⚠ Bullet points should start with strong action verbs
  Education          🔴   5/20  ✖ Education should include a degree type (e.g. BSc, MSc, PhD)
  Skills             🟢  20/20

Poor resume

Missing name in header, no company/role or dates in experience, no technical keywords in skills, and no education section content. Scores 8/80 (10%).

$ resumeforgelint validate --input examples/bad_all.txt
Overall: 🔴 Poor (8/80)

  Header             🔴   0/20  ✖ Resume should contain the applicants full name
  Experience         🔴   0/20  ✖ Each role should include company name and role title
  Skills             🔴   8/20  ✖ Skills section should contain technical keywords
  Education          🔴   0/20  ✖ Education section should not be empty