[export] Non-bullet description content is dropped from the downloaded PDF
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- data, testing-qa
Research direction
Start in src/lib/pdf/ats-resume-model.ts at resolveBullets and trace the description paths from src/lib/heuristics/group-bullets.ts and entry-blocks.ts, including splitAnchorProseTail. Reproduce the loss with tests/fixtures/pdfs/unknown/headerless-experience.pdf and inspect corpus-roundtrip.test.ts. Done means non-bullet description text appears in the exported PDF without duplicating glyph-bulleted lines, with the round-trip comparison decision recorded in the test docblock.
Written by the indexing model from the issue text.
Description
Description text that did not originate from a glyph bullet (•) is present in the parse and on the reconstructed résumé, but absent from the downloaded PDF. The user sees a line on screen, downloads, and it is gone.
Found while implementing #492 (PR #842); pre-existing, not caused by that work.
Mechanism
resolveBullets in src/lib/pdf/ats-resume-model.ts prefers the graded BulletObservation pool. src/lib/heuristics/group-bullets.ts documents that pool as "extracted from rawText" — i.e. glyph bullets only. Any description entry that reached the field by another route has no BulletObservation backing it and is dropped at render.
There are at least two such routes today, both legitimate:
belowAnchorBodyProse→description, the path #615 and #708 established for below-anchor scope lines.- The anchor-prose tail peeled by
splitAnchorProseTail(entry-blocks.ts, added in #492).
Concretely, on tests/fixtures/pdfs/unknown/headerless-experience.pdf, role 1's "Leads the automation guild." is on description in the parse and renders on the reconstructed résumé, but does not appear in the exported PDF.
Why no gate caught it
The round-trip invariant (corpus-roundtrip.test.ts) compares only title / company / start_date / end_date. description is outside the compared set, so parse → export → re-parse stays green while the content silently disappears. Nothing regressed; the gap was simply never observable.
Acceptance criteria
- Non-bullet
descriptioncontent survives export to the downloaded PDF. - A fixture pins it —
headerless-experience.pdfalready reproduces and needs no new binary. - Decide and record whether
descriptionshould join the round-trip comparison set. If not, say why in the test's docblock, so the next person doesn't read the green gate as coverage. - Confirm the fix does not double-emit a line that IS glyph-bulleted (the
preemptedIsHeadertoken-coverage filter inresolveDescriptionexists to prevent exactly that on the parse side).
Notes
Worth checking whether this is the same root as any open export-fidelity issue before building — the parse-model ↔ export-model seam has come up before, and the fix belongs wherever that seam is owned rather than patched at the call site.
Refs #811
- Dominant language
- TypeScript
- Stars
- 11
- Forks
- 4
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 40
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from offlinecv/OfflineCV
-
chore
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
testing
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
improvement ux:edit-export
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
refactor testing
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
chore
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
All issues in offlinecv/OfflineCV
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
security
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
IBM/node-sdk-core#373 ·
-
e2e-failure ready-to-code
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
design phase:2 size:S
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
poker-hack-stage/anaba#75 ·