Skip to content

Workday huge-tenant coverage: bounded detail-hydration truncates giant tenants #26

@prPMDev

Description

@prPMDev

Context

The Workday adapter (shipped in 0.5.0) hydrates job descriptions via a per-posting detail endpoint after a filter-aware list pre-selection. To bound the N+1 cost on enterprise tenants, detail-hydration is hard-capped at MAX_DETAIL_FETCHES = 100 (src/adapters/workday.js), with list paging capped at LIST_PAGE_HARD_CAP = 100 (≤ 2000 list items scanned).

This is an intentional v1 simplification, not a complete solution.

Problem

On giant tenants (Salesforce ~1398 postings, Cisco ~939), a description filter query (matched by the library after the adapter returns) only sees the first ≤100 list-position candidates that survived list-evaluable pre-filters. Genuine matches sitting past list-position 100 are never hydrated, so they silently never appear. List-evaluable filters (titleFilter, location, postedWithinDays) narrow the set first and mitigate this, but a broad description-only filter on a huge tenant can still miss real matches with no signal to the caller.

v1 caps silently — there is deliberately no truncation-surfacing metadata yet.

Proper fix (design alongside #7)

This is fundamentally request-volume/politeness infrastructure and should be designed together with #7 (retry + rate-limit handling), since both govern how aggressively we may fan out detail calls:

  • Smart pagination / early-exit once enough post-filter matches are found
  • Rate-limited concurrency (bounded parallel detail fetches with backoff) so the cap can be raised safely
  • Surfaced-truncation metadata (e.g. meta.truncated: true + scanned/total counts) so callers know results are incomplete

Tracked in source: src/adapters/workday.js has a // NOTE: near the cap pointing here and at #7.

Related: #7 (Retry logic and rate limit handling for all ATS APIs).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestinfrastructureTesting, CI, publishing, tooling

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions