Files
santifer--career-ops/examples/ats-normalization-test.md
T
wehub-resource-sync d083df1fdb
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 2s
Web CI / web typecheck + build (push) Failing after 1s
Release Please / release-please (push) Failing after 1s
CodeQL Analysis / Analyze (go) (push) Failing after 16s
chore: import upstream snapshot with attribution
2026-07-13 12:02:43 +08:00

50 lines
2.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | 20202024 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, ...)
```