Enable Wellfound apply: fix missing apply_type, add submit verification
- Search now sets apply_type: 'wellfound' on discovered jobs (was missing, so applier silently skipped all Wellfound jobs) - Add Wellfound to DEFAULT_ENABLED_APPLY_TYPES (LinkedIn first, then Wellfound) - Sort platform processing order: linkedin → wellfound → external - Apply handler: add closed listing detection, submit verification, error handling on meta extraction Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,18 @@ export async function apply(page, job, formFiller) {
|
||||
const meta = await page.evaluate(() => ({
|
||||
title: document.querySelector('h1')?.textContent?.trim(),
|
||||
company: document.querySelector('[class*="company"] h2, [class*="startup"] h2, h2')?.textContent?.trim(),
|
||||
}));
|
||||
})).catch(() => ({}));
|
||||
|
||||
// Check if listing is closed/unavailable
|
||||
const closed = await page.evaluate(() => {
|
||||
const text = (document.body.innerText || '').toLowerCase();
|
||||
return text.includes('no longer accepting') || text.includes('position has been filled') ||
|
||||
text.includes('this job is no longer') || text.includes('job not found');
|
||||
}).catch(() => false);
|
||||
if (closed) {
|
||||
console.log(` ℹ️ Job closed — no longer available`);
|
||||
return { status: 'skipped_no_apply', meta };
|
||||
}
|
||||
|
||||
const applyBtn = page.locator('a:has-text("Apply"), button:has-text("Apply Now"), a:has-text("Apply Now")').first();
|
||||
if (await applyBtn.count() === 0) return { status: 'no_button', meta };
|
||||
@@ -33,5 +44,20 @@ export async function apply(page, job, formFiller) {
|
||||
await submitBtn.click();
|
||||
await page.waitForTimeout(SUBMIT_WAIT);
|
||||
|
||||
return { status: 'submitted', meta };
|
||||
// Verify submission — check for success indicators or form gone
|
||||
const postSubmit = await page.evaluate(() => {
|
||||
const text = (document.body.innerText || '').toLowerCase();
|
||||
return {
|
||||
hasSuccess: text.includes('application submitted') || text.includes('successfully applied') ||
|
||||
text.includes('thank you') || text.includes('application received'),
|
||||
hasForm: !!document.querySelector('form button[type="submit"]:not([disabled])'),
|
||||
};
|
||||
}).catch(() => ({ hasSuccess: false, hasForm: false }));
|
||||
|
||||
if (postSubmit.hasSuccess || !postSubmit.hasForm) {
|
||||
return { status: 'submitted', meta };
|
||||
}
|
||||
|
||||
console.log(` ⚠️ Submit clicked but form still present — may not have submitted`);
|
||||
return { status: 'incomplete', meta };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user