mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 08:36:25 +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>
78 lines
4.4 KiB
Markdown
78 lines
4.4 KiB
Markdown
---
|
|
name: job-application-assistant
|
|
description: >
|
|
Assists with job applications: evaluating job postings, tailoring CVs, writing cover letters,
|
|
and preparing for interviews. Triggers on keywords like: job posting, job application, CV,
|
|
cover letter, resume, interview prep, job fit, career, application, apply, ansøgning, stilling
|
|
allowed-tools: Read, Glob, Grep, WebFetch, WebSearch, Bash, Edit, Write, AskUserQuestion
|
|
framework_version: 1.3.3
|
|
---
|
|
|
|
# Job Application Assistant
|
|
|
|
---
|
|
|
|
## Workflow
|
|
|
|
When the user provides a job posting (URL or text), follow this workflow:
|
|
|
|
### Step 1: Research & Evaluate Fit
|
|
- Fetch the job posting content (use WebFetch for URLs). **A 403 is not a dead end** - follow the escalation order in `09-web-research.md` before concluding a page is unavailable, and prefer the employer's own careers posting over an aggregator listing
|
|
- Keep the **full posting text verbatim** for Step 3b to archive - never a summary
|
|
- Analyze the posting for required competencies, keywords, and priorities
|
|
- Research the company (website, LinkedIn, mission, recent news), per `09-web-research.md`
|
|
- Score the posting against the candidate's profile using the framework in `04-job-evaluation.md`
|
|
- Present the evaluation table and verdict
|
|
- Suggest whether the candidate should call the employer before applying (see `04-job-evaluation.md` for guidance)
|
|
- Ask the user if they want to proceed with an application
|
|
|
|
### Step 2: Tailor CV
|
|
- Read the most relevant existing CV variant from `cv/` as a starting point
|
|
- Follow the guidelines in `05-cv-templates.md`
|
|
- Create `cv/main_<company>_<role>.tex` with tailored content
|
|
- Adjust: profile statement, skills section, experience bullet emphasis, section order
|
|
|
|
### Step 3: Write Cover Letter
|
|
- Follow the writing style rules in `03-writing-style.md` (critical: no em-dashes, no cliches)
|
|
- Follow the template structure in `06-cover-letter-templates.md`
|
|
- Create `cover_letters/cover_<company>_<role>.tex`
|
|
- Ensure the letter connects specific experience to the role requirements
|
|
|
|
### Step 3b: Record the Application
|
|
- Run this once both documents exist. A CV or cover letter drafted alone is not yet an application.
|
|
- Follow **`/apply` Step 6b** (`.claude/commands/apply.md`) exactly: same header, same match-then-update rule, same `drafted` row, same posting archive, same prohibition on touching `job_scraper/seen_jobs.json`. It is stated there once so the two paths cannot drift. Four of its values are named in `/apply`'s own terms: `cv_file`/`cover_letter_file` are the paths written in Steps 2 and 3 here, `source` is the posting URL from Step 1, `deadline` is the application deadline from the posting text Step 1 keeps verbatim (empty when the posting states none - never guess one), and the posting text item 7 archives is the one Step 1 read.
|
|
- This step exists here because `/scrape` Step 5 routes straight into this skill. Without it, that path writes two documents and records nothing.
|
|
|
|
### Step 4: Interview Preparation
|
|
- Follow the framework in `07-interview-prep.md`
|
|
- Prepare STAR-format answers for likely questions
|
|
- Identify role-specific talking points
|
|
- Draft questions the candidate should ask the interviewer
|
|
|
|
---
|
|
|
|
## Reference Files
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `01-candidate-profile.md` | Education, experience, skills, publications, awards |
|
|
| `02-behavioral-profile.md` | Behavioral assessment, strengths, ideal environments |
|
|
| `03-writing-style.md` | Tone, structure, do's and don'ts |
|
|
| `04-job-evaluation.md` | Scoring framework for job fit |
|
|
| `05-cv-templates.md` | LaTeX CV structure and tailoring rules |
|
|
| `06-cover-letter-templates.md` | LaTeX cover letter structure and tailoring rules |
|
|
| `07-interview-prep.md` | STAR examples, tough questions, roleplay guidelines |
|
|
| `08-application-forms.md` | Portal free-text fields: self-introduction, project entries, character-limited pitches |
|
|
| `09-web-research.md` | Fetching postings and company pages: trust boundary, the WebFetch 403 fallback, escalation order, claim verification |
|
|
|
|
---
|
|
|
|
## Quick Commands
|
|
|
|
The user may also ask for individual steps without the full workflow:
|
|
- "Evaluate this job posting" - Step 1 only
|
|
- "Write a CV for [company]" - Step 2 only
|
|
- "Write a cover letter for [role] at [company]" - Step 3 only
|
|
- "Help me prepare for an interview at [company]" - Step 4 only
|
|
- "What jobs should I look for?" - Career strategy discussion using profile + evaluation framework
|