Skip to content
Back to skills

Job Applications

ASecurity

Job Applications

  • 33 stars
  • 0 votes
  • 2 copies
  • 4 views
  • Added September 5, 2026
tools

Works with

  • cli

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill job-applications --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Job Applications?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Job Applications
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-job-applications/badge)](https://www.skillsdirectory.com/skills/dvcrn-job-applications)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: job-applications
description: "Job Applications"
---

# Job Application Automation Skill

## Overview
Automated job search and application system for Abed Mir. Searches Indeed for matching jobs, analyzes fit, tailors resume, and applies via ATS platforms (Greenhouse, Lever, Workday, Indeed Easy Apply).

## Directory Structure
```
job-applications/
├── config.json              # Search criteria, filters, settings
├── resume-source/
│   ├── resume.json          # Structured resume data (source of truth)
│   └── resume.tex           # LaTeX template
├── scripts/
│   └── tailor_resume.py     # Resume tailoring + LaTeX generation
├── tailored-resumes/        # Generated PDFs per application
├── tracking/
│   └── applications.json    # Application log
└── logs/                    # Run logs
```

## Workflow (Per Run)

### 1. Search Jobs
- Open Indeed in browser (pinned tab)
- Search each target title from config.json
- Filter: Remote or DFW hybrid, posted in last 24h
- Collect job URLs, titles, companies

### 2. Deduplicate
- Check each job against tracking/applications.json
- Skip already-applied or already-skipped jobs

### 3. Analyze Fit
For each new job:
- Navigate to the job posting, read full description
- Check against avoid_industries and avoid_keywords
- Score fit based on skills match, experience alignment
- Prioritize AI/agent roles highest

### 4. Tailor Resume
For jobs that pass fit check:
- Use resume.json as base
- Reorder bullet points to lead with most relevant experience
- Emphasize matching skills/technologies
- DO NOT fabricate experience or skills
- Generate PDF via LaTeX compilation

### 5. Apply
Detect ATS platform from the application URL:
- **Greenhouse** (boards.greenhouse.io): Single page form — name, email, phone, resume upload, optional fields
- **Lever** (jobs.lever.co): Single page — similar to Greenhouse
- **Workday** (myworkday*.com): Multi-step wizard — create account or sign in, then fill each step
- **Indeed Easy Apply**: Quick apply through Indeed's interface

Fill all required fields from config.json candidate data. Upload tailored PDF.

### 6. Log
Record in applications.json:
```json
{
  "id": "uuid",
  "date": "ISO timestamp",
  "company": "Company Name",
  "title": "Job Title",
  "url": "application URL",
  "platform": "greenhouse|lever|workday|indeed",
  "status": "applied|skipped|failed",
  "skip_reason": null,
  "resume_version": "tailored-resumes/company-title.pdf",
  "notes": ""
}
```

## Cron Schedule
Runs 3x daily:
- 8:00 AM CT — Morning sweep (catch overnight postings)
- 12:00 PM CT — Midday sweep
- 5:00 PM CT — Evening sweep (catch same-day postings)

## ATS Form Filling Reference

### Greenhouse
- URL pattern: `boards.greenhouse.io/*` or `job-boards.greenhouse.io/*`
- Fields: First Name, Last Name, Email, Phone, Resume (file upload), Location, LinkedIn (optional), Website (optional)
- Sometimes has custom questions (dropdown, text, checkbox)
- Submit button usually at bottom

### Lever
- URL pattern: `jobs.lever.co/*`
- Fields: Full Name, Email, Phone, Resume (file upload), LinkedIn (optional), Website (optional), Current Company (optional)
- May have additional questions
- "Submit application" button

### Workday
- URL pattern: `*.myworkdayjobs.com/*` or `*.wd5.myworkdayjobs.com/*`
- Multi-page: Sign in/Create account → My Information → My Experience → Application Questions → Review → Submit
- Requires parsing each page and filling iteratively
- Most complex — may need human intervention for unusual fields

### Indeed Easy Apply
- Indeed session is logged in on the openclaw browser (abedmir31@gmail.com)
- If session expires, navigate to https://secure.indeed.com/auth, enter abedmir31@gmail.com, and ask Abed for the email code in #job-applications Discord channel
- Fields pre-filled from Indeed profile
- May ask additional screening questions
- Click "Apply now" → fills in the Indeed Easy Apply modal
- Quick submit

### Indeed Session Notes
- Login uses email verification code (no password)
- Session persists in the openclaw browser context
- If you see "Sign in" in the nav instead of "Welcome, Abed", the session expired

### LinkedIn Easy Apply
- LinkedIn session is logged in on the openclaw browser (Abed Mir profile)
- Navigate to https://www.linkedin.com/jobs/search/ to search for jobs
- Filter by Easy Apply, Remote, Date Posted
- Click "Easy Apply" button on a job listing
- LinkedIn Easy Apply modal pre-fills most info from profile
- Upload resume, answer any additional questions, submit
- If session expires, navigate to https://www.linkedin.com/login and ask Abed for credentials in #job-applications

### LinkedIn Session Notes
- Login uses email + password (stored in browser session)
- Session persists in the openclaw browser context
- If you see the login page instead of the feed, the session expired

## Important Rules
- NEVER lie on applications — only reorder/emphasize existing experience
- Skip haram industries (banking, mortgage, lending, alcohol, gambling, etc.)
- Log EVERY job encountered (applied or skipped with reason)
- If an application fails mid-form, log as "failed" and move on
- Report summary to #job-applications Discord channel after each run
- **ALWAYS close browser tabs after completing an application** — use `browser(action="close")` or navigate away to prevent memory buildup and tab clutter

Files in this skill

  • SKILL.md5.3 KB
  • config.json2.4 KB
  • resume-source/README.md396 B
  • resume-source/resume.json6.3 KB
  • scripts/tailor_resume.py7.3 KB
  • tracking/applications.json15.3 KB
  • tracking/last_run.json301 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…