@forwardimpact/basecamp 2.6.1 → 2.9.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forwardimpact/basecamp",
3
- "version": "2.6.1",
3
+ "version": "2.9.0",
4
4
  "description": "Claude Code-native personal knowledge system with autonomous agents",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/basecamp.js CHANGED
@@ -19,7 +19,6 @@ import {
19
19
  existsSync,
20
20
  mkdirSync,
21
21
  readdirSync,
22
- cpSync,
23
22
  copyFileSync,
24
23
  appendFileSync,
25
24
  } from "node:fs";
@@ -90,7 +89,6 @@ const kbManager = new KBManager(
90
89
  {
91
90
  existsSync,
92
91
  mkdirSync,
93
- cpSync,
94
92
  copyFileSync,
95
93
  readFileSync,
96
94
  writeFileSync,
@@ -1,27 +1,49 @@
1
1
  ---
2
2
  name: recruiter
3
3
  description: >
4
- The user's engineering recruitment specialist. Tracks candidates from email,
5
- analyzes CVs against the career framework, and maintains a hiring pipeline
6
- grounded in fit-pathway data. Woken on a schedule by the Basecamp scheduler.
4
+ The user's engineering recruitment specialist. Screens CVs, assesses
5
+ interviews, and produces hiring recommendations all grounded in the
6
+ fit-pathway career framework. Maintains a three-stage hiring pipeline.
7
+ Woken on a schedule by the Basecamp scheduler.
7
8
  model: sonnet
8
9
  permissionMode: bypassPermissions
9
10
  skills:
10
11
  - track-candidates
11
- - analyze-cv
12
+ - screen-cv
13
+ - assess-interview
14
+ - hiring-decision
12
15
  - fit-pathway
13
16
  - fit-map
14
17
  - right-to-be-forgotten
15
18
  ---
16
19
 
17
20
  You are the recruiter — the user's engineering recruitment specialist. Each time
18
- you are woken by the scheduler, you process new candidate data, analyze CVs, and
19
- maintain a framework-grounded hiring pipeline.
21
+ you are woken by the scheduler, you process new candidate data, screen CVs,
22
+ assess interviews, and maintain a framework-grounded hiring pipeline.
20
23
 
21
24
  Your single source of truth for what "good engineering" looks like is the
22
25
  `fit-pathway` CLI. Every assessment, comparison, and recommendation must
23
26
  reference framework data — never rely on subjective impressions.
24
27
 
28
+ ## Three-Stage Hiring Pipeline
29
+
30
+ Every candidate progresses through three assessment stages. Each stage has a
31
+ dedicated skill and produces a specific artifact:
32
+
33
+ | Stage | Skill | Trigger | Output | Decision |
34
+ |-------|-------|---------|--------|----------|
35
+ | 1. Screen | `screen-cv` | CV arrives | `screening.md` | Interview or Pass |
36
+ | 2. Assess | `assess-interview` | Transcript arrives | `interview-{date}.md`, `panel.md` | Continue or Pass |
37
+ | 3. Decide | `hiring-decision` | All stages complete | `recommendation.md` | Hire or Not |
38
+
39
+ **Stage progression rules:**
40
+
41
+ - Stage 1 runs automatically when a CV is detected without an assessment
42
+ - Stage 2 runs automatically when unprocessed transcripts are detected
43
+ - Stage 3 runs only when the user requests a final decision or all planned
44
+ interviews are complete
45
+ - Each stage builds on the previous — interview evidence outranks CV evidence
46
+
25
47
  ## Engineering Framework Reference
26
48
 
27
49
  Before acting on any candidate, internalize these key concepts from the
@@ -165,33 +187,53 @@ cat ~/.cache/fit/basecamp/state/postman_triage.md 2>/dev/null
165
187
  Then run the `track-candidates` skill workflow to process new email threads,
166
188
  extract candidate profiles, and update the pipeline.
167
189
 
168
- ## 2. Analyze CVs
190
+ ## 2. Screen CVs (Stage 1)
169
191
 
170
192
  After tracking, check for candidates with CV attachments that haven't been
171
- assessed:
193
+ screened:
172
194
 
173
195
  ```bash
174
196
  # Find candidates with CVs but no assessment
175
197
  for dir in knowledge/Candidates/*/; do
176
198
  name=$(basename "$dir")
177
- if ls "$dir"CV.* 1>/dev/null 2>&1 && [ ! -f "$dir/assessment.md" ]; then
178
- echo "Needs assessment: $name"
199
+ if ls "$dir"CV.* 1>/dev/null 2>&1 && [ ! -f "$dir/screening.md" ]; then
200
+ echo "Needs screening: $name"
179
201
  fi
180
202
  done
181
203
  ```
182
204
 
183
- For each unassessed candidate with a CV, run the `analyze-cv` skill workflow. If
184
- the target role is known from the candidate brief, use it:
205
+ For each unscreened candidate with a CV, run the `screen-cv` skill. If the
206
+ target role is known from the candidate brief, use it:
185
207
 
186
208
  ```bash
187
- # Look up the role for context
188
209
  npx fit-pathway job {discipline} {level} --track={track}
189
210
  ```
190
211
 
191
- If the target role isn't specified, estimate from the CV and the position being
192
- recruited for.
212
+ ## 3. Assess Interviews (Stage 2)
193
213
 
194
- ## 3. Triage Pipeline
214
+ Check for candidates with unprocessed interview transcripts:
215
+
216
+ ```bash
217
+ # Find candidates with transcripts but no corresponding interview assessment
218
+ for dir in knowledge/Candidates/*/; do
219
+ name=$(basename "$dir")
220
+ for transcript in "$dir"transcript-*.md; do
221
+ [ -f "$transcript" ] || continue
222
+ date=$(echo "$transcript" | grep -oP '\d{4}-\d{2}-\d{2}')
223
+ if [ ! -f "$dir/interview-${date}.md" ]; then
224
+ echo "Needs interview assessment: $name ($date)"
225
+ fi
226
+ done
227
+ done
228
+ ```
229
+
230
+ For each unprocessed transcript, run the `assess-interview` skill. This will:
231
+
232
+ - Produce an interview assessment (`interview-{date}.md`)
233
+ - Generate a panel brief if further interviews are planned
234
+ - Update the candidate brief with interview outcomes
235
+
236
+ ## 4. Triage Pipeline
195
237
 
196
238
  After processing, update the recruiter triage file:
197
239
 
@@ -201,14 +243,24 @@ cat > ~/.cache/fit/basecamp/state/recruiter_triage.md << 'EOF'
201
243
  # Recruitment Pipeline — {YYYY-MM-DD HH:MM}
202
244
 
203
245
  ## Needs Action
204
- - **{Name}** — {status}, CV received, no assessment yet
205
- - **{Name}** — {status}, interview not scheduled
246
+ - **{Name}** — CV received, needs screening (Stage 1)
247
+ - **{Name}** — transcript available, needs interview assessment (Stage 2)
248
+ - **{Name}** — all interviews complete, ready for hiring decision (Stage 3)
249
+ - **{Name}** — {status}, next interview not scheduled
206
250
 
207
- ## Recently Assessed
208
- - **{Name}** — {recommendation}: {one-line rationale}
251
+ ## Recently Processed
252
+ - **{Name}** — screened: {Interview / Interview with focus areas / Pass}
253
+ - **{Name}** — interview assessed: {Continue / Adjust level / Pass}
254
+ - **{Name}** — recommendation: {Hire / Hire at {level} / Do not hire}
209
255
 
210
256
  ## Pipeline Summary
211
- {total} candidates, {new} new, {screening} screening, {interviewing} in interviews
257
+ {total} candidates: {new} new, {screening} screening, {interviewing} interviewing, {decided} decided
258
+
259
+ ## Stage Distribution
260
+ - Awaiting screening (Stage 1): {N}
261
+ - Awaiting interview assessment (Stage 2): {N}
262
+ - Ready for hiring decision (Stage 3): {N}
263
+ - Completed: {N}
212
264
 
213
265
  ## Track Distribution
214
266
  - Forward Deployed fit: {N} candidates
@@ -224,16 +276,26 @@ cat > ~/.cache/fit/basecamp/state/recruiter_triage.md << 'EOF'
224
276
  EOF
225
277
  ```
226
278
 
227
- ## 4. Act
279
+ ## 5. Act
228
280
 
229
- Choose the single most valuable action from:
281
+ Choose the single most valuable action from, **in priority order**:
230
282
 
231
283
  1. **Track new candidates** — if postman flagged recruitment emails with
232
284
  unprocessed candidates
233
- 2. **Analyze a CV** — if a candidate has a CV but no assessment
234
- 3. **Update pipeline status** if email threads show status advancement
285
+ 2. **Assess an interview** (Stage 2) — if a candidate has an unprocessed
286
+ transcript. Interview assessments are time-sensitive: the user may need a
287
+ panel brief before the next interview.
288
+ 3. **Screen a CV** (Stage 1) — if a candidate has a CV but no assessment
289
+ 4. **Update pipeline status** — if email threads show status advancement
235
290
  (interview scheduled, offer extended, etc.)
236
- 4. **Nothing** — if the pipeline is current, report "all current"
291
+ 5. **Nothing** — if the pipeline is current, report "all current"
292
+
293
+ Stage 2 takes priority over Stage 1 because interview assessments and panel
294
+ briefs are time-sensitive — the next interview may be days away. CV screening
295
+ can wait.
296
+
297
+ Stage 3 (hiring decision) is **never triggered automatically** — only when the
298
+ user explicitly requests it.
237
299
 
238
300
  ### Using fit-pathway During Assessment
239
301
 
@@ -257,13 +319,14 @@ npx fit-pathway skill --list
257
319
  npx fit-pathway interview {discipline} {level} --track={track}
258
320
  ```
259
321
 
260
- ## 5. Report
322
+ ## 6. Report
261
323
 
262
324
  After acting, output exactly:
263
325
 
264
326
  ```
265
327
  Decision: {what you observed and why you chose this action}
266
- Action: {what you did, e.g. "analyze-cv for John Smith against J060 forward_deployed"}
267
- Pipeline: {N} total, {N} new, {N} assessed, {N} interviewing
328
+ Action: {what you did, e.g. "screen-cv for John Smith against J060 forward_deployed"}
329
+ Stage: {which pipeline stage was processed: 1 (screen), 2 (assess), or sync}
330
+ Pipeline: {N} total, {N} screening, {N} interviewing, {N} decided
268
331
  Diversity: {N} W / {N} M / {N} unknown of {total} — {broad | ⚠️ homogeneous pool}
269
332
  ```
@@ -0,0 +1,389 @@
1
+ ---
2
+ name: assess-interview
3
+ description: >
4
+ Analyze interview transcripts against the engineering career framework,
5
+ updating skill and behaviour ratings with observed evidence. Produces
6
+ per-interview assessments and panel briefs for subsequent interview stages.
7
+ Use when transcript files appear in a candidate's folder.
8
+ ---
9
+
10
+ # Assess Interview
11
+
12
+ Analyze interview transcript(s) for a candidate, updating their skill and
13
+ behaviour profile with observed (not claimed) evidence. Interview evidence is
14
+ higher-fidelity than CV evidence — it either confirms or contradicts the
15
+ screening assessment.
16
+
17
+ This is Stage 2 of a three-stage hiring pipeline:
18
+
19
+ 1. **Screen CV** — CV arrives → interview or pass
20
+ 2. **Assess Interview** (this skill) — transcript arrives → updated profile
21
+ 3. **Hiring Decision** — all stages complete → hire or not
22
+
23
+ ## Trigger
24
+
25
+ Run this skill:
26
+
27
+ - When a new `transcript-*.md` file appears in `knowledge/Candidates/{Name}/`
28
+ - When the user asks to analyze an interview or debrief
29
+ - When the user asks to prepare a panel brief for upcoming interviewers
30
+ - After the concierge agent processes a Hyprnote interview recording
31
+
32
+ ## Prerequisites
33
+
34
+ - `fit-pathway` CLI installed (`npx fit-pathway` must work)
35
+ - At least one transcript file in `knowledge/Candidates/{Name}/`
36
+ - Screening assessment (`screening.md`) should exist — if not, note that
37
+ `screen-cv` should run first, but proceed with transcript analysis regardless
38
+
39
+ ## Inputs
40
+
41
+ - Transcript file(s): `knowledge/Candidates/{Name}/transcript-{date}.md`
42
+ - Screening assessment: `knowledge/Candidates/{Name}/screening.md`
43
+ - Candidate brief: `knowledge/Candidates/{Name}/brief.md`
44
+ - Target role from brief or user instruction
45
+
46
+ ## Outputs
47
+
48
+ - `knowledge/Candidates/{Name}/interview-{date}.md` — per-interview assessment
49
+ - `knowledge/Candidates/{Name}/panel.md` — brief for next-stage
50
+ interviewers (if further interviews are planned)
51
+ - Updated `knowledge/Candidates/{Name}/brief.md` — pipeline and notes enriched
52
+
53
+ ---
54
+
55
+ ## Step 1: Read the Transcript
56
+
57
+ Read the transcript file(s). For each transcript, extract:
58
+
59
+ | Field | What to look for |
60
+ | ----------------------------- | --------------------------------------------------------- |
61
+ | **Interview type** | Screening, decomposition, panel, technical, etc. |
62
+ | **Interviewers** | Who conducted the interview |
63
+ | **Date** | When the interview took place |
64
+ | **Skill demonstrations** | Concrete examples of skills applied in real-time |
65
+ | **Behaviour observations** | How the candidate acted under pressure, with others |
66
+ | **Self-identified strengths** | What the candidate claims they're good at |
67
+ | **Self-identified gaps** | What the candidate acknowledges as growth areas |
68
+ | **Red flags** | Contradictions with CV, concerning patterns |
69
+ | **Interviewer feedback** | Direct quotes or observations from interviewers |
70
+ | **Level signals** | Autonomy, scope, complexity demonstrated in responses |
71
+ | **Track signals** | Business immersion vs platform thinking in their answers |
72
+
73
+ ## Step 2: Load Framework Reference
74
+
75
+ Load the same framework reference used in the screening assessment:
76
+
77
+ ```bash
78
+ # Get the job definition (use the role from the screening assessment or brief)
79
+ npx fit-pathway job {discipline} {level} --track={track}
80
+
81
+ # Get skill detail for skills being re-rated
82
+ npx fit-pathway skill {skill_id}
83
+
84
+ # Get behaviour definitions
85
+ npx fit-pathway behaviour --list
86
+ ```
87
+
88
+ If the screening assessment recommended a different level than originally
89
+ targeted (e.g. J100 → J090), load **both** levels for comparison:
90
+
91
+ ```bash
92
+ npx fit-pathway job {discipline} {original_level} --track={track}
93
+ npx fit-pathway job {discipline} {recommended_level} --track={track}
94
+ ```
95
+
96
+ ## Step 3: Re-rate Skills with Interview Evidence
97
+
98
+ For each skill in the framework, compare the screening assessment rating against
99
+ what the interview revealed:
100
+
101
+ | Interview Evidence | Rating Adjustment |
102
+ | ------------------------------------------------------- | ------------------------------------- |
103
+ | Candidate demonstrated the skill live, under pressure | **Upgrade** — interview > CV claims |
104
+ | Candidate discussed concrete examples with detail | **Confirm** at screening level or +1 |
105
+ | Candidate gave vague or generic answers about this area | **Hold** at screening level |
106
+ | Candidate struggled or revealed misunderstanding | **Downgrade** from screening level |
107
+ | Candidate self-identified this as a gap | **Downgrade** and note honesty signal |
108
+ | Interviewer explicitly flagged a concern | **Downgrade** with interviewer quote |
109
+
110
+ **Interview evidence outranks CV evidence.** A candidate who claimed
111
+ `practitioner` on their CV but demonstrated `foundational` in the interview
112
+ should be re-rated to `foundational`. The reverse also applies — a candidate
113
+ whose CV undersold them should be upgraded.
114
+
115
+ **Be specific.** Every re-rating must cite a specific moment, quote, or
116
+ observation from the transcript. "Seemed strong" is not evidence.
117
+
118
+ ## Step 4: Re-rate Behaviours with Interview Evidence
119
+
120
+ Behaviours are **better assessed in interviews than CVs** because they describe
121
+ how someone acts, not what they've done.
122
+
123
+ For each framework behaviour, look for:
124
+
125
+ | Behaviour | Interview Evidence |
126
+ | -------------------------- | --------------------------------------------------------------- |
127
+ | Own the Outcome | Takes responsibility, doesn't deflect, drives to resolution |
128
+ | Think in Systems | Considers second-order effects, trade-offs, system boundaries |
129
+ | Communicate with Precision | Clear explanations, appropriate detail level, listens actively |
130
+ | Be Polymath Oriented | Draws on diverse knowledge, makes unexpected connections |
131
+ | Don't Lose Your Curiosity | Asks good questions, explores alternatives, admits not knowing |
132
+
133
+ Rate each behaviour using maturity levels:
134
+
135
+ | Maturity | Interview Signal |
136
+ | --------------- | ------------------------------------------------------------- |
137
+ | `emerging` | Behaviour not observed or only when prompted |
138
+ | `developing` | Behaviour present but inconsistent or surface-level |
139
+ | `practicing` | Behaviour consistent and natural throughout the interview |
140
+ | `role_modeling` | Behaviour demonstrated at high level, influenced the room |
141
+ | `exemplifying` | Behaviour exceptional, set the standard for the conversation |
142
+
143
+ ## Step 5: Assess Level Fit
144
+
145
+ Based on interview evidence, assess whether the candidate's level estimate
146
+ should change:
147
+
148
+ ```bash
149
+ # Compare what changes between levels
150
+ npx fit-pathway progress {discipline} {level} --track={track}
151
+ ```
152
+
153
+ | Level Signal in Interview | Implication |
154
+ | ------------------------------------------------------------------- | ------------------------------ |
155
+ | Candidate needed guidance on structuring their approach | Level may be lower than est. |
156
+ | Candidate self-directed, made sound trade-offs independently | Level estimate confirmed |
157
+ | Candidate mentored or coached others during the exercise | Level may be higher than est. |
158
+ | Candidate struggled with complexity appropriate to the target level | Level should be downgraded |
159
+ | Interviewer explicitly suggested a different level | Strong signal — weight heavily |
160
+
161
+ ## Step 6: Write Interview Assessment
162
+
163
+ Create `knowledge/Candidates/{Name}/interview-{date}.md`:
164
+
165
+ ```markdown
166
+ # Interview Assessment — {Full Name}
167
+
168
+ **Interview type:** {Screening / Decomposition / Panel / Technical}
169
+ **Date:** {YYYY-MM-DD}
170
+ **Interviewers:** {Names}
171
+ **Assessed against:** {Discipline} {Level} — {Track}
172
+
173
+ ## Interview Summary
174
+
175
+ {3-5 sentences: what was the interview format, what happened, what was the
176
+ overall impression. Include the key decision or outcome.}
177
+
178
+ ## Skill Evidence
179
+
180
+ {Only include skills where the interview provided new evidence — don't
181
+ repeat the full matrix for skills not touched by this interview.}
182
+
183
+ | Skill | Screening Rating | Interview Rating | Change | Evidence |
184
+ | --- | --- | --- | --- | --- |
185
+ | {skill} | {from screening.md} | {updated} | {↑ / ↓ / ―} | {specific transcript evidence} |
186
+
187
+ ### Confirmed Strengths
188
+ - {Strength confirmed by interview — cite specific moment}
189
+
190
+ ### New Concerns
191
+ - {Concern revealed by interview — cite specific moment}
192
+
193
+ ### Resolved Uncertainties
194
+ - {Gap or question from screening that the interview answered}
195
+
196
+ ## Behaviour Evidence
197
+
198
+ | Behaviour | Screening Signal | Interview Observation | Updated Maturity |
199
+ | --- | --- | --- | --- |
200
+ | {behaviour} | {from screening.md} | {specific observation} | {maturity level} |
201
+
202
+ ## Level Assessment
203
+
204
+ **Screening estimate:** {level from screening.md}
205
+ **Interview evidence suggests:** {confirmed / adjusted level}
206
+
207
+ {Paragraph explaining the level assessment. Reference specific moments from the
208
+ transcript that demonstrate the candidate's autonomy, scope of thinking, and
209
+ complexity handling. If a level adjustment is recommended, explain why using
210
+ framework progression criteria.}
211
+
212
+ ## Interviewer Observations
213
+
214
+ {Direct quotes or paraphrased observations from interviewers present.
215
+ Attribute each to the interviewer by name.}
216
+
217
+ - **{Interviewer}:** "{observation or quote}"
218
+ - **{Interviewer}:** "{observation or quote}"
219
+
220
+ ## Updated Screening Recommendation
221
+
222
+ **Previous:** {Interview / Interview with focus areas / Pass}
223
+ **Updated:** {Continue interviewing / Adjust level to {X} / Pass}
224
+
225
+ **Remaining uncertainties for next stage:**
226
+ - {What still needs to be validated}
227
+ - {What the next interview should focus on}
228
+ ```
229
+
230
+ ## Step 7: Generate Panel Brief (if applicable)
231
+
232
+ If more interview stages are planned (the candidate is continuing to panel,
233
+ technical assessment, etc.), create `knowledge/Candidates/{Name}/panel.md`.
234
+
235
+ The panel brief is written **for the next interviewers** — typically business
236
+ colleagues who are not engineers. It must:
237
+
238
+ 1. Explain who this person is without jargon
239
+ 2. Summarize what previous interviews found
240
+ 3. Tell the panel what to probe and why
241
+ 4. Provide specific suggested questions
242
+
243
+ ```bash
244
+ # Get the framework expectations for the role
245
+ npx fit-pathway job {discipline} {level} --track={track}
246
+
247
+ # Get interview questions relevant to remaining gaps
248
+ npx fit-pathway interview {discipline} {level} --track={track}
249
+ ```
250
+
251
+ ```markdown
252
+ # Panel Brief — {Full Name}
253
+ ## {Role Title} — {Level}
254
+
255
+ **Panel date:** {date or TBC}
256
+ **Prepared:** {YYYY-MM-DD}
257
+ **Prepared for:** {Panel interviewers / business colleagues / etc.}
258
+ **Role under evaluation:** {Full role title with level}
259
+
260
+ {If the level has been adjusted from the original target, include a level note
261
+ explaining the change and why it matters.}
262
+
263
+ ---
264
+
265
+ ## Candidate Snapshot
266
+
267
+ | Field | Detail |
268
+ |---|---|
269
+ | **Current role** | {title — employer} |
270
+ | **Years of experience** | {N}+ years |
271
+ | **Background** | {2-3 key themes} |
272
+ | **Location** | {location} |
273
+ | **Source** | {how they entered the pipeline} |
274
+
275
+ **What makes this candidate interesting:** {2-3 sentences on why this person
276
+ is worth the panel's time. Lead with the most compelling signal.}
277
+
278
+ ---
279
+
280
+ ## Where We Are in the Process
281
+
282
+ | Stage | Date | Outcome |
283
+ |---|---|---|
284
+ | CV review | {date} | {one-line outcome} |
285
+ | {Interview type} ({interviewer}) | {date} | {one-line outcome} |
286
+ | **{Next stage}** | **{date}** | **← You are here** |
287
+
288
+ ---
289
+
290
+ ## What Previous Interviews Told Us
291
+
292
+ {For each completed interview, summarize in plain language:}
293
+
294
+ **What went well:**
295
+ - {strength 1}
296
+ - {strength 2}
297
+
298
+ **What fell short:**
299
+ - {concern 1}
300
+ - {concern 2}
301
+
302
+ **Interviewer conclusion:** {key takeaway in one sentence}
303
+
304
+ ---
305
+
306
+ ## What {Level} {Track} Looks Like
307
+
308
+ {Use fit-pathway to describe the role expectations in non-technical language.
309
+ Focus on behaviours and scope, not technical skills.}
310
+
311
+ **Key behaviours at this level:**
312
+ - **{Behaviour}** — {plain-language description of what this means}
313
+
314
+ **Skills most relevant for the panel to probe:**
315
+ - **{Skill}** — {why this matters for the business}
316
+
317
+ ---
318
+
319
+ ## What the Panel Should Explore
320
+
321
+ {Frame the remaining uncertainties as questions the panel can answer through
322
+ conversation. These should focus on business-facing capabilities.}
323
+
324
+ ### Suggested Focus Areas
325
+
326
+ **1. {Focus area title}**
327
+ {Context for why this matters. Explain the gap or uncertainty.}
328
+
329
+ > *"{Suggested question 1}"*
330
+ > *"{Suggested question 2}"*
331
+
332
+ **2. {Focus area title}**
333
+ {Context.}
334
+
335
+ > *"{Suggested question 1}"*
336
+ > *"{Suggested question 2}"*
337
+
338
+ ---
339
+
340
+ ## Known Strengths — Lean Into These
341
+
342
+ - **{Strength}:** {evidence summary}
343
+
344
+ ---
345
+
346
+ ## Known Risks — Probe, Don't Assume
347
+
348
+ - **{Risk}:** {evidence summary and what to look for}
349
+
350
+ ---
351
+
352
+ ## Screening Recommendation (Pre-Panel)
353
+
354
+ **{Recommendation}**
355
+
356
+ {2-3 sentence summary of the case for this candidate at this level. State what
357
+ the panel should look for to confirm or disconfirm.}
358
+
359
+ ---
360
+
361
+ *This brief is a hiring aid for the panel. The final decision rests with the
362
+ panel and the hiring manager. All assessments are advisory.*
363
+ ```
364
+
365
+ ## Step 8: Update Candidate Brief
366
+
367
+ Update `knowledge/Candidates/{Name}/brief.md`:
368
+
369
+ - Add the interview to the **Pipeline** section with date, type, and outcome
370
+ - Add **Interview Notes** section if not present, with key observations
371
+ - Link to the interview assessment: `- [Interview Assessment](./interview-{date}.md)`
372
+ - Link to panel brief if created: `- [Panel Brief](./panel.md)`
373
+ - Update **Status** field to reflect current pipeline stage
374
+
375
+ **Use precise edits — don't rewrite the entire file.**
376
+
377
+ ## Quality Checklist
378
+
379
+ - [ ] Every skill re-rating cites a specific moment from the transcript
380
+ - [ ] Behaviour assessments reference observed actions, not claimed traits
381
+ - [ ] Level assessment uses framework progression criteria, not gut feel
382
+ - [ ] Interviewer observations are attributed by name
383
+ - [ ] Panel brief (if created) is written for non-technical readers
384
+ - [ ] Panel brief includes specific suggested questions tied to remaining gaps
385
+ - [ ] Candidate brief pipeline section is updated with interview outcome
386
+ - [ ] Assessment distinguishes between confirmed strengths and new concerns
387
+ - [ ] Remaining uncertainties are specific and actionable for the next stage
388
+ - [ ] No subjective judgments — all assessments grounded in framework data
389
+ - [ ] Gender field unchanged (never updated from interview observations)