Skip to content
Back to skills

Rescan Skipped

ASecurity

Re-score a campaign's skipped jobs and promote the eligible ones to `approved` for later applying. Recovers jobs wrongly dropped for location, a sparse JD, 1099, or seniority. Does not apply.

  • 80 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added May 28, 2026
developmentrustgobashapi

Works with

  • terminal
  • api

Security analysis

A100/100

Scanned October 5, 2026

npx -y skills add suxrobGM/jobpilot --skill rescan-skipped --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rescan Skipped?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rescan Skipped
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/suxrobgm-rescan-skipped/badge)](https://www.skillsdirectory.com/skills/suxrobgm-rescan-skipped)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: rescan-skipped
description: Re-score a campaign's skipped jobs and promote the eligible ones to `approved` for later applying. Recovers jobs wrongly dropped for location, a sparse JD, 1099, or seniority. Does not apply.
argument-hint: "<campaign-id> [--jobs key1,key2,…]"
---

# Rescan Skipped - Recover Wrongly-Dropped Jobs

Re-score a campaign's `skipped` jobs and set eligible ones to `approved`. **Never apply and never
change the campaign's status** - apply the promoted jobs afterward via the `apply` skill (`apply
campaign <campaign-id>`) or the campaign page.

## Setup

Follow `../_shared/setup.md`. Fetch the campaign: `jobpilot-api GET /api/campaigns/<campaign-id>`.
Threshold = `config.minScore` (fallback `autoApply.minMatchScore`, else 60).

## Step 1: Select Targets

Targets are **every** `status:"skipped"` job; with `--jobs key1,key2,…`, restrict to those `key`s.

- **Always leave (permanent) - only these:** `skipReason` starting `Already applied`, `CAPTCHA`,
  `Payment required`, or `No visa sponsorship (JD:`, or one stating a JD-cited citizenship/clearance
  requirement.
- **Whole-campaign mode (no `--jobs`):** also leave deliberate user choices - `Removed by user`,
  `Not selected by user`, `User cancelled…`, `Max applications limit reached`, `Campaign paused by
  user`.
- **`--jobs` mode:** reconsider every named target except the permanent ones.

Count the full target list up front and process every one. **Below-threshold, zero-score, and
no-`skipReason` jobs are all targets** - the stored score came from the campaign that wrongly
skipped them, so it's never a reason to skip the re-score. Don't cherry-pick the jobs already
at/above threshold.

## Step 2: Per Job

1. **Brief** - parse the cached `brief`. Rich = non-empty `skills` **and**
   `requirements`/`responsibilities`.
2. **Re-read only when needed** - if the brief is thin/empty, or the original `skipReason` was
   invalid (location/onsite, sparse JD, 1099, seniority), open the posting (`browser_navigate` +
   narrowed `browser_snapshot`; log in via `../_shared/auth.md` if walled) and rebuild the brief.
   Send that brief and posting text with the rescan command below; terminal rows cannot be PATCHed.

3. **Re-score** - every target gets a fresh `POST /api/score-fit` with `{brief,
   minScore:<threshold>}`; never reuse the stored `matchScore`. Take the returned `score` as-is when
   `verdict` is `trust`; on `deliberate`, reason from `strongMatches`/`partialMatches`/`gaps`. A
   zero/low score with no `skipReason` (common at defense/federal employers) is not a disqualifier;
   eligibility follows `../_shared/eligibility.md`.
4. **Decide:**
   - Eligible and `score >= threshold` → promote (no apply). Write
     `{"decision":"approved","matchScore":<0-100>,"matchReason":"<one line>","brief":"<brief JSON
     string>","description":"<posting text or empty>"}` to `$JOBPILOT_TEMP/rescan-<key>.json`, then:

```bash
jobpilot-api POST /api/campaigns/<campaign-id>/jobs/<key>/rescan --data @"$JOBPILOT_TEMP/rescan-<key>.json"
```

- Below threshold after a fair read → POST `/rescan` with `decision:"skipped"`, the new
  score/reason, and `skipReason:"Below minimum match score (X < Y)"`.
- JD-stated citizenship/clearance or no-sponsorship language found on re-read → POST `/rescan` with
  `decision:"skipped"` and that eligibility reason.

## Step 3: Finish

Process every target before finishing - `promoted + left-skipped + permanent` must equal the target
count. If any are unprocessed, keep going; don't report a partial pass as complete.

Print a short table (promoted vs left `skipped`, with reasons) plus the reconciliation (e.g. "228
skipped → 226 targets; 19 promoted, 207 left skipped"). Then point the user to `apply campaign
<campaign-id>` (or the campaign page's Apply selected). Don't apply; don't change campaign status.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.