Step 1: Match analysis

Reads profile.md as the canonical candidate profile, then waits. Each pasted job description is screened against the profile using a fixed format. Pasted form questions or writing tasks are answered using the writing guidelines instead.

Flow

flowchart TD
  Start([Step 1 begins]) --> Read[Read profile.md]
  Read --> Ready[Reply: Profile loaded.\nPaste a job description to screen.]
  Ready --> Wait([Wait for a paste])
  Wait --> Kind{What did you paste?}
  Kind -->|job description| Decide[Apply decision rules\nSkip → Maybe → Apply]
  Decide --> Format[Respond in the fixed format\nVERDICT · PROS · CONS · etc.]
  Kind -->|form question or\nwriting task| Answer[Answer using the\nwriting guidelines]
  Format --> Wait
  Answer --> Wait

What it reads

  • profile.md: the canonical candidate profile

Decision rules

Applied silently, in order, the first that matches wins:

  • ❌ Skip: one or more 🚫 blockers present, regardless of other fit.
  • ⚠️ Maybe: no 🚫 blockers, but two or more required (not preferred) qualifications are clearly unmet, or so many required qualifications are unverifiable that fit cannot be judged.
  • ✅ Apply: no 🚫 blockers, and most required qualifications are met. Unknown or unverifiable requirements do not count against an Apply; they are noted as unknown.

Output format

Each job description is screened into these sections:

Section Contents
[VERDICT] One line stating the chosen decision
[APPLICATION METHOD] Included only if the JD explicitly specifies how or where to apply
[SALARY] Included only if the JD explicitly states a salary range
[PROS] Bullet points
[CONS] Bullet points; 🚫 marks hard blockers only
[MISSING INFORMATION] Which items from the fixed checklist the JD does not state

Hard blockers (🚫)

🚫 is reserved for objective, non-negotiable disqualifiers, since a single 🚫 forces a ❌ Skip:

  • missing work authorization for the job’s location
  • a required security clearance the candidate does not hold
  • a required working language the candidate does not speak
  • a mandatory on-site location the candidate cannot be at, with no remote or relocation option stated
  • a mandatory timezone or working-hours overlap the candidate cannot meet
  • a legally or contractually mandatory certification the candidate does not hold
  • the role’s core technology or stack is one the candidate does not have, not merely one item missing from a longer required list

Years-of-experience gaps are never hard blockers, regardless of the size of the gap or whether the JD states a hard minimum; a shortfall is always a normal con instead. More experience than required is likewise never a blocker unless the JD states a maximum. Unclear-if-mandatory requirements are treated as cons, not blockers. Unmet preferred qualifications are labeled “preferred, not required” and never marked 🚫.

Missing information checklist

Every screen reports which of these the JD does not explicitly state (or “None, all covered”):

  • salary
  • visa sponsorship
  • relocation support
  • remote policy
  • work authorization
  • timezone or working-hours overlap
  • employment type (permanent / contract)

An item unstated here is unknown, not a negative; it can never be a 🚫 blocker or a con on its own.

Form questions and application writing

When you paste application form questions or ask Claude to write anything for the application (emails, answers, cover letters, forms, or messages), Claude answers using a fixed set of writing guidelines: plain English, short and compact, a calm and slightly detached tone, no unnecessary hyphens, no overpraising the company, and writing as someone capable of doing the job who is also comfortable if the opportunity doesn’t proceed.

Drift resistance

Before each screen, Claude re-anchors to the exact format and rules and silently corrects itself if it notices drift. Over a long session this can still slip; re-invoke the command to reset.


Claude Compass — MIT License