Executive Summary & Key Takeaways
- Real column detection, not a guess: before anything is scored, your browser measures the actual text-run geometry of the PDF (via PDF.js) to catch multi-column layouts — the one thing plain-text extraction can't see on its own.
- The model scores; your code decides the number: an AI model grades six categories 0–100 each against a fixed rubric — it never outputs an overall score. Coral Resume applies one published formula to those six numbers, so the same résumé lands in the same range every time instead of drifting with the model's mood.
- Linear Text Extraction: ATS engines like Greenhouse, Workday, and Lever do not "see" visual layouts—they parse unformatted linear text blocks.
1. Anatomy of an Applicant Tracking System (ATS) Parser
When a candidate uploads a PDF or DOCX file to an employer portal powered by Workday, Greenhouse, or Lever, the system does not render the document graphically to evaluate typography or margins. Instead, an automated parser converts the binary file into a continuous, unformatted linear text stream.
If your resume utilizes multi-column table elements, floating text boxes, or non-standard font encoding, the parser's line-by-line reading order collapses. Qualifications located in sidebars frequently get appended to unrelated sections, causing critical technical skills and metrics to be completely discarded during automated indexing.
Engineering Truth: PDF.js Linear Text Inspection
Coral Resume extracts the raw character coordinates directly from your PDF using client-side PDF.js. If a skill isn't in the linear text output, an ATS will never index it.
2. The Six Categories, and the Formula Applied to Them
The model grades your résumé on six independent categories, each an integer from 0 to 100. Coral Resume then applies one fixed formula to those six numbers — the weights below, defined once in code — to compute the overall score and letter grade. The model is never asked for an overall number, because a model asked for one number tends to give you a different one on every run.
How reliably a tracking system can extract and parse the text — standard section headings, contact info present, and no tables, columns, or text inside images breaking the parse.
Coverage of the skills, tools, certifications, and industry terms expected for the role your résumé implies.
Measurable achievements, strong action verbs, and quantified impact versus vague duties.
Writing clarity, grammar, concision, and consistency.
How coherently your experience, skills, and education point at one clear target role rather than several unrelated ones.
Standard sections present, logically ordered, and readable once extracted to plain text.
Grade bands sit on the computed overall: 86+ is an A, 76+ a B, 61+ a C, 41+ a D, below that an F.
3. Why the Model Doesn't Get to Pick Your Score
Most AI résumé tools ask a model for a single overall score directly. That's the part worth being skeptical of — not because models are bad at reading résumés, but because asking one for a single number invites exactly the failure modes you'd expect from asking a person to eyeball a percentage:
- Score instability: the same résumé, re-uploaded, can land on a different overall number, because nothing forces the model to reason the same way twice.
- An unauditable number: if the model just says "72," there's no way to see which part of that is real and which part is vibes.
- No fixed standard: without a published formula, "72" means something different depending on the résumé, the day, and the model's mood.
Coral Resume still uses a model — grading six categories against a fixed rubric is exactly the kind of judgment call a model is good at. What it doesn't do is let the model average its own judgment into a final grade. That's arithmetic, and arithmetic doesn't need an AI.
Test your résumé against the six-category engine
Column detection runs locally before anything is sent. The category scoring itself is one request — never re-run without your say-so.