TL;DR: Check whether the job is still live on Indeed, grab the current job reference if it was reposted, and resubmit against the fresh ID. Jobs close and repost with new IDs constantly; the agent's cache does not track that, so validate the reference before each submit.

```text
Indeed Apply "400  -  invalid job reference"
```

1. Look up the job on Indeed using the cached reference to see if it is live, closed, or reposted. Expected: you see the current state of the listing.
2. If the job was reposted, capture the new job reference from the live listing. Expected: the current reference is in hand.
3. Update the agent's job cache with the new reference and resubmit the application. Expected: the submit is accepted.
4. Add a pre-submit check: verify each job reference is live before submitting, and expire cached IDs after 24 hours. Expected: stale-ID submits stop happening.

## Use this when
- Indeed Apply returns 400 invalid job reference.
- The agent submits against cached job IDs.
- Submits worked for a job that later started failing.

## Not for this skill when
- The 400 names an applicant data field (different validation).
- The error is authentication-related.
- The job reference was never valid (a data entry problem).

## Variant phrasings
- "Indeed invalid job ID"
- "job reference not found Indeed Apply"
- "Indeed Apply 400 stale job"
- "invalid job reference application submit"

## Why it happens
Indeed jobs close, expire, and get reposted under new references regularly, while agents cache the reference once at discovery time. The submit then targets a reference that no longer resolves.

## Edge cases
- Sponsored and organic listings can carry different references for the same role.
- A job can be geo-restricted: valid reference, wrong region for the applicant.
- Validate every reference in a batch, not just the first; jobs in one batch expire independently.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_X1f7Z-3Lyx_OM-Tl-UrXsw
