@forwardimpact/outpost 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +15 -0
- package/bin/fit-outpost.js +3 -0
- package/config/scheduler.json +34 -0
- package/package.json +63 -0
- package/src/agent-runner.js +189 -0
- package/src/index.js +5 -0
- package/src/kb-manager.js +228 -0
- package/src/outpost.js +417 -0
- package/src/scheduler.js +195 -0
- package/src/socket-server.js +336 -0
- package/src/state-manager.js +126 -0
- package/templates/.claude/agents/chief-of-staff.md +58 -0
- package/templates/.claude/agents/concierge.md +46 -0
- package/templates/.claude/agents/head-hunter.md +57 -0
- package/templates/.claude/agents/librarian.md +60 -0
- package/templates/.claude/agents/postman.md +47 -0
- package/templates/.claude/agents/recruiter.md +63 -0
- package/templates/.claude/settings.json +88 -0
- package/templates/.claude/skills/candidate-report/SKILL.md +139 -0
- package/templates/.claude/skills/candidate-report/references/report-template.html +203 -0
- package/templates/.claude/skills/candidate-report/references/report.css +438 -0
- package/templates/.claude/skills/candidate-report/references/rubric.md +76 -0
- package/templates/.claude/skills/candidate-report/scripts/render-pdf.mjs +48 -0
- package/templates/.claude/skills/deck-create/SKILL.md +75 -0
- package/templates/.claude/skills/deck-create/references/slide.css +35 -0
- package/templates/.claude/skills/deck-create/scripts/convert-to-pdf.mjs +47 -0
- package/templates/.claude/skills/deck-summarize/SKILL.md +139 -0
- package/templates/.claude/skills/deck-summarize/references/brief-template.md +85 -0
- package/templates/.claude/skills/deck-summarize/scripts/extract-pptx.mjs +210 -0
- package/templates/.claude/skills/doc-collab/SKILL.md +112 -0
- package/templates/.claude/skills/doc-create/SKILL.md +105 -0
- package/templates/.claude/skills/doc-create/scripts/convert-to-pdf.mjs +50 -0
- package/templates/.claude/skills/draft-emails/SKILL.md +141 -0
- package/templates/.claude/skills/draft-emails/references/template.md +26 -0
- package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +66 -0
- package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +139 -0
- package/templates/.claude/skills/extract-entities/SKILL.md +187 -0
- package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +14 -0
- package/templates/.claude/skills/extract-entities/references/conditions.md +55 -0
- package/templates/.claude/skills/extract-entities/references/content.md +104 -0
- package/templates/.claude/skills/extract-entities/references/links.md +48 -0
- package/templates/.claude/skills/extract-entities/references/recruitment.md +57 -0
- package/templates/.claude/skills/extract-entities/references/resolution.md +71 -0
- package/templates/.claude/skills/extract-entities/references/sources.md +70 -0
- package/templates/.claude/skills/extract-entities/references/templates-conditions.md +36 -0
- package/templates/.claude/skills/extract-entities/references/templates-goals-priorities.md +63 -0
- package/templates/.claude/skills/extract-entities/references/templates-people-orgs.md +67 -0
- package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +68 -0
- package/templates/.claude/skills/extract-entities/scripts/state.mjs +131 -0
- package/templates/.claude/skills/hyprnote-follow/SKILL.md +174 -0
- package/templates/.claude/skills/hyprnote-follow/references/coaching.md +118 -0
- package/templates/.claude/skills/hyprnote-follow/references/debrief.md +59 -0
- package/templates/.claude/skills/hyprnote-follow/references/meeting-types.md +14 -0
- package/templates/.claude/skills/hyprnote-follow/scripts/follow.mjs +243 -0
- package/templates/.claude/skills/hyprnote-process/SKILL.md +147 -0
- package/templates/.claude/skills/hyprnote-process/references/extraction.md +84 -0
- package/templates/.claude/skills/hyprnote-process/references/sessions.md +81 -0
- package/templates/.claude/skills/hyprnote-process/scripts/scan.mjs +246 -0
- package/templates/.claude/skills/hyprnote-trim/SKILL.md +177 -0
- package/templates/.claude/skills/manage-tasks/SKILL.md +152 -0
- package/templates/.claude/skills/manage-tasks/references/format.md +73 -0
- package/templates/.claude/skills/meeting-prep/SKILL.md +180 -0
- package/templates/.claude/skills/organize-files/SKILL.md +146 -0
- package/templates/.claude/skills/organize-files/scripts/organize-by-type.mjs +105 -0
- package/templates/.claude/skills/organize-files/scripts/summarize.mjs +91 -0
- package/templates/.claude/skills/req-assess/SKILL.md +137 -0
- package/templates/.claude/skills/req-assess/references/interview-template.md +62 -0
- package/templates/.claude/skills/req-assess/references/panel-template.md +117 -0
- package/templates/.claude/skills/req-assess/references/rubric.md +65 -0
- package/templates/.claude/skills/req-decide/SKILL.md +163 -0
- package/templates/.claude/skills/req-decide/references/rubric.md +63 -0
- package/templates/.claude/skills/req-decide/references/template.md +118 -0
- package/templates/.claude/skills/req-forget/SKILL.md +154 -0
- package/templates/.claude/skills/req-forget/references/classify.md +23 -0
- package/templates/.claude/skills/req-forget/references/locations.md +59 -0
- package/templates/.claude/skills/req-forget/references/report-template.md +67 -0
- package/templates/.claude/skills/req-scan/SKILL.md +145 -0
- package/templates/.claude/skills/req-scan/references/fallbacks.md +76 -0
- package/templates/.claude/skills/req-scan/references/filters.md +83 -0
- package/templates/.claude/skills/req-scan/references/sources.md +76 -0
- package/templates/.claude/skills/req-scan/references/state.md +54 -0
- package/templates/.claude/skills/req-scan/references/template.md +36 -0
- package/templates/.claude/skills/req-scan/scripts/state.mjs +396 -0
- package/templates/.claude/skills/req-screen/SKILL.md +151 -0
- package/templates/.claude/skills/req-screen/references/rubric.md +94 -0
- package/templates/.claude/skills/req-screen/references/template.md +91 -0
- package/templates/.claude/skills/req-track/SKILL.md +189 -0
- package/templates/.claude/skills/req-track/references/fields.md +114 -0
- package/templates/.claude/skills/req-track/references/signals.md +42 -0
- package/templates/.claude/skills/req-track/references/statuses.md +32 -0
- package/templates/.claude/skills/req-track/references/templates.md +127 -0
- package/templates/.claude/skills/req-workday/SKILL.md +162 -0
- package/templates/.claude/skills/req-workday/references/field-mapping.md +40 -0
- package/templates/.claude/skills/req-workday/references/status-mapping.md +38 -0
- package/templates/.claude/skills/req-workday/references/templates.md +126 -0
- package/templates/.claude/skills/req-workday/references/xlsx-format.md +56 -0
- package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +313 -0
- package/templates/.claude/skills/send-chat/SKILL.md +170 -0
- package/templates/.claude/skills/sync-apple-calendar/SKILL.md +145 -0
- package/templates/.claude/skills/sync-apple-calendar/references/SCHEMA.md +80 -0
- package/templates/.claude/skills/sync-apple-calendar/scripts/query.mjs +307 -0
- package/templates/.claude/skills/sync-apple-calendar/scripts/sync.mjs +332 -0
- package/templates/.claude/skills/sync-apple-mail/SKILL.md +151 -0
- package/templates/.claude/skills/sync-apple-mail/references/SCHEMA.md +115 -0
- package/templates/.claude/skills/sync-apple-mail/scripts/parse-emlx.mjs +389 -0
- package/templates/.claude/skills/sync-apple-mail/scripts/sync-helpers.mjs +372 -0
- package/templates/.claude/skills/sync-apple-mail/scripts/sync.mjs +239 -0
- package/templates/.claude/skills/sync-teams/SKILL.md +177 -0
- package/templates/.claude/skills/sync-teams/scripts/idb-reader.mjs +147 -0
- package/templates/.claude/skills/sync-teams/scripts/leveldb-reader.mjs +288 -0
- package/templates/.claude/skills/sync-teams/scripts/sync.mjs +381 -0
- package/templates/.claude/skills/upstream-skill/SKILL.md +130 -0
- package/templates/.claude/skills/upstream-skill/references/examples.md +80 -0
- package/templates/.claude/skills/weekly-update/SKILL.md +141 -0
- package/templates/.claude/skills/weekly-update/references/template.md +55 -0
- package/templates/CLAUDE.md +134 -0
- package/templates/USER.md +3 -0
- package/templates/apm.yml +5 -0
- package/templates/knowledge/Briefings/.gitkeep +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Interview Assessment Template
|
|
2
|
+
|
|
3
|
+
Reference template for `req-assess` Step 6. Save to
|
|
4
|
+
`knowledge/Candidates/{Name}/interview-{date}.md`. Include only skills the
|
|
5
|
+
interview produced new evidence for — don't repeat the full matrix.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Interview Assessment — {Full Name}
|
|
9
|
+
|
|
10
|
+
**Interview type:** {Screening / Decomposition / Panel / Technical}
|
|
11
|
+
**Date:** {YYYY-MM-DD}
|
|
12
|
+
**Interviewers:** {Names}
|
|
13
|
+
**Assessed against:** {Discipline} {Level} — {Track}
|
|
14
|
+
|
|
15
|
+
## Interview Summary
|
|
16
|
+
|
|
17
|
+
{3–5 sentences: format, what happened, overall impression. Include the
|
|
18
|
+
key decision or outcome.}
|
|
19
|
+
|
|
20
|
+
## Skill Evidence
|
|
21
|
+
|
|
22
|
+
| Skill | Screening Rating | Interview Rating | Change | Evidence |
|
|
23
|
+
| --- | --- | --- | --- | --- |
|
|
24
|
+
| {skill} | {from screening.md} | {updated} | {↑ / ↓ / —} | {transcript evidence} |
|
|
25
|
+
|
|
26
|
+
### Confirmed Strengths
|
|
27
|
+
- {Strength confirmed by interview — cite specific moment}
|
|
28
|
+
|
|
29
|
+
### New Concerns
|
|
30
|
+
- {Concern revealed by interview — cite specific moment}
|
|
31
|
+
|
|
32
|
+
### Resolved Uncertainties
|
|
33
|
+
- {Gap or question from screening that the interview answered}
|
|
34
|
+
|
|
35
|
+
## Behaviour Evidence
|
|
36
|
+
|
|
37
|
+
| Behaviour | Screening Signal | Interview Observation | Updated Maturity |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| {behaviour} | {from screening.md} | {observation} | {maturity} |
|
|
40
|
+
|
|
41
|
+
## Level Assessment
|
|
42
|
+
|
|
43
|
+
**Screening estimate:** {level from screening.md}
|
|
44
|
+
**Interview evidence suggests:** {confirmed / adjusted level}
|
|
45
|
+
|
|
46
|
+
{Paragraph explaining the level decision, referencing specific
|
|
47
|
+
transcript moments and standard progression criteria.}
|
|
48
|
+
|
|
49
|
+
## Interviewer Observations
|
|
50
|
+
|
|
51
|
+
- **{Interviewer}:** "{observation or quote}"
|
|
52
|
+
- **{Interviewer}:** "{observation or quote}"
|
|
53
|
+
|
|
54
|
+
## Updated Screening Recommendation
|
|
55
|
+
|
|
56
|
+
**Previous:** {Interview / Interview with focus areas / Pass}
|
|
57
|
+
**Updated:** {Continue interviewing / Adjust level to {X} / Pass}
|
|
58
|
+
|
|
59
|
+
**Remaining uncertainties for the next stage:**
|
|
60
|
+
- {What still needs to be validated}
|
|
61
|
+
- {What the next interview should focus on}
|
|
62
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Panel Brief Template
|
|
2
|
+
|
|
3
|
+
Reference template for `req-assess` Step 7. Save to
|
|
4
|
+
`knowledge/Candidates/{Name}/panel.md`. Audience: **next-stage interviewers,
|
|
5
|
+
often non-engineers** — explain without jargon, focus on behaviours and scope.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Panel Brief — {Full Name}
|
|
9
|
+
## {Role Title} — {Level}
|
|
10
|
+
|
|
11
|
+
**Panel date:** {date or TBC}
|
|
12
|
+
**Prepared:** {YYYY-MM-DD}
|
|
13
|
+
**Prepared for:** {Panel interviewers / business colleagues / etc.}
|
|
14
|
+
**Role under evaluation:** {Full role title with level}
|
|
15
|
+
|
|
16
|
+
{If the level was adjusted from the original target, include a level
|
|
17
|
+
note explaining the change and why it matters.}
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Candidate Snapshot
|
|
22
|
+
|
|
23
|
+
| Field | Detail |
|
|
24
|
+
|---|---|
|
|
25
|
+
| **Current role** | {title — employer} |
|
|
26
|
+
| **Years of experience** | {N}+ years |
|
|
27
|
+
| **Background** | {2–3 key themes} |
|
|
28
|
+
| **Location** | {location} |
|
|
29
|
+
| **Source** | {how they entered the pipeline} |
|
|
30
|
+
|
|
31
|
+
**What makes this candidate interesting:** {2–3 sentences. Lead with
|
|
32
|
+
the most compelling signal.}
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Where We Are in the Process
|
|
37
|
+
|
|
38
|
+
| Stage | Date | Outcome |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| CV review | {date} | {outcome} |
|
|
41
|
+
| {Interview type} ({interviewer}) | {date} | {outcome} |
|
|
42
|
+
| **{Next stage}** | **{date}** | **← You are here** |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## What Previous Interviews Told Us
|
|
47
|
+
|
|
48
|
+
**What went well:**
|
|
49
|
+
- {strength 1}
|
|
50
|
+
- {strength 2}
|
|
51
|
+
|
|
52
|
+
**What fell short:**
|
|
53
|
+
- {concern 1}
|
|
54
|
+
- {concern 2}
|
|
55
|
+
|
|
56
|
+
**Interviewer conclusion:** {key takeaway in one sentence}
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## What {Level} {Track} Looks Like
|
|
61
|
+
|
|
62
|
+
Describe role expectations in non-technical language. Focus on
|
|
63
|
+
behaviours and scope, not technical skills.
|
|
64
|
+
|
|
65
|
+
**Key behaviours at this level:**
|
|
66
|
+
- **{Behaviour}** — {plain-language description}
|
|
67
|
+
|
|
68
|
+
**Skills most relevant for the panel to probe:**
|
|
69
|
+
- **{Skill}** — {why this matters for the business}
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## What the Panel Should Explore
|
|
74
|
+
|
|
75
|
+
Frame remaining uncertainties as questions the panel can answer through
|
|
76
|
+
conversation. Focus on business-facing capabilities.
|
|
77
|
+
|
|
78
|
+
### Suggested Focus Areas
|
|
79
|
+
|
|
80
|
+
**1. {Focus area title}**
|
|
81
|
+
{Context — explain the gap or uncertainty.}
|
|
82
|
+
|
|
83
|
+
> *"{Suggested question 1}"*
|
|
84
|
+
> *"{Suggested question 2}"*
|
|
85
|
+
|
|
86
|
+
**2. {Focus area title}**
|
|
87
|
+
{Context.}
|
|
88
|
+
|
|
89
|
+
> *"{Suggested question 1}"*
|
|
90
|
+
> *"{Suggested question 2}"*
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Known Strengths — Lean Into These
|
|
95
|
+
|
|
96
|
+
- **{Strength}:** {evidence summary}
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Known Risks — Probe, Don't Assume
|
|
101
|
+
|
|
102
|
+
- **{Risk}:** {evidence summary and what to look for}
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Screening Recommendation (Pre-Panel)
|
|
107
|
+
|
|
108
|
+
**{Recommendation}**
|
|
109
|
+
|
|
110
|
+
{2–3 sentence summary of the case for this candidate at this level.
|
|
111
|
+
State what the panel should look for to confirm or disconfirm.}
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
*This brief is a hiring aid for the panel. The final decision rests
|
|
116
|
+
with the panel and the hiring manager. All assessments are advisory.*
|
|
117
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Interview Assessment Rubric
|
|
2
|
+
|
|
3
|
+
Reference data for `req-assess` Steps 1, 3, 4, and 5.
|
|
4
|
+
|
|
5
|
+
## What to extract from the transcript
|
|
6
|
+
|
|
7
|
+
| Field | What to look for |
|
|
8
|
+
| ----------------------------- | --------------------------------------------------------- |
|
|
9
|
+
| **Interview type** | Screening, decomposition, panel, technical, etc. |
|
|
10
|
+
| **Interviewers** | Who conducted the interview |
|
|
11
|
+
| **Date** | When the interview took place |
|
|
12
|
+
| **Skill demonstrations** | Concrete examples of skills applied in real time |
|
|
13
|
+
| **Behaviour observations** | How the candidate acted under pressure, with others |
|
|
14
|
+
| **Self-identified strengths** | What the candidate claims they're good at |
|
|
15
|
+
| **Self-identified gaps** | What the candidate acknowledges as growth areas |
|
|
16
|
+
| **Red flags** | Contradictions with CV, concerning patterns |
|
|
17
|
+
| **Interviewer feedback** | Direct quotes or observations from interviewers |
|
|
18
|
+
| **Level signals** | Autonomy, scope, complexity demonstrated in responses |
|
|
19
|
+
| **Track signals** | Business immersion vs. platform thinking in their answers |
|
|
20
|
+
|
|
21
|
+
## Skill re-rating
|
|
22
|
+
|
|
23
|
+
**Interview evidence outranks CV evidence.** A candidate who claimed
|
|
24
|
+
`practitioner` but demonstrated `foundational` should be re-rated. The reverse
|
|
25
|
+
also applies. Every re-rating cites a specific moment, quote, or observation
|
|
26
|
+
from the transcript — "seemed strong" is not evidence.
|
|
27
|
+
|
|
28
|
+
| Interview evidence | Rating adjustment |
|
|
29
|
+
| ------------------------------------------- | ------------------------------------- |
|
|
30
|
+
| Demonstrated the skill live, under pressure | **Upgrade** — interview > CV claims |
|
|
31
|
+
| Discussed concrete examples with detail | **Confirm** at screening level or +1 |
|
|
32
|
+
| Vague or generic answers about this area | **Hold** at screening level |
|
|
33
|
+
| Struggled or revealed misunderstanding | **Downgrade** from screening level |
|
|
34
|
+
| Self-identified this as a gap | **Downgrade** and note honesty signal |
|
|
35
|
+
| Interviewer explicitly flagged a concern | **Downgrade** with interviewer quote |
|
|
36
|
+
|
|
37
|
+
## Behaviour signals
|
|
38
|
+
|
|
39
|
+
| Behaviour | Interview evidence |
|
|
40
|
+
| -------------------------- | -------------------------------------------------------------- |
|
|
41
|
+
| Own the Outcome | Takes responsibility, doesn't deflect, drives to resolution |
|
|
42
|
+
| Think in Systems | Considers second-order effects, trade-offs, system boundaries |
|
|
43
|
+
| Communicate with Precision | Clear explanations, appropriate detail, listens actively |
|
|
44
|
+
| Be Polymath Oriented | Draws on diverse knowledge, makes unexpected connections |
|
|
45
|
+
| Don't Lose Your Curiosity | Asks good questions, explores alternatives, admits not knowing |
|
|
46
|
+
|
|
47
|
+
## Behaviour maturity scale
|
|
48
|
+
|
|
49
|
+
| Maturity | Interview signal |
|
|
50
|
+
| --------------- | ------------------------------------------------------------ |
|
|
51
|
+
| `emerging` | Behaviour not observed or only when prompted |
|
|
52
|
+
| `developing` | Behaviour present but inconsistent or surface-level |
|
|
53
|
+
| `practicing` | Behaviour consistent and natural throughout the interview |
|
|
54
|
+
| `role_modeling` | Behaviour demonstrated at high level, influenced the room |
|
|
55
|
+
| `exemplifying` | Behaviour exceptional, set the standard for the conversation |
|
|
56
|
+
|
|
57
|
+
## Level signals
|
|
58
|
+
|
|
59
|
+
| Interview signal | Implication |
|
|
60
|
+
| --------------------------------------------------------- | ------------------------------ |
|
|
61
|
+
| Needed guidance to structure their approach | Level may be lower than est. |
|
|
62
|
+
| Self-directed; sound trade-offs independently | Level estimate confirmed |
|
|
63
|
+
| Mentored or coached others during the exercise | Level may be higher than est. |
|
|
64
|
+
| Struggled with complexity appropriate to the target level | Downgrade |
|
|
65
|
+
| Interviewer explicitly suggested a different level | Strong signal — weight heavily |
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: req-decide
|
|
3
|
+
description: >
|
|
4
|
+
Synthesize all evidence (CV screening, interview assessments, transcripts)
|
|
5
|
+
into a final hiring recommendation. Produces a comprehensive recommendation
|
|
6
|
+
document with full evidence trail, level/track/discipline confirmation, and
|
|
7
|
+
a clear hire/no-hire decision. Use when all interview stages are complete.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Hiring Decision
|
|
11
|
+
|
|
12
|
+
Synthesize all available evidence for a candidate into a final hiring
|
|
13
|
+
recommendation. This is the culmination of the hiring pipeline — every prior
|
|
14
|
+
assessment feeds in.
|
|
15
|
+
|
|
16
|
+
This is **Stage 3** of the three-stage pipeline:
|
|
17
|
+
|
|
18
|
+
1. `req-screen` — CV → interview or pass.
|
|
19
|
+
2. `req-assess` — transcript → updated evidence.
|
|
20
|
+
3. **Hire / no hire** (this skill) — all stages complete → recommendation.
|
|
21
|
+
|
|
22
|
+
## Trigger
|
|
23
|
+
|
|
24
|
+
- The user asks for a final hiring recommendation.
|
|
25
|
+
- All planned interview stages for a candidate are complete.
|
|
26
|
+
- The user asks "should we hire {Name}?".
|
|
27
|
+
- The user needs to compare finalists for a position.
|
|
28
|
+
|
|
29
|
+
## Prerequisites
|
|
30
|
+
|
|
31
|
+
- `fit-pathway` CLI installed.
|
|
32
|
+
- `knowledge/Candidates/{Name}/screening.md` exists.
|
|
33
|
+
- At least one `knowledge/Candidates/{Name}/interview-*.md`.
|
|
34
|
+
- `knowledge/Candidates/{Name}/brief.md` exists.
|
|
35
|
+
|
|
36
|
+
## Inputs
|
|
37
|
+
|
|
38
|
+
- All artifacts in `knowledge/Candidates/{Name}/`.
|
|
39
|
+
- Standard data via `fit-pathway`.
|
|
40
|
+
- `knowledge/Candidates/Insights.md` — cross-candidate context.
|
|
41
|
+
- `knowledge/Roles/*.md` — the candidate's requisition (positions, hiring
|
|
42
|
+
manager, domain lead).
|
|
43
|
+
- `knowledge/Goals/*.md`, `knowledge/Priorities/*.md` — strategic context.
|
|
44
|
+
- Other active candidates at the same level — relative positioning.
|
|
45
|
+
|
|
46
|
+
## Outputs
|
|
47
|
+
|
|
48
|
+
- `knowledge/Candidates/{Name}/recommendation.md` — final recommendation.
|
|
49
|
+
- Updated `knowledge/Candidates/{Name}/brief.md` — status and link.
|
|
50
|
+
- Updated `knowledge/Candidates/Insights.md` — cross-candidate observations.
|
|
51
|
+
|
|
52
|
+
<do_confirm_checklist goal="Verify the recommendation is grounded and
|
|
53
|
+
audit-ready">
|
|
54
|
+
|
|
55
|
+
- [ ] Every skill rating traces to a specific evidence source (stage + detail).
|
|
56
|
+
- [ ] Evidence hierarchy respected — interview evidence outranks CV.
|
|
57
|
+
- [ ] Level recommendation grounded in standard progression criteria.
|
|
58
|
+
- [ ] Track recommendation cites interview evidence, not just CV.
|
|
59
|
+
- [ ] Decision rules applied strictly; match % and gap counts verified.
|
|
60
|
+
- [ ] Risk assessment is honest — concerns not minimised to justify a hire.
|
|
61
|
+
- [ ] "Do not hire" written with the same rigour as "Hire" (GDPR Article 15:
|
|
62
|
+
candidate may request access).
|
|
63
|
+
- [ ] Brief updated with `[Hiring Recommendation](./recommendation.md)` and a
|
|
64
|
+
final pipeline entry.
|
|
65
|
+
- [ ] Recommendation could be shown to the candidate without embarrassment.
|
|
66
|
+
|
|
67
|
+
</do_confirm_checklist>
|
|
68
|
+
|
|
69
|
+
## Procedure
|
|
70
|
+
|
|
71
|
+
### 1. Gather all evidence
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
ls knowledge/Candidates/{Name}/
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Read in order: `brief.md`, `screening.md`, every `interview-*.md`, relevant
|
|
78
|
+
`transcript-*.md`, and `panel.md` if present. Build the chronological evidence
|
|
79
|
+
timeline (date / stage / source / key finding).
|
|
80
|
+
|
|
81
|
+
### 2. Build the final skill profile
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
bunx fit-pathway job {discipline} {level} --track={track} --skills
|
|
85
|
+
bunx fit-pathway progress {discipline} {level} --track={track}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
For each skill in the target job, pick the highest-fidelity evidence using the
|
|
89
|
+
[evidence hierarchy](references/rubric.md#evidence-hierarchy). Record final
|
|
90
|
+
rating, best evidence source, trajectory, confidence.
|
|
91
|
+
|
|
92
|
+
### 3. Build the final behaviour profile
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
bunx fit-pathway behaviour --list
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Apply the same hierarchy ([reference](references/rubric.md#behaviour-evidence)).
|
|
99
|
+
Record final maturity, best evidence, consistency.
|
|
100
|
+
|
|
101
|
+
### 4. Confirm level and track
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
bunx fit-pathway job {discipline} {lower_level} --track={track}
|
|
105
|
+
bunx fit-pathway job {discipline} {target_level} --track={track}
|
|
106
|
+
bunx fit-pathway progress {discipline} {lower_level} --track={track}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Apply the level-confirmation criteria in
|
|
110
|
+
[references/rubric.md](references/rubric.md#level-confirmation-criteria).
|
|
111
|
+
|
|
112
|
+
### 5. Read role context
|
|
113
|
+
|
|
114
|
+
If `brief.md` carries a `Req`:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
ls knowledge/Roles/ | grep "{req_number}"
|
|
118
|
+
cat "knowledge/Roles/{matching file}"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Capture remaining positions, hiring manager, domain lead, goal alignment, other
|
|
122
|
+
candidates on the same req, and channel (hr / vendor). Frame the recommendation
|
|
123
|
+
in terms of strategic impact.
|
|
124
|
+
|
|
125
|
+
### 6. Assess against the active pipeline
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
cat knowledge/Candidates/Insights.md
|
|
129
|
+
|
|
130
|
+
for dir in knowledge/Candidates/*/; do
|
|
131
|
+
if [ -f "$dir/screening.md" ]; then
|
|
132
|
+
head -5 "$dir/screening.md"
|
|
133
|
+
fi
|
|
134
|
+
done
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Apply the pipeline-context guidance in
|
|
138
|
+
[references/rubric.md](references/rubric.md#pipeline-context-step-5).
|
|
139
|
+
|
|
140
|
+
### 7. Pick the recommendation
|
|
141
|
+
|
|
142
|
+
Apply the [decision rules](references/rubric.md#decision-rules) and run the
|
|
143
|
+
[hire criteria check](references/rubric.md#hire-criteria-check).
|
|
144
|
+
|
|
145
|
+
### 8. Write the recommendation
|
|
146
|
+
|
|
147
|
+
Save to `knowledge/Candidates/{Name}/recommendation.md` using the template in
|
|
148
|
+
[references/template.md](references/template.md). Carry the **advisory-only**
|
|
149
|
+
banner. Cite specific evidence in skill, behaviour, level, and track sections.
|
|
150
|
+
|
|
151
|
+
### 9. Update brief and insights
|
|
152
|
+
|
|
153
|
+
Update `brief.md`:
|
|
154
|
+
|
|
155
|
+
- Set `Status` to `recommended` or `not-recommended`.
|
|
156
|
+
- Append `- [Hiring Recommendation](./recommendation.md)`.
|
|
157
|
+
- Add the final pipeline entry with date and outcome.
|
|
158
|
+
|
|
159
|
+
Update `knowledge/Candidates/Insights.md` only when there's a cross-candidate
|
|
160
|
+
observation worth keeping (strongest at level, sourcing channel pattern,
|
|
161
|
+
level-adjustment implications).
|
|
162
|
+
|
|
163
|
+
Use targeted Edit operations — never rewrite entire files.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Decision Rubric
|
|
2
|
+
|
|
3
|
+
Reference data for `req-decide` Steps 2–5.
|
|
4
|
+
|
|
5
|
+
## Evidence hierarchy
|
|
6
|
+
|
|
7
|
+
Highest to lowest fidelity. For each skill, pick the **highest tier** that
|
|
8
|
+
applies and use it as the source of the final rating.
|
|
9
|
+
|
|
10
|
+
1. **Live demonstration** — the candidate showed the skill in an interview
|
|
11
|
+
exercise.
|
|
12
|
+
2. **Detailed interview discussion** — the candidate gave specific, probing
|
|
13
|
+
answers.
|
|
14
|
+
3. **Interviewer observation** — an interviewer noted strength or concern.
|
|
15
|
+
4. **CV evidence with quantification** — concrete metrics, named projects.
|
|
16
|
+
5. **CV evidence without quantification** — described but vague.
|
|
17
|
+
6. **Not evidenced** — never surfaced across any stage.
|
|
18
|
+
|
|
19
|
+
For each skill record: **final rating**, **best evidence source**,
|
|
20
|
+
**trajectory** (↑ / ↓ / —), **confidence** (High = demonstrated live; Medium =
|
|
21
|
+
discussed well; Low = CV only or thin).
|
|
22
|
+
|
|
23
|
+
## Behaviour evidence
|
|
24
|
+
|
|
25
|
+
Same hierarchy. Behaviours assessed in interviews carry far more weight than CV
|
|
26
|
+
signals. For each: **final maturity**, **best evidence** (specific moment or
|
|
27
|
+
pattern), **consistency** (once vs. throughout).
|
|
28
|
+
|
|
29
|
+
## Level confirmation criteria
|
|
30
|
+
|
|
31
|
+
| Question | Answer informs |
|
|
32
|
+
| ---------------------------------------------------------- | ------------------------- |
|
|
33
|
+
| Does the candidate meet ≥ 70 % of skills at the target? | Level confirmation |
|
|
34
|
+
| Were level concerns from screening resolved in interviews? | Level upgrade / downgrade |
|
|
35
|
+
| Did interviewers explicitly suggest a different level? | Strong level signal |
|
|
36
|
+
| Does the candidate's scope and autonomy match the level? | Level fit |
|
|
37
|
+
| Which track energized the candidate in interviews? | Track confirmation |
|
|
38
|
+
|
|
39
|
+
## Decision rules
|
|
40
|
+
|
|
41
|
+
| Recommendation | Criteria |
|
|
42
|
+
| -------------------------- | ----------------------------------------------------------------------------------------- |
|
|
43
|
+
| **Hire** | ≥ 70 % Strong match at the final level, no unresolved core-skill gaps, strong behaviours |
|
|
44
|
+
| **Hire at adjusted level** | Strong candidate; evidence supports a different level than originally targeted |
|
|
45
|
+
| **Do not hire** | Unresolved core-skill gaps, behaviour concerns, or insufficient evidence after interviews |
|
|
46
|
+
|
|
47
|
+
### Hire criteria check
|
|
48
|
+
|
|
49
|
+
- ≥ 70 % of skills rated Strong match at the recommended level.
|
|
50
|
+
- No core skill gaps remain unresolved (core = top-tier skills for the
|
|
51
|
+
discipline/track combo).
|
|
52
|
+
- All agent-aligned standard behaviours at or above expected maturity.
|
|
53
|
+
- Level confirmed by interview evidence (not just CV).
|
|
54
|
+
- Track fit confirmed by interview evidence.
|
|
55
|
+
- No red flags from any interview stage.
|
|
56
|
+
|
|
57
|
+
## Pipeline context (Step 5)
|
|
58
|
+
|
|
59
|
+
This is **not** a ranking exercise — it provides context. Note:
|
|
60
|
+
|
|
61
|
+
- Whether this candidate fills a gap in the current pipeline.
|
|
62
|
+
- Whether stronger candidates exist for the same role.
|
|
63
|
+
- Whether this candidate is better suited to a different open position.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Recommendation Template
|
|
2
|
+
|
|
3
|
+
Reference template for `req-decide` Step 6. Save to
|
|
4
|
+
`knowledge/Candidates/{Name}/recommendation.md`.
|
|
5
|
+
|
|
6
|
+
```markdown
|
|
7
|
+
# Hiring Recommendation — {Full Name}
|
|
8
|
+
|
|
9
|
+
**Role:** {Discipline} {Level} — {Track}
|
|
10
|
+
**Req:** {Req number and title, or "—"}
|
|
11
|
+
**Hiring manager:** {Name from Role file, or "—"}
|
|
12
|
+
**Domain lead:** {Name from Role file, or "—"}
|
|
13
|
+
**Channel:** {hr / vendor}
|
|
14
|
+
**Date:** {YYYY-MM-DD}
|
|
15
|
+
**Prepared by:** Recruiter agent (agent-aligned engineering standard)
|
|
16
|
+
|
|
17
|
+
**⚠️ Advisory only — human decision required.**
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Recommendation
|
|
22
|
+
|
|
23
|
+
**{Hire / Hire at {adjusted level} / Do not hire}**
|
|
24
|
+
|
|
25
|
+
{3–5 sentence executive summary. Lead with the decision and the single
|
|
26
|
+
strongest reason. Then address the primary risk and whether interviews
|
|
27
|
+
resolved it. End with confidence.}
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Evidence Summary
|
|
32
|
+
|
|
33
|
+
### Process Timeline
|
|
34
|
+
|
|
35
|
+
| Date | Stage | Interviewer(s) | Outcome |
|
|
36
|
+
|------|-------|----------------|---------|
|
|
37
|
+
| {date} | CV Screening | — | {outcome} |
|
|
38
|
+
| {date} | {Interview type} | {names} | {outcome} |
|
|
39
|
+
|
|
40
|
+
### Final Skill Profile
|
|
41
|
+
|
|
42
|
+
Standard reference: `{discipline} {level} --track={track}`
|
|
43
|
+
|
|
44
|
+
| Skill | Expected | Final | Confidence | Best Evidence | Trajectory |
|
|
45
|
+
| --- | --- | --- | --- | --- | --- |
|
|
46
|
+
| {skill} | {level} | {level} | {High/Med/Low} | {stage} | {↑ / ↓ / —} |
|
|
47
|
+
|
|
48
|
+
**Skill match:** {N} % Strong, {N} % Adequate, {N} % Gap.
|
|
49
|
+
|
|
50
|
+
### Final Behaviour Profile
|
|
51
|
+
|
|
52
|
+
| Behaviour | Expected | Final | Best Evidence |
|
|
53
|
+
| --- | --- | --- | --- |
|
|
54
|
+
| {behaviour} | {maturity} | {maturity} | {observation} |
|
|
55
|
+
|
|
56
|
+
### Level Confirmation
|
|
57
|
+
|
|
58
|
+
**Target level:** {original target}
|
|
59
|
+
**Recommended level:** {confirmed or adjusted}
|
|
60
|
+
|
|
61
|
+
{Explain the level decision, referencing standard progression criteria
|
|
62
|
+
and specific interview evidence. If the level changed, recap the
|
|
63
|
+
journey.}
|
|
64
|
+
|
|
65
|
+
### Track Confirmation
|
|
66
|
+
|
|
67
|
+
**Recommended track:** {forward_deployed / platform / either}
|
|
68
|
+
|
|
69
|
+
{Explain track fit, referencing interview moments.}
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Risk Assessment
|
|
74
|
+
|
|
75
|
+
**Primary risk:** {single biggest concern and whether it was resolved}
|
|
76
|
+
**Mitigation:** {how to manage it if hiring proceeds}
|
|
77
|
+
|
|
78
|
+
**Secondary risks:**
|
|
79
|
+
- {Risk — severity and mitigation}
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Strengths to Leverage
|
|
84
|
+
|
|
85
|
+
Frame in terms of business impact, not just technical capability.
|
|
86
|
+
|
|
87
|
+
1. **{Strength}:** {evidence and expected impact}
|
|
88
|
+
2. **{Strength}:** {evidence and expected impact}
|
|
89
|
+
|
|
90
|
+
## Development Areas
|
|
91
|
+
|
|
92
|
+
Frame as investment, not weakness.
|
|
93
|
+
|
|
94
|
+
1. **{Area}:** {current → target level, development path}
|
|
95
|
+
2. **{Area}:** {current → target level, development path}
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Role Context
|
|
100
|
+
|
|
101
|
+
- **Requisition:** {Req number — title}
|
|
102
|
+
- **Remaining positions:** {N of M filled}
|
|
103
|
+
- **Hiring manager:** {name} | **Domain lead:** {name}
|
|
104
|
+
- **Channel:** {hr / vendor — and implications for engagement model}
|
|
105
|
+
|
|
106
|
+
## Pipeline Context
|
|
107
|
+
|
|
108
|
+
- **Pipeline position:** {relative to others on this req}
|
|
109
|
+
- **Unique value:** {what this candidate offers others don't}
|
|
110
|
+
- **Alternative fit:** {if not hired here, could they fit another open
|
|
111
|
+
role? Reference Role files.}
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
*This recommendation synthesizes all available evidence from {N}
|
|
116
|
+
stages conducted between {first date} and {last date}. The final
|
|
117
|
+
decision rests with the hiring manager. All assessments are advisory.*
|
|
118
|
+
```
|