From 5caa0631752932f4f35977df35db0b6959ddf085 Mon Sep 17 00:00:00 2001 From: Matthew Jackson Date: Fri, 6 Mar 2026 21:08:50 -0800 Subject: [PATCH] Show apply_url in summary for external jobs, add Ashby closed detection External ATS jobs now show their actual apply URL instead of the LinkedIn listing URL. Also added Ashby-specific "job not found" text to closed detection. Co-Authored-By: Claude Opus 4.6 --- job_applier.mjs | 2 +- lib/apply/ashby.mjs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/job_applier.mjs b/job_applier.mjs index 448dcf4..bb5d07d 100644 --- a/job_applier.mjs +++ b/job_applier.mjs @@ -305,7 +305,7 @@ async function handleResult(job, result, results, settings, profile, apiKey) { const applyDuration = applyStartedAt ? Math.round((Date.now() - applyStartedAt) / 1000) : null; // Track per-job detail for summary - results.jobDetails.push({ title, company, url: job.url, status, duration: applyDuration }); + results.jobDetails.push({ title, company, url: job.apply_url || job.url, status, duration: applyDuration }); switch (status) { case 'submitted': diff --git a/lib/apply/ashby.mjs b/lib/apply/ashby.mjs index c7570ef..b3b5525 100644 --- a/lib/apply/ashby.mjs +++ b/lib/apply/ashby.mjs @@ -8,6 +8,7 @@ export const SUPPORTED_TYPES = ['ashby']; export async function apply(page, job, formFiller) { return genericApply(page, job, formFiller, { transformUrl: (url) => url.includes('/application') ? url : url.replace(/\/?(\?|$)/, '/application$1'), + closedTexts: ['job not found', 'the job you requested was not found'], formDetector: '#_systemfield_name', applyButtonSelector: 'button:has-text("Apply for this Job"), a:has-text("Apply for this Job")', submitSelector: 'button:has-text("Submit Application")',