93 lines
5.2 KiB
Markdown
93 lines
5.2 KiB
Markdown
# W1-016: offline opportunity qualification
|
||
|
||
`src/opportunity_intelligence/qualification/lrs.py` uses the existing standard-library HTML parser and saved LRS
|
||
collection. It performs no network access, applications, pipeline writes or
|
||
candidate promotion. No résumé or detailed Ken eligibility profile was supplied:
|
||
the brief identifies requirements to verify, not proven personal skill deficits.
|
||
|
||
## Reproduce
|
||
|
||
```powershell
|
||
python -m unittest discover -s tests -v
|
||
python w1.py qualify --run runs/2026-09-17/lrs-162640 --output runs/2026-09-17/qualification-review-new
|
||
```
|
||
|
||
On this workstation replace `python` with:
|
||
`& 'C:\Users\Gharke\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\python.exe'`.
|
||
The sandbox requires permission to execute that installed runtime.
|
||
|
||
Omitting `--run` chooses the latest successful saved LRS manifest by finish time.
|
||
Omitting `--output` creates `qualification-W1-016` under that run. Output must be
|
||
a new directory; use another directory for a repeat. `--limit` defaults to 12
|
||
and accepts 1–15. `--pipeline` defaults to `data/opportunities.json`.
|
||
|
||
Inputs must agree with manifest counts and staged records must match collected
|
||
records. Every used description snapshot is verified against its recorded SHA-256.
|
||
Missing descriptions, changed snapshots or inconsistent inputs fail visibly.
|
||
Assessment uses the collection date, not the current date. Identical code, inputs
|
||
and options produce byte-identical artifacts; regression tests verify this.
|
||
|
||
## Rules
|
||
|
||
In precedence order: exclude exact repeated LRS identities or identical title,
|
||
organization, location, header type and full normalized description; exclude
|
||
matches in the current pipeline; exclude reliable visible past expiration;
|
||
exclude clearly unrelated roles; then apply target-scope relevance rules.
|
||
All exclusions retain their reasons and evidence. Different pay, description or
|
||
location evidence prevents content-based exact deduplication. Similar requisitions
|
||
with separate IDs remain separate when their evidence differs.
|
||
|
||
Expiration is deliberately conservative: only an explicit visible ISO date labeled
|
||
`Application deadline:`, `Applications close:` or `Closing date:` qualifies, and
|
||
multiple different visible deadlines prevent exclusion. Deadline day is inclusive.
|
||
Historical or even valid JSON-LD alone is insufficient. Other date formats and
|
||
informal closure language need review; no expired exclusion was made in this run.
|
||
|
||
Role-specific title scores: architecture 100, IT leadership 90, AI implementation
|
||
85, cloud/infrastructure/network engineering 80, IT delivery management 65.
|
||
Description-supported technical fit scores 50; other IT contracts score 35.
|
||
Take the highest applicable score, then sort by visible added date descending
|
||
and numeric requisition ID ascending. Dates are only tie breakers, never proof
|
||
of an active vacancy. AI hiring/EEO boilerplate is removed from relevance evidence.
|
||
Industrial turbine management, marine work, sales, recruiting and office
|
||
administration are excluded. Junior/support roles without a target fit fall
|
||
outside scope. Lower-ranked relevant records are deferred, not disqualified.
|
||
|
||
Contract descriptions and temp/contract headers determine provisional contract
|
||
grouping; explicit direct hire determines employment grouping, retaining any
|
||
contradictory contract prose. Full-time does not by itself prove permanent
|
||
employment. Temp-to-perm indicates advertised contract-to-hire. Contract duration
|
||
is not inferred. Source qualifications and restrictions are extracted with
|
||
deterministic patterns; these are triage summaries, not exhaustive eligibility
|
||
assessments. Full description text is retained. Advertised pay is never called
|
||
verified, and geographic ranges and structured metadata remain separate.
|
||
|
||
## Results and artifacts
|
||
|
||
The final output is `runs/2026-09-17/lrs-162640/qualification-W1-016/`:
|
||
|
||
- `brief.md`: complete review brief with original links, maximum 15 entries.
|
||
- `shortlist.json`: selected evidence, requirements, conflicts and proposed actions.
|
||
- `audit.json`: all 84 staged candidates, including exclusions and deferred records.
|
||
- `summary.json`: filtering counts, rule version, code/input/snapshot hashes and
|
||
unchanged-pipeline verification.
|
||
|
||
The collection has 87 jobs, with 3 previously matched pipeline records and 84 staged
|
||
candidates. Qualification excludes 0 additional exact duplicates, 0 additional
|
||
pipeline matches, 0 reliably expired records, 9 clearly unrelated roles and 28
|
||
outside-scope roles. 47 remain relevant; 12 are shortlisted and 35 deferred. All
|
||
12 shortlist entries are provisionally contract/contract-to-hire. An empty
|
||
employment section is intentional, not a claim that the entire collection has
|
||
no employment opportunities.
|
||
|
||
`qualification-preview` and `qualification-review` contain intermediate review
|
||
outputs; `qualification-W1-016` is the final artifact. `runs/2026-09-17/lrs-inspection/lrs-descriptions.json` is
|
||
an offline inspection extract and is not an input to the qualifier.
|
||
|
||
Known source defects remain: historical JSON-LD dates/pay, malformed JSON and
|
||
conflicting engagement labels. Residency lists are quoted as supplied (including
|
||
source spelling errors). Remote work eligibility, availability and actual
|
||
compensation require confirmation before any later promotion. No source coverage
|
||
was expanded and existing discovery code was unchanged.
|
||
|