Shared lexicon (d): share title surface forms between title-shape.ts and job-search ROLE_PROFILES
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- search, testing-qa
Research direction
Read src/lib/heuristics/extract/title-shape.ts and src/lib/job-search/role-profiles.ts, then inspect the join precedent at src/lib/job-search/role-profiles.test.ts:84. Choose one permitted dependency shape, wire the shared surface forms into title recognition, and run the #654 scoreboard plus npm run verify. Done means the import and join are test-asserted, before/after title precision and recall are reported, and any corpus changes are reviewed.
Written by the indexing model from the issue text.
Description
Part (d) of #653. The one part of #653 that is an accuracy lever rather than pure hygiene.
Problem
Two independent inventories of job-title surface forms exist and never talk to each other:
src/lib/heuristics/extract/title-shape.ts— ~62 title/seniority keywords, used by the parser to decide whether a line looks like a title.src/lib/job-search/role-profiles.ts(1506 LOC) — hundreds of prevalence-ordered real-world title forms, curated for job search.
The job-search table is far richer, and the parser cannot see it.
Why it is an accuracy lever
A dated line that matches a known real-world title surface form is strong evidence of an entry header. Feeding the richer inventory into the parser's title recognition helps #492 (role lines funnelling into a generic other) and #543 (missing titles) without touching sectioning logic at all — it is new evidence for an existing decision, not a new code path.
Constraint
title-shape.ts's contract is that it imports nothing. That must survive — it is what keeps the module off the eager entry graph. Two shapes are acceptable:
- A test-asserted join: the two inventories stay separate, and a test asserts the agreed subset relationship. Precedent exists at
src/lib/job-search/role-profiles.test.ts:84. - job-search imports a heuristics leaf — the dependency points from job-search into heuristics, never the reverse.
Do not make title-shape.ts import role-profiles.ts.
Implementation plan
- Pick shape 1 or 2 and say why in the PR.
- Establish the shared surface-form data.
- Wire the richer inventory into the parser's title recognition.
- Measure: the ground-truth corpus scoreboard from #654 is the harness — report per-field title precision/recall before and after.
Acceptance criteria
-
title-shape.tsstill imports nothing, asserted by a test. - The join between the two inventories is test-asserted, not conventional.
- Title precision/recall from the #654 scoreboard is quoted before and after in the PR.
- Corpus snapshot changes, if any, are reviewed fixture-by-fixture and are improvements.
-
npm run verifygreen.
Parent: #653. Roadmap item 5(d) of #646. Related: #492, #543.
- Dominant language
- TypeScript
- Stars
- 11
- Forks
- 4
- Avg merge
- 1d 24m
- Merged PRs (30d)
- 71
Getting set up
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 gaal
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Maintainers usually reply within 1 day
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Maintainers usually reply within 1 day
-
Download PDF: preview the exact exported PDF, all pages, before saving itPossibly taken @s-annam claimed this today. Openfeature gaal ready-for-agent ux:edit-export
offlinecv/OfflineCV#1077 · 1 assignee ·
Maintainers usually reply within 1 day
-
chore gaal refactor
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
All issues in offlinecv/OfflineCV
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
rohitg00/agentmemory#1428 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
boxlite-ai/boxlite#1729 ·
Maintainers usually reply within 1 day
-
detectors enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
SM260845/readme-gen#1 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
angular/angularfire#3774 ·
Maintainers usually reply within 2 days