Skip to content

[parser] Two-column roles return null startDate/endDate even when dates ride the title row #845

Description

@s-annam

On two-column résumés, experience roles come back with startDate and endDate null even when each role's dates are drawn on its title row and survive extraction as a single PdfLine.

Found while implementing #574 and #492 (PR #842). Pre-existing; neither issue touched date extraction.

Evidence

Null dates on every role of tests/fixtures/pdfs/unknown/two-column-sidebar-left-anchor-company.pdf (all 3), despite each role's dates riding its title row in the form Staff Engineer Jun 2015 - Jan 2019, and surviving as one PdfLine via the #425 flush-right-date exemption.

Sampled and reproduces on other two-column fixtures:

  • chromium-two-column-sidebar.pdf
  • weasyprint-cairo-two-column.pdf
  • deedy-*.pdf

It is specific to two-column. #492 confirmed start_date / end_date resolve correctly on all three roles of its single-column headerless-experience.pdf, where the same date shapes appear. So this is a two-column extraction/assembly problem, not a date-parsing problem — treat dates and title/company as separate lanes (the title/company collapse on these fixtures is a different defect, covered separately).

Where to start

two-column-sidebar-left-anchor-company.pdf is the cleanest reproducer — small, single-purpose, synthetic persona, and its roles are otherwise fully resolved (title, company, location all correct), so dates are the only thing missing. Compare its line assembly against the single-column case where the identical date shape works.

Likely suspects, unverified: whether orderItemsByColumn's per-band emission splits the date cell away from its title row before date parsing sees it, or whether the flush-right-date exemption is single-column-gated.

Acceptance criteria

  • Dates resolve on two-column roles whose dates ride the title row.
  • Pinned by a fixture — two-column-sidebar-left-anchor-company.pdf already reproduces, no new binary needed.
  • The other named fixtures re-checked; each either fixed or explained as a distinct shape.
  • No existing corpus baseline moves except where the date fields becoming populated is the intended change.

Refs #811

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingux:parsingUX program: parsing accuracy as the user experiences it

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions