ResumeScan grades your resume exactly the way entry-level Applicant Tracking Systems read it: a keyword match against the job description, plus a section-completeness check and a scan for formatting that silently gets dropped during parsing. There is no AI generation and no external analysis — just local tokenization, synonym matching, and structural checks that run server-side on your uploaded file or pasted text.
Why this exists
Most resume feedback either ignores how ATS software actually parses a document (tables flattened, headers/footer text stripped, image text skipped) or ships you through a generic AI rewrite. ResumeScan does neither. It tells you, in plain terms, which keywords from the job ad are missing from your resume and which formatting choices will make an ATS lose your experience — so your application actually gets in the door.
How the score works
- Keyword match (50%) — your resume is scanned for each JD keyword and its synonyms (e.g. "AWS" matches "Amazon Web Services").
- Section completeness (25%) — Contact, Experience, Education, and Skills must be detectable.
- Formatting (25%) — tables, headers, text boxes, embedded images, and odd fonts each subtract points.
Score = 0.50·keyword + 0.25·section + 0.25·formatting, clamped 0–100. Penalties: high = −20, medium = −12, low = −6.
Built for builders
ResumeScan is a Calyvent project. It is hosted on Cloudflare Pages + Workers, backed by a shared Supabase project, and paid for with Stripe. The scanner engine is self-contained TypeScript — .docx parsing usesjszip + XML text extraction and .pdf parsing uses a dependency-free extractor that inflates/FlateDecode streams withnode:zlib (no DOM or Worker required, so it runs natively on the Edge); nothing leaves the request except the report you see.
Fair-use note
ResumeScan approximates how ATS parsers behave in general; it makes no guarantees about compatibility with any named vendor's system. Use the matched/missing keywords and formatting fixes as a baseline, not a promise. Scan a resume or get in touch.