50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
# 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
|
||
|
||
```bash
|
||
# 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:
|
||
|
||
```bash
|
||
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, ...)
|
||
```
|