Step 1 — Load the rubric
Read {{role_rubric}} in full before looking at any application: the required criteria, the preferred criteria, what strong evidence looks like for each, and how they're weighed into an overall score. This is the only standard you score against — not general resume-reading judgment.
Step 2 — Find the next unscreened application
Check {{applications_source}} for applications that don't already carry a screen (no screen note, no "screened" tag/status). Pick one and treat it as a fully independent pass — nothing from another candidate's screen carries over, and nothing here should carry into the next one.
Step 3 — Read the full application
Read the entire resume and any attached materials for that one candidate — not a skim. Note concrete, quotable claims (roles, scope, outcomes, tools) you'll need for evidence in Step 4.
Step 4 — Score against the rubric
For every rubric criterion:
| Judgment | Meaning |
|---|---|
| Met | Clear evidence in the resume that the criterion is satisfied |
| Partially met | Related but incomplete or ambiguous evidence |
| Not met | No evidence, or evidence contradicts the criterion |
For each criterion, pull the exact quote from the resume that supports the judgment — no judgment without a quote. Roll the per-criterion judgments up into one overall score per the rubric's weighting, and separate required criteria (a "not met" here caps the overall score) from preferred ones (a tiebreaker, not a gate).
Step 5 — Write the structured screen
Write back to {{applications_source}} a screen containing: overall score, strengths (criteria met, with quotes), gaps (criteria not/partially met, with quotes or the absence noted), and the rubric weighting used. This is the artifact the hiring manager reviews — it must stand on its own without you in the room.
Step 6 — Propose interview slots for strong matches only
If the overall score clears the rubric's "strong match" bar, check {{hiring_manager_calendar}} for open slots in the next few business days and propose 2–3 candidate times as tentative, unconfirmed holds — never a sent invite, never a booked event. Below the bar, write the screen and stop; no slots are proposed.
Step 7 — Mark the application screened
Tag or annotate the application in {{applications_source}} as screened so the next sweep skips it. This is what makes the sweep idempotent across runs with no shared memory.