feat: claw-apply v0.1 — full implementation
- job_searcher.mjs: LinkedIn + Wellfound search, queue population - job_applier.mjs: Easy Apply + Wellfound apply, Mode A/B - lib/form_filler.mjs: config-driven form filling, custom answers.json - lib/linkedin.mjs: two-panel Easy Apply flow - lib/wellfound.mjs: Wellfound search + apply - lib/browser.mjs: Kernel stealth browser factory with local fallback - lib/queue.mjs: jobs_queue.json management - lib/notify.mjs: Telegram notifications - setup.mjs: setup wizard with login verification - Config templates: profile, search_config, answers, settings - SKILL.md: OpenClaw skill definition
This commit is contained in:
10
config/answers.json
Normal file
10
config/answers.json
Normal file
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{ "pattern": "sponsor", "answer": "No", "note": "Work authorization — no sponsorship needed" },
|
||||
{ "pattern": "authorized.*work", "answer": "Yes", "note": "Authorized to work in US" },
|
||||
{ "pattern": "legally.*work", "answer": "Yes" },
|
||||
{ "pattern": "relocat", "answer": "No" },
|
||||
{ "pattern": "remote.*willing", "answer": "Yes" },
|
||||
{ "pattern": "start date", "answer": "Immediately" },
|
||||
{ "pattern": "notice period", "answer": "2 weeks" },
|
||||
{ "pattern": "degree|bachelor", "answer": "No" }
|
||||
]
|
||||
21
config/profile.json
Normal file
21
config/profile.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": { "first": "Jane", "last": "Smith" },
|
||||
"email": "jane@example.com",
|
||||
"phone": "555-123-4567",
|
||||
"location": {
|
||||
"city": "San Francisco",
|
||||
"state": "California",
|
||||
"zip": "94102",
|
||||
"country": "United States"
|
||||
},
|
||||
"linkedin_url": "https://linkedin.com/in/janesmith",
|
||||
"resume_path": "/home/user/resume.pdf",
|
||||
"years_experience": 7,
|
||||
"work_authorization": {
|
||||
"authorized": true,
|
||||
"requires_sponsorship": false
|
||||
},
|
||||
"willing_to_relocate": false,
|
||||
"desired_salary": 150000,
|
||||
"cover_letter": "Your cover letter text here. Keep it to 3-4 sentences — why you, why this type of role, one proof point."
|
||||
}
|
||||
40
config/search_config.json
Normal file
40
config/search_config.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"_note": "Configure your job searches here. Each search runs on both listed platforms.",
|
||||
"searches": [
|
||||
{
|
||||
"name": "Founding GTM",
|
||||
"track": "gtm",
|
||||
"keywords": [
|
||||
"founding account executive",
|
||||
"first sales hire",
|
||||
"first GTM hire",
|
||||
"founding AE",
|
||||
"head of sales startup remote"
|
||||
],
|
||||
"platforms": ["linkedin", "wellfound"],
|
||||
"filters": {
|
||||
"remote": true,
|
||||
"posted_within_days": 2
|
||||
},
|
||||
"exclude_keywords": ["BDR", "SDR", "staffing", "insurance", "retail", "consumer", "recruiter", "DataAnnotation"],
|
||||
"salary_min": 130000
|
||||
},
|
||||
{
|
||||
"name": "Enterprise AE",
|
||||
"track": "ae",
|
||||
"keywords": [
|
||||
"enterprise account executive SaaS remote",
|
||||
"senior account executive technical SaaS remote",
|
||||
"enterprise AE data infrastructure cloud"
|
||||
],
|
||||
"platforms": ["linkedin"],
|
||||
"filters": {
|
||||
"remote": true,
|
||||
"posted_within_days": 2,
|
||||
"easy_apply_only": true
|
||||
},
|
||||
"exclude_keywords": ["BDR", "SDR", "SMB", "staffing", "retail", "DataAnnotation"],
|
||||
"salary_min": 150000
|
||||
}
|
||||
]
|
||||
}
|
||||
25
config/settings.json
Normal file
25
config/settings.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"_note": "Main settings for claw-apply. Fill in your values and run: node setup.mjs",
|
||||
"mode": "A",
|
||||
"review_window_minutes": 30,
|
||||
"schedules": {
|
||||
"search": "0 * * * *",
|
||||
"apply": "0 */6 * * *"
|
||||
},
|
||||
"max_applications_per_run": 50,
|
||||
"notifications": {
|
||||
"telegram_user_id": "YOUR_TELEGRAM_USER_ID",
|
||||
"bot_token": "YOUR_TELEGRAM_BOT_TOKEN"
|
||||
},
|
||||
"kernel": {
|
||||
"proxy_id": "YOUR_KERNEL_PROXY_ID",
|
||||
"profiles": {
|
||||
"linkedin": "LinkedIn-YourName",
|
||||
"wellfound": "WellFound-YourName"
|
||||
}
|
||||
},
|
||||
"browser": {
|
||||
"provider": "kernel",
|
||||
"playwright_path": null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user