skills/general/candidate-compare/SKILL.md
Compare multiple candidates for a role and recommend the best fit. Load when user says "compare candidates", "select best candidate", "who should we hire", "compare [names] for [role]", "rank candidates", or "best candidate for [role]".
npx skillsauth add beam-ai-team/beam-next-skills candidate-compareInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Data-driven candidate selection based on interview performance.
Before fetching interview transcripts, saving comparison notes, or sharing recommendations, show the candidate names, role, transcript/JD sources, destination path, and whether personally sensitive hiring feedback is included. Require explicit user approval in the current turn before fetching from external systems or writing local files. Do not contact candidates, update ATS records, or make hiring decisions automatically from this skill.
When to use: After interviewing multiple candidates for the same role, compare them objectively
Prerequisites:
fathom-fetch-meetings— Get interview transcriptsworkable-fetch-jd— Pull job description for evaluation criteriaOutput: Ranked candidates with scores, strengths/gaps analysis, hiring recommendation
Expected format:
User: "compare Sarah, John, Ahmed for Product Manager"
Extract:
["Sarah", "John", "Ahmed"]Product ManagerAlternative triggers:
python3 03-skills/workable-fetch-jd/scripts/fetch_jd.py --job "[role]"
Extract key requirements from JD:
For each candidate, search Fathom:
# Search for meetings containing candidate name
curl -s --request GET \
--url 'https://api.fathom.ai/external/v1/meetings?include_summary=true&include_transcript=true' \
--header 'X-Api-Key: {FATHOM_API_KEY}' \
| jq '.items[] | select(.title | ascii_downcase | contains("{candidate_name}"))'
If multiple meetings found for a candidate, pick the most recent or ask user to select.
Fallback: If Fathom unavailable, ask user to paste transcripts.
Score each candidate on JD requirements:
| Dimension | Weight | What to Look For | |-----------|--------|------------------| | Experience Match | 25% | Years, industry, relevant projects | | Technical Skills | 25% | Demonstrated competency in required skills | | Problem Solving | 20% | How they approached challenges, structured thinking | | Communication | 15% | Clarity, conciseness, ability to explain complex ideas | | Culture Fit | 15% | Values alignment, work style, collaboration signals |
Scoring: 1-5 scale per dimension
Alongside the JD-fit score, classify each candidate as BARREL / POTENTIAL BARREL / AMMUNITION / PASS using Keith Rabois's framework. This is a pattern match, not a checklist — fire the "barrel alarm" on operator type, not on score arithmetic.
The 7 indicators (look for evidence in transcripts, project stories, summaries):
| Indicator | Signal | Anti-signal | |-----------|--------|-------------| | Takes initiative | "I noticed X and built Y without waiting" | "I was assigned to..." | | Ships high-quality work | "We iterated until it shipped at 95% accuracy" | "We hit the deadline" | | Values speed | "Rough first version live in a week, then iterated" | "We spent months designing" | | Takes accountability | "I owned it — and when it failed, here's what I did" | "The team's deliverable was..." | | Seen as a resource | "Teammates came to me when X broke" | No peer-pull evidence | | Recruits & motivates others | "I convinced 3 engineers to..." | "I worked with my assigned team" | | Handles adversity | "Compliance blocked us so I rebuilt on-prem" | "We were waiting for approval" |
Barrel arc (strongest single signal): Can the candidate credibly narrate Understand → Ideate → Take initiative → Recruit others → Deliver results on a real project? If yes, that's a BARREL flag even if individual indicators are missing.
Ownership language test: Count "I shipped" / "I owned" / "I convinced" vs "we did" / "the team" / "I was asked." Heavy "we"-framing without specifics is an Ammunition tell.
Classification rules:
| Tag | Criteria | Recommendation override | |-----|----------|------------------------| | BARREL 🛢️ | Most indicators fire AND can narrate the full arc on a real project | "Close on sight" — hire even if JD-fit weak, find or shape a role (per Rabois) | | POTENTIAL BARREL | 3–4 indicators fire OR partial arc with strong single signals | Watch-list; might emerge with right environment + stretch | | AMMUNITION | High-quality execution within defined scope; doesn't pull others | Hire if JD-fit strong. Not a put-down — necessary, just bounded throughput | | PASS | Neither barrel signals nor quality execution signals | Decline |
Critical: If a candidate classifies as BARREL but JD-fit < 3.5/5, the final recommendation must surface the Rabois override: "Close them anyway — find or shape a role later." Do not soften this; it's the user's hiring philosophy.
Evidence-or-flag rule: If an indicator can't be assessed from available data, write "insufficient evidence" — don't score it 0. Barrel classification is qualitative, not arithmetic.
Calculate weighted JD-fit score for each candidate:
JD Fit = (Experience × 0.25) + (Technical × 0.25) + (Problem Solving × 0.20) + (Communication × 0.15) + (Culture × 0.15)
Rank candidates by JD-fit score, but report the Barrel classification independently — it is not a tiebreaker, it is a separate decision dimension that can override the JD-fit rank (see BARREL override above).
This is THE format. Do not deviate without explicit user instruction.
# Candidate Comparison: [Role]
## Summary
| Rank | Candidate | JD Fit | Barrel | Recommendation |
|------|-----------|--------|--------|----------------|
| 1 | [Name] | X.X/5 | [BARREL 🛢️ / POTENTIAL BARREL / Ammunition / Pass] | [verdict] |
| 2 | [Name] | X.X/5 | [classification] | [verdict] |
> **Override:** [Triggered — see Recommendation] OR [Not triggered. No candidate classifies as BARREL, so JD-fit rank stands.]
Always print the Override line, even when not triggered — it confirms the check ran.
---
## [Candidate Name] — JD Fit X.X/5 · [CLASSIFICATION]
> Header embeds classification inline. No separate "Detailed Analysis" wrapper section, no rank number prefix, no ⭐ — the rank lives in the Summary table.
**JD-Fit Scores:**
| Dimension | Score | Notes |
|-----------|-------|-------|
| Experience Match | /5 | [brief note] |
| Technical Skills | /5 | [brief note] |
| Problem Solving | /5 | [brief note] |
| Communication | /5 | [brief note] |
| Culture Fit | /5 | [brief note] |
**Barrel Assessment:**
| Indicator | Fired? | Evidence |
|-----------|--------|----------|
| Takes initiative | ✅ / ⚠️ / ❌ / — | "[quote or 1-line evidence; '—' = insufficient evidence, never score 0]" |
| Ships high-quality work | ✅ / ⚠️ / ❌ / — | "[evidence]" |
| Values speed | ✅ / ⚠️ / ❌ / — | "[evidence]" |
| Takes accountability | ✅ / ⚠️ / ❌ / — | "[evidence]" |
| Seen as a resource | ✅ / ⚠️ / ❌ / — | "[evidence]" |
| Recruits & motivates | ✅ / ⚠️ / ❌ / — | "[evidence]" |
| Handles adversity | ✅ / ⚠️ / ❌ / — | "[evidence]" |
**Barrel arc** (Understand → Ideate → Initiative → Recruit → Deliver): **[Yes / Partial / No]** — [1-sentence note on whether they can credibly narrate the full loop on a real project named in the transcript]
**Ownership language ratio:** [observation on "I shipped/owned/convinced" vs "we did / the team / I was assigned"]
**Why [CLASSIFICATION] not [next-tier-up or next-tier-down]:** [REQUIRED — 2–4 sentences explaining the classification boundary call. Name the structural tells, not just the indicator counts. This is the most important paragraph in the section.]
**Strengths:**
- [Strength 1 with evidence]
- [Strength 2 with evidence]
**Gaps/Risks:**
- [Gap 1 — and how to mitigate or what to probe in next round]
**Key Quote:**
> "[memorable quote from interview]"
---
## [Next Candidate Name] — JD Fit X.X/5 · [CLASSIFICATION]
[Same structure — repeat the full block per candidate]
---
## Recommendation
**Hire / Advance / Pass:** [Name(s) and decision]
**Rationale:** [2–3 sentences. MUST cite both JD-fit AND Barrel classification. If both candidates are non-Barrel, name the structural reason for the recommendation (e.g., service-vs-product mismatch, AI/ML gap), not just the score gap.]
**Barrel override:**
- If a candidate classifies as **BARREL** but ranks below on JD-fit, surface verbatim: *"[BARREL Name] ranked below [other] on JD-fit, but is a Barrel. Per Rabois, close them — find or shape a role. Do not let JD-fit alone make this call."*
- If no override triggers, write: *"No override. JD-fit rank stands."*
**Probing questions for next round** (if any candidate is POTENTIAL BARREL):
- [Specific question to test the missing arc step, e.g., "Walk me through a project you championed against resistance — original idea, who else you needed, what you'd do differently."]
- [Specific question to confirm or downgrade the classification]
**Next Steps:**
- [ ] [Action item 1]
- [ ] [Action item 2]
---
## Comparison Matrix (vs. JD)
| Requirement (from JD) | [Candidate 1] | [Candidate 2] | [Candidate 3] |
|-----------------------|---------------|---------------|---------------|
| [Req 1] | ✅ Strong | ⚠️ Partial | ❌ Gap |
| [Req 2] | ✅ Strong | ✅ Strong | ⚠️ Partial |
| [Req 3] | ⚠️ Partial | ✅ Strong | ✅ Strong |
---
## Notes (optional but recommended)
- Use this section for structural observations: interviewer consistency, transcript quality caveats, hypotheses about why disqualified candidates were rejected vs. what the screening surfaced, etc.
- Example: "Both screens by Rabia Zaki — interviewer consistency holds." or "Adeel's summary is ~50% longer than Hannan's — could reflect substance or just verbosity; don't over-weight."
| User Says | Action | |-----------|--------| | "compare [name1], [name2], [name3] for [role]" | Full workflow | | "compare candidates for [role]" | Ask for candidate names | | "select best candidate" | Ask for role and names | | "who should we hire for [role]" | Ask for names | | "rank candidates for [role]" | Ask for names | | "best candidate for [role]" | Ask for names |
Connected skills:
| Skill | Purpose |
|-------|---------|
| fathom-fetch-meetings | Get interview transcripts by candidate name |
| workable-fetch-jd | Pull job requirements for evaluation criteria |
Example Flow:
Manager: "compare Sarah Chen, John Smith, Ahmed Hassan for Product Manager"
→ AI fetches Product Manager JD from Workable
→ AI searches Fathom for "Sarah Chen", "John Smith", "Ahmed Hassan"
→ AI evaluates each against JD requirements
→ AI outputs ranked comparison with recommendation
| Scenario | Handling | |----------|----------| | Candidate not found in Fathom | Ask user to paste transcript or skip candidate | | Multiple meetings for same candidate | Use most recent, or ask user to select | | JD not found in Workable | Ask user to paste JD or describe role requirements | | Only 2 candidates | Run comparison with 2 | | Tie in scores | Break tie with qualitative analysis, highlight trade-offs |
Version: 1.2 | Created: 2026-02-06 | Updated: 2026-06-12
Changelog:
## Name — JD Fit X.X/5 · CLASSIFICATION), no rank prefix or ⭐. Override line always printed under Summary (even when not triggered). Required "Why [CLASSIFICATION] not [next-tier]:" rationale paragraph per candidate. Probing-questions block in Recommendation when any candidate is POTENTIAL BARREL. Notes section for structural observations.tools
Build a Palantir-shape, PDF-native use-case proposal document for a sophisticated enterprise account: research-grounded use cases (each with description, challenge, impact, value), an operating-graph ontology page, a recommended PoC with a week-by-week plan, and a closing page that asks for one decision. Load when a client asks us to 'propose high-impact use cases', requests a use-case presentation/catalog for a function (finance, HR, ops), or when a technical evaluation team will review candidates to pick a PoC. NOT for single-account cold outreach (use prospect-brief), full process diagnostics (use operating-diagnostic), or priced proposals (use proposal-creation).
development
Convert Beam Figma slide designs into high-fidelity, editable HTML presentation decks. Use when Codex is asked to audit Figma slides, extract slide templates, rebuild Beam slides as HTML decks, decide whether Figma imagery should be exported or rebuilt in HTML/CSS, create Beam/Prism-compatible deck templates, or improve fidelity of existing Beam HTML slide rebuilds.
development
Use the Beam AI reusable slide library: individual HTML slide templates extracted from Beam Figma rebuilds, kept separate from deck themes and full deck templates. Load when the user asks for a slide library, specific Beam slide patterns, reusable Figma-inspired slides, Prism slide-library items, or slide-level HTML templates.
development
Use Beam AI deck and report design packs, HTML templates, and curated examples to create sales decks, customer intro decks, RPO decks, and DIN A4 use-case proposal reports. Load when the user asks for Beam-branded presentation templates, Prism-compatible deck templates, Beam report templates, customer intro decks, commercial proposals, or reusable HTML deck/report examples.