A practical ATS analyzer that scores resumes the way real world Applicant Tracking Systems do.
This project focuses on structural correctness, parsing reliability, and common ATS failure modes , not resume templates or keyword stuffing.
Most ATS checkers focus on selling templates or inflating scores through keyword matching. This tool surfaces real parsing and structural issues that cause ATS rejection — independent of resume design, formatting styles, or templates.
Key differentiators:
- No template sales or upsells
- No keyword-stuffing advice
- Focus on real ATS parsing issues
- Honest, actionable feedback
- Privacy-first,no data storage
| 1. | Analyzes PDF resumes only |
| 2. | Generates an overall ATS compatibility score out of 100 |
| 3. | Breaks scoring into four clear categories — Tailoring, Content, Sections, ATS Essentials |
| 4. | Identifies concrete reasons an ATS may reject a resume |
| 5. | Provides specific, actionable fixes for every issue detected |
| 6. | Produces consistent results across both the score and its breakdown |
- PDF Parsing : The resume is parsed on the backend using rule-based analysis
- Structure Evaluation : Section layout, headers, and parsing signals are checked
- Scoring : Each category is scored using ATS-safe heuristics
- Output : Results are returned as structured data
- Rendering : The frontend renders the output exactly as produced by the backend
- No Persistence : No resume data is stored anywhere, ever
- Strict Evaluation : Scoring is intentionally strict, flagging even minor issues
|
Backend
|
Frontend
|
Terminal 1 — Backend
cd backend
./.venv/Scripts/Activate.ps1
pip install -r requirements.txt
uvicorn app:app --reloadTerminal 2 — Frontend
cd frontend
npm run devClick the link shown in Terminal 2 to open the app:
Expected Output: http://localhost:5173/
Here's a preview of the dashboard when result appears
- No resume data is stored : Processing happens in-memory and on-disk only for the duration of a single request
- No third-party APIs : Fully self-contained analysis
- Per-request processing : Each analysis is independent
- No tracking : No analytics, no user tracking
- Client-side storage : results are only cached temporarily in the browser session
Every resume is scored out of 100 total points, split across four categories:
| Category | Points | What It Measures |
|---|---|---|
| Tailoring | 30 | Job relevance, professional title clarity, action-verb usage |
| Content | 25 | Quantifiable achievements, bullet quality, experience density |
| Sections | 15 | Presence and organization of standard resume sections |
| ATS Essentials | 30 | Parseability, header hygiene, contact info, structural safety |
| Total | 100 |
This project is licensed under the MIT License.
You are free to:
- Use the code for personal or commercial projects
- Modify and distribute the code
- Include it in your own applications
See the LICENSE file for full details.

