@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.
Files changed (120) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +15 -0
  3. package/bin/fit-outpost.js +3 -0
  4. package/config/scheduler.json +34 -0
  5. package/package.json +63 -0
  6. package/src/agent-runner.js +189 -0
  7. package/src/index.js +5 -0
  8. package/src/kb-manager.js +228 -0
  9. package/src/outpost.js +417 -0
  10. package/src/scheduler.js +195 -0
  11. package/src/socket-server.js +336 -0
  12. package/src/state-manager.js +126 -0
  13. package/templates/.claude/agents/chief-of-staff.md +58 -0
  14. package/templates/.claude/agents/concierge.md +46 -0
  15. package/templates/.claude/agents/head-hunter.md +57 -0
  16. package/templates/.claude/agents/librarian.md +60 -0
  17. package/templates/.claude/agents/postman.md +47 -0
  18. package/templates/.claude/agents/recruiter.md +63 -0
  19. package/templates/.claude/settings.json +88 -0
  20. package/templates/.claude/skills/candidate-report/SKILL.md +139 -0
  21. package/templates/.claude/skills/candidate-report/references/report-template.html +203 -0
  22. package/templates/.claude/skills/candidate-report/references/report.css +438 -0
  23. package/templates/.claude/skills/candidate-report/references/rubric.md +76 -0
  24. package/templates/.claude/skills/candidate-report/scripts/render-pdf.mjs +48 -0
  25. package/templates/.claude/skills/deck-create/SKILL.md +75 -0
  26. package/templates/.claude/skills/deck-create/references/slide.css +35 -0
  27. package/templates/.claude/skills/deck-create/scripts/convert-to-pdf.mjs +47 -0
  28. package/templates/.claude/skills/deck-summarize/SKILL.md +139 -0
  29. package/templates/.claude/skills/deck-summarize/references/brief-template.md +85 -0
  30. package/templates/.claude/skills/deck-summarize/scripts/extract-pptx.mjs +210 -0
  31. package/templates/.claude/skills/doc-collab/SKILL.md +112 -0
  32. package/templates/.claude/skills/doc-create/SKILL.md +105 -0
  33. package/templates/.claude/skills/doc-create/scripts/convert-to-pdf.mjs +50 -0
  34. package/templates/.claude/skills/draft-emails/SKILL.md +141 -0
  35. package/templates/.claude/skills/draft-emails/references/template.md +26 -0
  36. package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +66 -0
  37. package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +139 -0
  38. package/templates/.claude/skills/extract-entities/SKILL.md +187 -0
  39. package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +14 -0
  40. package/templates/.claude/skills/extract-entities/references/conditions.md +55 -0
  41. package/templates/.claude/skills/extract-entities/references/content.md +104 -0
  42. package/templates/.claude/skills/extract-entities/references/links.md +48 -0
  43. package/templates/.claude/skills/extract-entities/references/recruitment.md +57 -0
  44. package/templates/.claude/skills/extract-entities/references/resolution.md +71 -0
  45. package/templates/.claude/skills/extract-entities/references/sources.md +70 -0
  46. package/templates/.claude/skills/extract-entities/references/templates-conditions.md +36 -0
  47. package/templates/.claude/skills/extract-entities/references/templates-goals-priorities.md +63 -0
  48. package/templates/.claude/skills/extract-entities/references/templates-people-orgs.md +67 -0
  49. package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +68 -0
  50. package/templates/.claude/skills/extract-entities/scripts/state.mjs +131 -0
  51. package/templates/.claude/skills/hyprnote-follow/SKILL.md +174 -0
  52. package/templates/.claude/skills/hyprnote-follow/references/coaching.md +118 -0
  53. package/templates/.claude/skills/hyprnote-follow/references/debrief.md +59 -0
  54. package/templates/.claude/skills/hyprnote-follow/references/meeting-types.md +14 -0
  55. package/templates/.claude/skills/hyprnote-follow/scripts/follow.mjs +243 -0
  56. package/templates/.claude/skills/hyprnote-process/SKILL.md +147 -0
  57. package/templates/.claude/skills/hyprnote-process/references/extraction.md +84 -0
  58. package/templates/.claude/skills/hyprnote-process/references/sessions.md +81 -0
  59. package/templates/.claude/skills/hyprnote-process/scripts/scan.mjs +246 -0
  60. package/templates/.claude/skills/hyprnote-trim/SKILL.md +177 -0
  61. package/templates/.claude/skills/manage-tasks/SKILL.md +152 -0
  62. package/templates/.claude/skills/manage-tasks/references/format.md +73 -0
  63. package/templates/.claude/skills/meeting-prep/SKILL.md +180 -0
  64. package/templates/.claude/skills/organize-files/SKILL.md +146 -0
  65. package/templates/.claude/skills/organize-files/scripts/organize-by-type.mjs +105 -0
  66. package/templates/.claude/skills/organize-files/scripts/summarize.mjs +91 -0
  67. package/templates/.claude/skills/req-assess/SKILL.md +137 -0
  68. package/templates/.claude/skills/req-assess/references/interview-template.md +62 -0
  69. package/templates/.claude/skills/req-assess/references/panel-template.md +117 -0
  70. package/templates/.claude/skills/req-assess/references/rubric.md +65 -0
  71. package/templates/.claude/skills/req-decide/SKILL.md +163 -0
  72. package/templates/.claude/skills/req-decide/references/rubric.md +63 -0
  73. package/templates/.claude/skills/req-decide/references/template.md +118 -0
  74. package/templates/.claude/skills/req-forget/SKILL.md +154 -0
  75. package/templates/.claude/skills/req-forget/references/classify.md +23 -0
  76. package/templates/.claude/skills/req-forget/references/locations.md +59 -0
  77. package/templates/.claude/skills/req-forget/references/report-template.md +67 -0
  78. package/templates/.claude/skills/req-scan/SKILL.md +145 -0
  79. package/templates/.claude/skills/req-scan/references/fallbacks.md +76 -0
  80. package/templates/.claude/skills/req-scan/references/filters.md +83 -0
  81. package/templates/.claude/skills/req-scan/references/sources.md +76 -0
  82. package/templates/.claude/skills/req-scan/references/state.md +54 -0
  83. package/templates/.claude/skills/req-scan/references/template.md +36 -0
  84. package/templates/.claude/skills/req-scan/scripts/state.mjs +396 -0
  85. package/templates/.claude/skills/req-screen/SKILL.md +151 -0
  86. package/templates/.claude/skills/req-screen/references/rubric.md +94 -0
  87. package/templates/.claude/skills/req-screen/references/template.md +91 -0
  88. package/templates/.claude/skills/req-track/SKILL.md +189 -0
  89. package/templates/.claude/skills/req-track/references/fields.md +114 -0
  90. package/templates/.claude/skills/req-track/references/signals.md +42 -0
  91. package/templates/.claude/skills/req-track/references/statuses.md +32 -0
  92. package/templates/.claude/skills/req-track/references/templates.md +127 -0
  93. package/templates/.claude/skills/req-workday/SKILL.md +162 -0
  94. package/templates/.claude/skills/req-workday/references/field-mapping.md +40 -0
  95. package/templates/.claude/skills/req-workday/references/status-mapping.md +38 -0
  96. package/templates/.claude/skills/req-workday/references/templates.md +126 -0
  97. package/templates/.claude/skills/req-workday/references/xlsx-format.md +56 -0
  98. package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +313 -0
  99. package/templates/.claude/skills/send-chat/SKILL.md +170 -0
  100. package/templates/.claude/skills/sync-apple-calendar/SKILL.md +145 -0
  101. package/templates/.claude/skills/sync-apple-calendar/references/SCHEMA.md +80 -0
  102. package/templates/.claude/skills/sync-apple-calendar/scripts/query.mjs +307 -0
  103. package/templates/.claude/skills/sync-apple-calendar/scripts/sync.mjs +332 -0
  104. package/templates/.claude/skills/sync-apple-mail/SKILL.md +151 -0
  105. package/templates/.claude/skills/sync-apple-mail/references/SCHEMA.md +115 -0
  106. package/templates/.claude/skills/sync-apple-mail/scripts/parse-emlx.mjs +389 -0
  107. package/templates/.claude/skills/sync-apple-mail/scripts/sync-helpers.mjs +372 -0
  108. package/templates/.claude/skills/sync-apple-mail/scripts/sync.mjs +239 -0
  109. package/templates/.claude/skills/sync-teams/SKILL.md +177 -0
  110. package/templates/.claude/skills/sync-teams/scripts/idb-reader.mjs +147 -0
  111. package/templates/.claude/skills/sync-teams/scripts/leveldb-reader.mjs +288 -0
  112. package/templates/.claude/skills/sync-teams/scripts/sync.mjs +381 -0
  113. package/templates/.claude/skills/upstream-skill/SKILL.md +130 -0
  114. package/templates/.claude/skills/upstream-skill/references/examples.md +80 -0
  115. package/templates/.claude/skills/weekly-update/SKILL.md +141 -0
  116. package/templates/.claude/skills/weekly-update/references/template.md +55 -0
  117. package/templates/CLAUDE.md +134 -0
  118. package/templates/USER.md +3 -0
  119. package/templates/apm.yml +5 -0
  120. 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
+ ```