fix(rank): include job posting URL in ranking tables (#236)

* fix(rank): include job posting URL in shortlist/below-threshold/excluded tables

/rank's output tables listed title, company, and score but dropped the
posting link, forcing the user to go dig it out of seen_jobs.json to
open a job they wanted to act on. The key in seen_jobs.json is already
the URL, so this is a formatting fix, not a new lookup.

* fix(rank): link to entry's url field, not the seen_jobs.json key

Some portals key seen_jobs.json entries by a company+title composite
rather than the URL, so [Link](<key>) could render a broken link.
Every entry carries a dedicated url field, which is always valid.
This commit is contained in:
NotAbdelrahmanelsayed
2026-07-25 19:38:02 +02:00
committed by GitHub
parent aa7c707399
commit c7a1e0cf89
+7 -6
View File
@@ -93,24 +93,25 @@ Ranked <N> new postings (<X> shortlisted, <Y> below threshold, <Z> expired/vetoe
### Shortlist ### Shortlist
| # | Score | Verdict | Title | Company | Location | Deadline | | | # | Score | Verdict | Title | Company | Location | Deadline | | URL |
|---|-------|---------|-------|---------|----------|----------|---| |---|-------|---------|-------|---------|----------|----------|---|-----|
| 1 | 78 | Strong Fit | ... | ... | ... | ... | 🔥 | | 1 | 78 | Strong Fit | ... | ... | ... | ... | 🔥 | [Link](...) |
### Why these ranked highest ### Why these ranked highest
**1. <Title> at <Company> (78)** - [2-3 strength bullets and the honest gap, from the agent's findings] **1. <Title> at <Company> (78)** - [2-3 strength bullets and the honest gap, from the agent's findings]
[repeat for each shortlisted job] [repeat for each shortlisted job]
### Below threshold ### Below threshold
| Score | Verdict | Title | Company | One-line reason | | Score | Verdict | Title | Company | One-line reason | URL |
### Excluded ### Excluded
- <Title> at <Company> - location FAIL: requires relocation - <Title> at <Company> - location FAIL: requires relocation - [Link](...)
- <Title> at <Company> - expired <date> - <Title> at <Company> - expired <date> - [Link](...)
``` ```
Rules for the presentation: Rules for the presentation:
- Every table (shortlist, below threshold, excluded) includes the posting URL as a clickable link - link to the entry's `url` field in `seen_jobs.json` (not the entry's key, which for some portals is a company+title composite rather than the URL), so this never requires an extra lookup. Never drop the link for brevity.
- Every claim traces to fetched posting text or the profile - no invented details. - Every claim traces to fetched posting text or the profile - no invented details.
- Say explicitly that these are **triage scores from the posting text only**, and that `/apply` will re-evaluate with company research before anything is drafted. - Say explicitly that these are **triage scores from the posting text only**, and that `/apply` will re-evaluate with company research before anything is drafted.
- Then ask: "Want to apply to any of these? Give me the number(s) and I'll start with the full `/apply` workflow." - Then ask: "Want to apply to any of these? Give me the number(s) and I'll start with the full `/apply` workflow."