Context
Follow-up to #1. PR #11 landed the snapshot harness and seeded the corpus with 6 PDFs across 3 generator categories (LaTeX, Word, react-pdf). The framework auto-detects any PDF dropped into tests/fixtures/pdfs/<category>/, so this issue is pure content work — no code changes needed.
Gap vs. #1's acceptance criteria:
|
Acceptance criterion |
After #11 |
Remaining |
| PDF count |
≥15 |
6 |
9 |
| Categories |
≥4 |
3 (latex, word, unknown) |
≥1 new category |
Why these categories aren't already seeded
Unlike LaTeX templates (which ship rendered example PDFs in their GitHub repos), Google Docs / Pages / Preview / InDesign exports don't exist as committed artifacts anywhere public — they have to be generated manually. PR #11 couldn't curl them.
What to do
Pick a generator, open a resume template in that app, fill with synthetic data (Jane Smith / jane.smith@example.com / 555-0100 / San Francisco, CA — no real personas), export to PDF, drop into the matching tests/fixtures/pdfs/<category>/ subfolder, then:
npm run bake-fixtures # writes the .expected.json snapshot
git add tests/fixtures/pdfs/<category>/
Filename convention: <generator>-<one-word-characterization>.pdf, e.g. google-docs-modern-template.pdf, mac-pages-creative-template.pdf. No real names in the filename either.
Concrete sourcing pointers
- Google Docs: Docs → Template Gallery → "Resume" section → pick any (Serif / Coral / Modern Writer). Fill with synthetic data,
File → Download → PDF.
- Apple Pages:
File → New → Resume templates. Same drill.
- macOS Preview: Open one of the above PDFs in Preview,
File → Export as PDF (re-saves through Quartz, which produces a meaningfully different byte structure — that's the value of this category).
- InDesign: If accessible. Otherwise skip and note "InDesign sample pending access" in a comment; 4 categories without InDesign still meets the criterion.
Stretch — more LaTeX variety
While we're at it, adding 2–3 more LaTeX templates from different engines (XeLaTeX vs LuaTeX vs pdfTeX) would catch font-encoding edge cases the current LuaTeX-only Awesome-CV samples don't. Candidates: moderncv, cv-template, friggeri-cv.
Latent issue to investigate while you're in the corpus
PR #11 surfaced one finding worth triaging: laverne-resume.pdf parses with experienceCount: 0 but bulletCount: 6 — the cascade detects 6 bullets in raw text but doesn't attribute them to any role entry. Captured in its snapshot as a regression anchor. If you're adding more Word/Google-Docs samples here, watch whether they hit the same pattern — it'd be a useful corroborating signal for whether this is a real bug.
Acceptance
Out of scope
- Touching the harness in
src/lib/heuristics/corpus.test.ts (works as-is)
- Adding new category subfolders (the canonical list is already in
tests/fixtures/pdfs/README.md)
Context
Follow-up to #1. PR #11 landed the snapshot harness and seeded the corpus with 6 PDFs across 3 generator categories (LaTeX, Word, react-pdf). The framework auto-detects any PDF dropped into
tests/fixtures/pdfs/<category>/, so this issue is pure content work — no code changes needed.Gap vs. #1's acceptance criteria:
latex,word,unknown)Why these categories aren't already seeded
Unlike LaTeX templates (which ship rendered example PDFs in their GitHub repos), Google Docs / Pages / Preview / InDesign exports don't exist as committed artifacts anywhere public — they have to be generated manually. PR #11 couldn't
curlthem.What to do
Pick a generator, open a resume template in that app, fill with synthetic data (
Jane Smith/jane.smith@example.com/555-0100/San Francisco, CA— no real personas), export to PDF, drop into the matchingtests/fixtures/pdfs/<category>/subfolder, then:Filename convention:
<generator>-<one-word-characterization>.pdf, e.g.google-docs-modern-template.pdf,mac-pages-creative-template.pdf. No real names in the filename either.Concrete sourcing pointers
File → Download → PDF.File → New→ Resume templates. Same drill.File → Export as PDF(re-saves through Quartz, which produces a meaningfully different byte structure — that's the value of this category).Stretch — more LaTeX variety
While we're at it, adding 2–3 more LaTeX templates from different engines (XeLaTeX vs LuaTeX vs pdfTeX) would catch font-encoding edge cases the current LuaTeX-only Awesome-CV samples don't. Candidates:
moderncv,cv-template,friggeri-cv.Latent issue to investigate while you're in the corpus
PR #11 surfaced one finding worth triaging:
laverne-resume.pdfparses withexperienceCount: 0butbulletCount: 6— the cascade detects 6 bullets in raw text but doesn't attribute them to any role entry. Captured in its snapshot as a regression anchor. If you're adding more Word/Google-Docs samples here, watch whether they hit the same pattern — it'd be a useful corroborating signal for whether this is a real bug.Acceptance
google-docs/,mac-pages/, ormac-preview/(any 1+ gets us to 4 categories)npm run testgreenOut of scope
src/lib/heuristics/corpus.test.ts(works as-is)tests/fixtures/pdfs/README.md)