2.3 KiB
2.3 KiB
ATS Normalization Test Fixture
This file is a regression fixture for the text normalization pass added in generate-pdf.mjs (issue #1). It contains the Unicode artifacts that can cause parsing errors or display issues in ATS systems and legacy parsers. Use it to verify that the normalizer converts them to ASCII-safe equivalents.
Problematic Unicode (normalizer must convert these)
| Name | Codepoint | Sample line | Converts to |
|---|---|---|---|
| Em-dash | U+2014 | Built and sold a SaaS — now shipping AI in production. | Built and sold a SaaS - now shipping AI in production. |
| En-dash | U+2013 | 2020–2024 at Acme Corp. | 2020-2024 at Acme Corp. |
| Curly double quote | U+201C / U+201D | "Led the migration" was a real bullet. | "Led the migration" was a real bullet. |
| Curly single quote | U+2018 / U+2019 | The team's velocity tripled. | The team's velocity tripled. |
| Ellipsis | U+2026 | And so on… | And so on... |
| Zero-width space | U+200B | Helloworld (there is a ZWSP between the two words) | Helloworld (removed) |
| Non-breaking space | U+00A0 | 5 years experience | 5 years experience (regular space) |
Writing quality guidelines (writer must follow these)
The normalizer does NOT fix writing style. These are enforced by the rules in modes/_shared.md and should never appear in generated CV text in the first place.
- "passionate about machine learning"
- "results-oriented professional with a proven track record"
- "leveraged cutting-edge LLM technology"
- "spearheaded a strategic initiative"
- "facilitated cross-functional synergies"
- "crafted robust, scalable solutions"
- "in today's fast-paced digital world"
- "5+ years of experience in artificial intelligence"
- "demonstrated ability to drive innovative outcomes"
How to verify the normalizer
# From the project root, after editing generate-pdf.mjs:
node --check generate-pdf.mjs
# Quick smoke test of the normalizer logic (no Playwright needed):
node -e "
import('./generate-pdf.mjs').catch(()=>{});
" 2>/dev/null || true
For an end-to-end test, generate a CV PDF from a known dirty HTML file and inspect the output:
node generate-pdf.mjs /tmp/dirty-cv.html /tmp/clean-cv.pdf --format=a4
# Expected log line:
# 🧹 ATS normalization: N replacements (em-dash=X, smart-double-quote=Y, ...)