Apply

Job Description: $ARGUMENTS

dviresh93 updated 1mo ago
Claude CodeGeneric
View source ↗
# /apply — Resume Application Workflow

**Job Description:**
$ARGUMENTS

---

If the job description above is empty, respond: "Please paste the job description and I'll run the full fit analysis and resume workflow." Stop here.

---

## PHASE 0: INIT

Load in parallel:
- `job-prep/applications/_resources/resume-profile.json`
- `job-prep/applications/_resources/baseline-resume-data.json`

If either fails, tell the user which file could not be loaded and stop.

Parse the job description to extract company and role. Set:

run_id = {role-kebab}{company-kebab}{YYMMDD-HHMM}


Log:
```bash
echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","event":"FILES_LOADED","data":{}}' >> job-prep/applications/_logs/apply-runs.jsonl

PHASE 1: FIT ANALYSIS

Calculate the fit score internally using the rubric below. Do not write any files yet.

Rubric:

  • Required skills (0–40): List every required skill from the job description. Mark ✅ HAVE / ❌ MISSING / 🟡 PARTIAL. Score = (fully matched / total required) × 40, rounded.
  • Preferred skills (0–20): Same approach. Score = (fully matched / total preferred) × 20, rounded.
  • Years of experience (0–20): Meets/exceeds = 20. Within 1 yr short = 15. 1–2 yrs short = 10. 3+ yrs short = 0.
  • Domain/context (0–20): Direct match = 20. Same domain different context = 15. Adjacent/transferable = 10. Different domain = 0.

After calculating, write the following directly to the user as your response — this is your text output for this phase:


Fit Analysis — {Role} @ {Company}

Score: {N}/100

Category Score Notes
Required skills {N}/40 matched {X} of {Y} — missing: {list}
Preferred skills {N}/20 matched {X} of {Y}
Years of experience {N}/20 {requirement vs actual}
Domain/context {N}/20 {reasoning}

Gaps:

  • {gap — MINOR / MODERATE / MAJOR}

Recommendation: {Strong / Moderate / Weak} Fit

Proceed with application? (yes / no)


Then log:

echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","event":"FIT_SCORED","data":{"score":<n>,"breakdown":{"required":<n>,"preferred":<n>,"experience":<n>,"domain":<n>},"gaps":[<gaps>]}}' >> job-prep/applications/_logs/apply-runs.jsonl

Wait for user response. Do not create any files or continue until the user replies.

If no:

echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","event":"CHECKPOINT_FIT","data":{"decision":"rejected"}}' >> job-prep/applications/_logs/apply-runs.jsonl
echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","event":"RUN_COMPLETE","data":{"status":"ABORTED_FIT"}}' >> job-prep/applications/_logs/apply-runs.jsonl

Stop.

If yes:

echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","event":"CHECKPOINT_FIT","data":{"decision":"approved"}}' >> job-prep/applications/_logs/apply-runs.jsonl

Continue to Phase 2.


PHASE 2: SETUP + CUSTOMIZATION

Now create the application files and generate customizations.

2a — Create files:

Create job-prep/applications/{run_id}/job-posting.md:

# {Role} @ {Company}
**Date:** {YYYY-MM-DD}

## Fit Analysis
**Score:** {N}/100

| Category | Score | Notes |
|---|---|---|
| Required skills | {N}/40 | {notes} |
| Preferred skills | {N}/20 | {notes} |
| Years of experience | {N}/20 | {notes} |
| Domain/context | {N}/20 | {notes} |

**Gaps:** {gaps}
**Recommendation:** {recommendation}

---
## Job Description
{full raw job description}

Create job-prep/applications/{run_id}/scratchpad.md with Status: draft and these sections filled in:

# {Role} @ {Company}
**Date:** {YYYY-MM-DD HH:MM}
**Fit Score:** {N}/100
**Status:** draft

---

## Summary
{customized summary for this role}

---

## Skills Order
1. {most relevant section}
2. {section}
3. {section}
4. {section}
5. {section}

---

## {Customizable company from resume-profile.json} Bullet 1
{best variation from baseline _variations for this role}

---

## Projects
1. {project name from baseline}
2. {project name from baseline}
3. {project name from baseline}

---

## Notes

Customization rules:

  • Summary: rewrite for this role, lead with most relevant experience, match JD language where accurate
  • Skills order: reorder section names to put most relevant categories first (keep all keywords unchanged)
  • Bullet: choose or write the best variation from baseline-resume-data.json _variations for this role
  • Projects: select exactly 3 from baseline-resume-data.json projects, most relevant to this role

2b — Write the following directly to the user as your response:


Scratchpad created at job-prep/applications/{run_id}/scratchpad.md

Here's what I customized for this role:

Summary: {summary text}

Skills order: {section 1} → {section 2} → {section 3} → {section 4} → {section 5}

{Company} Bullet 1: {bullet text}

Projects: {project 1}, {project 2}, {project 3}

You can edit scratchpad.md directly or tell me what to change. Say approve to generate the PDF.


Then log:

echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","event":"SCRATCHPAD_WRITTEN","data":{"path":"job-prep/applications/<run_id>/scratchpad.md","iterations":1}}' >> job-prep/applications/_logs/apply-runs.jsonl

Wait for user response. Do not generate PDF until the user approves.

If change requested: edit only the requested section(s) in scratchpad.md, confirm what changed in one sentence, show the updated section, wait again. Increment iterations in the next log entry.

If approved: update scratchpad.md Status: draft → approved, then log:

echo '{"ts":"<now>","run_id":"<run_id>","company":"<company>","role":"<role>","folder":"<run_id>","even

Maintain Apply?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Apply on getagentictools](https://getagentictools.com/loops/dviresh93-apply-resume-application-workflow?ref=badge)