mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
The deadline is written at every moment it is provably in hand and survives every write that follows: seen_jobs.json base field, /rank stored-value urgency + expiry sweep with Step 4 persistence, tracker 14th column with header-line-only migration for existing files, /scrape-path extraction (assistant SKILL.md 1.3.2 -> 1.3.3), preserve-unparsed-fields in /outcome and /gmail-sync, notion-sync deadline precedence. Design, scope analysis, and the folded refinements by jakob1379 (#319, #328). Co-authored-by: Jakob Stender Guldberg <17257805+jakob1379@users.noreply.github.com>
This commit is contained in:
co-authored by
Jakob Stender Guldberg
parent
5c6ffe8aa7
commit
c855e11d22
@@ -23,6 +23,25 @@ per-file diff commands.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Application deadlines are written down at every moment the framework provably holds them**
|
||||
(#319). `/scrape` fetched the deadline and rendered it in a table, `/rank` turned it into the 🔥
|
||||
urgency marker and the expiry check, and nothing stored it - so the marker fired exactly once,
|
||||
every later run had to re-fetch a posting that might have expired to recover the date, and a
|
||||
`drafted` application (whose only applicable clock is its deadline) had no time-based signal at
|
||||
all. `seen_jobs.json` entries now carry a `deadline` (base field, written on first sight,
|
||||
refreshed by `/rank` Step 4, `null` vs missing distinguished and never guessed); `/rank` Step 3
|
||||
re-derives urgency from the stored value with no re-fetch and sweeps already-ranked entries past
|
||||
their deadline into `expired`; the tracker gains a fourteenth `deadline` column appended last,
|
||||
with a header-line-only migration for existing trackers; `/apply` Step 0 extracts the deadline
|
||||
and Step 6b writes it (including the `/scrape` path via the assistant SKILL.md); `/outcome`
|
||||
surfaces it on open rows and flags near/passed deadlines on `drafted` rows without changing the
|
||||
no-follow-up rule; and the row-rewriting paths (`/outcome` Step 4, `/gmail-sync` Step 7a) now
|
||||
preserve every unparsed field so the new column survives the first status update. `/notion-sync`
|
||||
names the tracker as the Deadline source (tracker wins), `/upskill`'s column list stays true, and
|
||||
`job-application-assistant/SKILL.md` bumps `framework_version` 1.3.2 → 1.3.3. Pinned by
|
||||
`tests/test_rank_command.py`, `tests/test_apply_records_application.py`, and
|
||||
`tests/test_upskill_skill.py`.
|
||||
|
||||
- **`convert_salary_excel.py` no longer misreads whole-thousands cells from a Danish-locale
|
||||
export** - a cell like `60.000` (thousands separator, no decimal comma) was handed to
|
||||
`float()` and silently written as `60.0`, a 1000x-wrong salary in `salary_data.json` that
|
||||
|
||||
Reference in New Issue
Block a user