# Shortlist: {profile.candidate.name} at All employers

<!-- Placeholders:
     {job.<field>} = that field of the job object from `active-ats` (api.md, Response fields)
     {requirement.<field>} = one item of `job.ai_requirements` (label, kind, importance, min_years, level, evidence); repeat the line per item
     {match.<field>} = this job's object in fit.json (tier, required_met, gaps, judgements, ...)
     {profile.<path>} = candidate-profile.json at that dotted path; `[]` = each item of a list
     {employer.<path>} = employer.json at that dotted path
     Anything in <angle brackets> is yours to write, from those sources only. -->

<!-- Fill one row per job from fit.json, strongest first. Tiers and counts come from fit.py; never re-rank by hand. -->

Searched: <the request URLs you used> · All employers active jobs: {employer.active_jobs} · <date>

| # | Job | Tier | Required met | Preferred met | Location | Pay | Arrangement |
|---|---|---|---|---|---|---|---|
| 1 | [{job.title}]({job.url}) (id {job.id}) | {match.tier} | {match.required_met}/{match.required_total} | {match.preferred_met}/{match.preferred_total} | {job.locations_derived} | {job.ai_salary_min_value}-{job.ai_salary_max_value} per {job.ai_salary_unit_text} | {job.ai_work_arrangement} |

## Why each one

**1. {job.title}**: the strongest evidence, quoted: "{requirement.evidence}". The gap that matters most:
"{requirement.evidence}" ({requirement.importance}). Judgements I made: {match.judgements}.

## Excluded, and why

- {job.title}: {match.filters}

Pay "not stated" means the posting does not say, not that it is low.
