| name | email-triage |
| description | Review and rank job leads from the email pipeline. Use this skill when the user says "check my email pipeline," "review new leads," "what came in from email," "show me the ranked jobs," "triage the email queue," "any new leads?", "process my forwarded emails," or when the user wants to review pending_review jobs from the email-to-job pipeline. Also trigger when the user says "promote this lead" or "skip this one" while reviewing pipeline results. This skill presents scored leads in ranked order and lets the user decide which to promote to full job-intake evaluation. Do NOT trigger for evaluating a specific job description the user pastes (that's job-intake), for updating status on existing applications (that's job-tracker), or for running the pipeline scripts (that's email-pipeline-runner).
|
| recommended_model | {"default":"sonnet","reasoning":"Presenting ranked data, summarizing scores, and handling promote/skip decisions is structured work that benefits from Sonnet's reasoning. The skill needs to present information clearly and handle batch review commands.\n","upgrade_to_opus_when":"The user asks for strategic advice about the batch (\"should I even bother with these stretch roles?\") or wants comparative analysis across many leads.\n"} |
Email Triage — Review, Promote, and Skip Pipeline Leads
Intent
- The user's time is the scarcest resource — present leads ranked by fit so the best options are reviewed first; never force the user to scroll through long-shot leads to find the strong matches
- Automation results are provisional, not authoritative — the pipeline's company/role extraction and scoring are best-effort; always show confidence levels and flag uncertain matches
- Promote sparingly, skip freely — promoting a lead triggers a full job-intake evaluation (which takes 5-10 minutes); skipping costs nothing; the default disposition should be skip unless the match is promising
- Never lose a lead silently — unresolved items (parsing failures, missing career pages) get surfaced in every review until the user explicitly dismisses them
- Batch processing respects idempotency — re-running the pipeline on the same email batch produces the same results; no duplicate folders, no duplicate tracker rows
- Pipeline status is always visible — the user can ask "where are things?" and get a count of emails in each stage (raw, parsed, sourced, scored, reviewed)
- Review a full batch in under 5 minutes; individual promote/skip decisions in under 30 seconds — the presentation format must be scannable
Why this skill exists
The email pipeline produces a ranked list of job leads, but the user still needs to make the final call on which ones are worth the full job-intake evaluation. This skill is the decision point — it presents the ranked list, accepts promote/skip commands, and bridges to the existing job-intake skill for promoted leads.
Prerequisites
This skill expects:
pipeline/review_queue.json to exist (generated by job_score.py)
- Application folders with
metadata.json (status = pending_review) for each lead
applications/index.json and tracker.xlsx updated with pipeline entries
Workflow
Step 0: Check pipeline status
Read pipeline/review_queue.json. If it doesn't exist or is empty, tell the user:
- "No leads pending review. Forward some job emails and run the pipeline first."
- If the file exists but all leads have been reviewed, say "All caught up — no new leads."
Step 1: Present the ranked list
For each lead in rank order, display:
[Rank] Company — Role Title
Score: Strong/Good/Stretch/Long Shot (XX% match) | Source: LinkedIn/Indeed/etc.
Top matches: [2-3 strongest requirement matches]
Gaps: [1-2 most significant gaps]
Flags: [employment type, location, confidence, red flags]
Group by score tier: Strong first, then Good, Stretch, Long Shot.
Example:
## Strong (2)
[1] HealthFirst Technologies — VP of Engineering
Score: Strong (87% match) | Source: LinkedIn
Matches: team building (0→22), HIPAA compliance, microservices architecture
Gaps: none
Remote | $200K-$280K
[2] MedTech Solutions — Director of Engineering
Score: Strong (82% match) | Source: Indeed
Matches: healthcare IT, AI/ML integration, agile transformation
Gaps: Kubernetes (partial — has Docker/AWS)
Hybrid | No comp listed
## Good (3)
...
Step 2: Accept review commands
The user can issue:
- "promote 1, 3, 5" — mark those leads for full job-intake evaluation
- "skip 2, 4" — mark as
skipped with today's date
- "promote all strong" — bulk promote by tier
- "skip all long shots" — bulk skip by tier
- "tell me more about 3" — show full job description for that lead
- "skip all" — skip the entire batch
- "show unresolved" — display leads where automation failed
Step 3: Process promotes
For promoted leads:
- Update
metadata.json: status from pending_review to evaluating
- Update
tracker.xlsx: status column to "Evaluating"
- Update
applications/index.json status
- Ask: "Want to evaluate the first promoted lead now?" — if yes, chain to job-intake skill with the job description from the application folder
Step 4: Process skips
For skipped leads:
- Update
metadata.json: status to skipped, set skip_date to today
- Optionally capture skip reason: "Any reason? (optional)" — store in
skip_reason
- Update
tracker.xlsx: status column to "Skipped"
- Update
applications/index.json status
- Remove from
review_queue.json leads list
Step 5: Surface unresolved items
Show any leads where automation failed:
## Unresolved (2)
- Unknown Startup — Engineering Director: Company career page not found
- Stealth Co — VP Engineering: Company name not provided in email
Options:
"I know the company — it's actually {name}" → manual company correction, re-run career search
"Here's the job posting URL: {url}" → manual URL override, scrape that URL
"Just skip it" → mark as skipped
Step 6: Report stale items
If any pending_review items are older than 7 days:
⚠ 3 leads have been pending review for 7+ days. Job postings may have been taken down.
Consider reviewing or skipping them.
Skill composition
| Upstream | This skill | Downstream |
|---|
| email pipeline scripts (produce review_queue.json) | email-triage (user reviews and decides) | job-intake (full evaluation of promoted leads) |
Edge cases
- Empty queue: Tell the user, suggest forwarding more emails or running the pipeline
- Stale reviews: Warn if items are 7+ days old
- Partial pipeline: Some leads sourced, some not — show what's ready, note what's in progress
- User wants to re-review skipped items: Support "show skipped" command to list recently skipped leads with option to un-skip (change back to
pending_review)
- All leads are long shots: Suggest reviewing pipeline sources — maybe the email alerts need reconfiguration
- Promoted lead has low confidence: Warn "This lead has low extraction confidence (0.4) — verify the job description before investing time in full evaluation"