Skip to content

Fix search parsing after Upwork's markup change and warn on future breaks - #3

Merged
promptadvisers merged 1 commit into
mainfrom
fix-search-parser
Sep 28, 2026
Merged

promptadvisers merged 1 commit into
mainfrom
fix-search-parser

Conversation

@promptadvisers

Copy link
Copy Markdown
Collaborator

Problem

Around 2026-09-05 Upwork added extra tokens to its data-test attributes (job-tile-title-link UpCLink, job-pubilshed-date UpCBadge). The parser matched exact values, so every search result lost its title and featured cards lost their posted time. Lane scoring runs on titles, so most jobs ranked as weak fits, with no error. Fixed-price budgets had never been read.

Fix

  • Search cards are read with single-token ~= selectors that match both the old and new markup, with header fallbacks for posted time and proposal count.
  • Fixed-price budgets are parsed from is-fixed-price.
  • "No feedback yet" clients get no rating instead of 0.
  • The in-page code only collects text; interpretation moved to searchCardToRaw, which is unit-tested.
  • Feed selectors use the same token matching.
  • Parser health check: each search warns when most cards are missing a title, posted time, proposal count, job type, or client details, and points to this repo's issues.

Verification

  • npm test: 108 pass on Node 22, 24, and 26, including a real-browser test that parses synthetic cards in both the current and earlier markup (skipped where Chrome is not installed).
  • npm run check:release: passes.
  • One live 10-result search through the CLI: 10/10 titles, 4/4 fixed-price budgets, lanes assigned, no parser warnings.

🤖 Generated with Claude Code

…eaks

Upwork added extra tokens to its data-test attributes around 2026-09-05
("job-tile-title-link UpCLink", "job-pubilshed-date UpCBadge"). The parser
matched exact values, so every search result lost its title and featured
cards lost their posted time. Lane scoring runs on titles, so most jobs
ranked as weak fits for eleven days without any error.

Search cards are now read with single-token selectors that match both the
old and new markup, with header fallbacks for posted time and proposal
count. Fixed-price budgets are read for the first time, and "No feedback
yet" clients no longer get a 0 rating.

Each search now checks its own output and prints a warning when most cards
are missing a title, posted time, proposal count, job type, or client
details, so the next markup change shows up on the first pull.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@promptadvisers
promptadvisers merged commit 4097d10 into main Sep 28, 2026
8 checks passed
@promptadvisers
promptadvisers deleted the fix-search-parser branch September 28, 2026 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant