init
This commit is contained in:
commit
d295c7f139
1527 files changed
+270726
No files matched your search
@@ -0,0 +1,33 @@
|
||||
# Interview Skills
|
||||
|
||||
A set of reusable skills for end-to-end interview preparation.
|
||||
|
||||
## Skills
|
||||
|
||||
| Skill | File | When to use |
|
||||
|---|---|---|
|
||||
| Prep Planner | `plan.md` | Given a JD and interview date, build a structured time-blocked prep plan |
|
||||
| Practice Interviewer | `practice.md` | Run practice interview questions with structured feedback |
|
||||
| Post-Interview Debrief | `debrief.md` | After a real interview, close gaps and update the question bank |
|
||||
|
||||
## Related Skills (in parent `modes/`)
|
||||
|
||||
| Skill | File | When to use |
|
||||
|---|---|---|
|
||||
| Company Research | `../interview-prep.md` | Research a specific company and role before interviewing |
|
||||
|
||||
## File Conventions
|
||||
|
||||
These skills assume the following files exist (career-ops defaults):
|
||||
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `cv.md` | Candidate CV — source of truth for experience and proof points |
|
||||
| `article-digest.md` | Compact proof points from portfolio (optional) |
|
||||
| `config/profile.yml` | Candidate profile — target roles, compensation, narrative |
|
||||
| `modes/_profile.md` | Candidate archetypes, narrative, and deal-breakers |
|
||||
| `interview-prep/story-bank.md` | Accumulated STAR+R stories |
|
||||
| `interview-prep/question-bank.md` | Question bank with gap tracking (created on first use) |
|
||||
| `interview-prep/interview-prep-guide.md` | General interview principles (optional) |
|
||||
| `interview-prep/{company}-{role}.md` | Role-specific prep file |
|
||||
| `interview-prep/retracted-claims.md` | Claims the candidate has rejected as indefensible — hard gate in practice and debrief (format: `**"[claim]"** ([context]). Reason: [one-line reason + correct framing if applicable].`) |
|
||||
@@ -0,0 +1,200 @@
|
||||
# Mode: interview/debrief — Post-Interview Debrief
|
||||
|
||||
After a real interview, capture what was asked, assess what landed and what didn't, close gaps before the next round, and update the question bank.
|
||||
|
||||
---
|
||||
|
||||
## When to Run This Skill
|
||||
|
||||
- Immediately after a real interview (while memory is fresh)
|
||||
- After a recruiter call that surfaced new information about the process
|
||||
- When the candidate learns the next round format and interviewer
|
||||
|
||||
---
|
||||
|
||||
## Inputs
|
||||
|
||||
1. **Interview debrief from candidate** — what questions were asked, how they answered, what felt strong or weak
|
||||
2. **Interviewer name and role** — informs next round prediction
|
||||
3. **Round outcome** (if known) — moved forward / rejected / pending
|
||||
4. **Next round details** (if known) — format, interviewers, timeline
|
||||
5. **Question bank** at `interview-prep/question-bank.md` — update with real data
|
||||
6. **Story bank** at `interview-prep/story-bank.md` — add new stories if surfaced
|
||||
7. **CV** at `cv.md` + `article-digest.md` (if present) — to ground suggested answers in real experience
|
||||
8. **Retracted claims** at `interview-prep/retracted-claims.md` (if present) — hard gate; never use a retracted claim in a suggested answer even if the candidate said it in the interview
|
||||
9. **Role-specific prep file** — append debrief notes
|
||||
|
||||
---
|
||||
|
||||
## Step 1 — Capture What Was Asked
|
||||
|
||||
Ask the candidate to list every question they remember, in order if possible. Don't prompt with options — let them recall freely first.
|
||||
|
||||
For each question captured:
|
||||
- What did they say?
|
||||
- How did the interviewer react (positive signal, neutral, pushed back, moved on quickly)?
|
||||
- Did they feel confident or uncertain?
|
||||
|
||||
If memory is incomplete, ask targeted prompts:
|
||||
- "Were there any questions that caught you off guard?"
|
||||
- "Was there anything you wished you'd answered differently?"
|
||||
- "Did the interviewer follow up on anything — that usually means they wanted more?"
|
||||
|
||||
---
|
||||
|
||||
## Step 2 — Honest Assessment Per Question
|
||||
|
||||
For each question, produce:
|
||||
|
||||
```markdown
|
||||
**Q: [question]**
|
||||
- What was said: [summary of their answer]
|
||||
- What landed: [what was good — be specific]
|
||||
- What was missing: [gap — precise technical term, missing result, no reflection, etc.]
|
||||
- Correct/complete answer: [what the full answer should include]
|
||||
- Status: ✅ Strong / 🟡 Solid / 🔴 Gap
|
||||
```
|
||||
|
||||
Be direct. If they missed the core concept the question was testing, say so. If an answer was genuinely strong, say that too. The debrief is the most valuable learning moment — vagueness wastes it.
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Update Question Bank
|
||||
|
||||
For each question debriefed, update `interview-prep/question-bank.md`:
|
||||
- Change status to ✅ / 🟡 / 🔴 based on real performance
|
||||
- Add gap notes from the debrief
|
||||
- Add any new questions that appeared and weren't in the bank yet
|
||||
|
||||
If the question bank doesn't exist, create it with the questions from this interview as the seed.
|
||||
|
||||
---
|
||||
|
||||
## Step 4 — Close the Gaps
|
||||
|
||||
For each 🔴 gap identified:
|
||||
|
||||
1. **Explain the correct answer** — clear, concise, with a worked example (code, calculation, diagram) where it helps
|
||||
2. **Connect to a real story** if possible — "you actually have this in your [existing story from the story bank] — here's how to use it"
|
||||
3. **Add to role-specific prep file** under a "Gaps to Close Before Round N" section
|
||||
4. **Add to `interview-prep/interview-prep-guide.md`** (if the candidate maintains one) when it's a reusable principle that applies beyond this role
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — Extract New Stories
|
||||
|
||||
Sometimes a real interview surfaces a story the candidate hadn't prepared. If the candidate described an experience they hadn't formalized:
|
||||
|
||||
> "You mentioned [X] in your answer — that sounds like it could become a proper STAR+R story. Want to build it out now while it's fresh?"
|
||||
|
||||
If yes, build it out as a STAR+R story (Situation, Task, Action, Result, Reflection) and append it to `interview-prep/story-bank.md`.
|
||||
|
||||
---
|
||||
|
||||
## Step 6 — Next Round Intelligence
|
||||
|
||||
If the candidate knows the next round format:
|
||||
|
||||
1. **Predict likely questions** based on:
|
||||
- Next interviewer's role (e.g., senior practitioner → depth in the core skill, design; cross-functional peer → collaboration, domain boundaries; executive → strategy, business impact)
|
||||
- What was covered in this round (next round typically goes deeper, not wider)
|
||||
- What the interviewer in this round seemed most interested in
|
||||
|
||||
Label every prediction `[inferred]` — never present a predicted question as if it were sourced from real candidates or insiders.
|
||||
|
||||
2. **Build a priority list** for next round prep — ordered by gap severity and likelihood of being tested
|
||||
|
||||
3. **Suggest running** `interview/plan` with the next round details to build a full prep plan
|
||||
|
||||
---
|
||||
|
||||
## Step 7 — Probability Assessment (Optional)
|
||||
|
||||
If the candidate asks for an honest read on their chances:
|
||||
|
||||
Assess based on:
|
||||
- Number and severity of gaps (🔴 on fundamentals = higher risk than 🔴 on advanced topics)
|
||||
- Interviewer signals (gave specific next round details = positive; vague = neutral; short call = risk)
|
||||
- Role fit (years of experience, domain match, location)
|
||||
- Differentiators (things the candidate said that most candidates wouldn't)
|
||||
|
||||
Be honest. A probability range with clear reasoning is more useful than false confidence.
|
||||
|
||||
---
|
||||
|
||||
## Step 8 — Save Debrief
|
||||
|
||||
Append to `interview-prep/{company-slug}-{role-slug}.md`:
|
||||
|
||||
```markdown
|
||||
## Round [N] Debrief — [YYYY-MM-DD]
|
||||
|
||||
**Interviewer:** [name, role]
|
||||
**Round type:** [screening / technical / design-case-study / behavioral]
|
||||
**Outcome:** [pending / moved forward / rejected]
|
||||
|
||||
### Questions Asked
|
||||
[list]
|
||||
|
||||
### Gaps Identified
|
||||
[list with correct answers]
|
||||
|
||||
### Next Round
|
||||
**Format:** [if known]
|
||||
**Interviewers:** [if known]
|
||||
**Priority prep:** [top 3 topics to close before next round]
|
||||
|
||||
### Process Intel (recruiter / HM screens — omit if not applicable)
|
||||
**Comp discussed:** [yes / no — if yes, what was said and what was anchored]
|
||||
**Timeline:** [any dates or deadlines mentioned]
|
||||
**Other candidates:** [if disclosed]
|
||||
**Next steps:** [what the interviewer said happens next and by when]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 9 — Write Session Transcript
|
||||
|
||||
After the debrief, also write a machine-readable session transcript to `interview-prep/sessions/{company-slug}-{role-slug}-{round}-{YYYY-MM-DD}.md`. This is a structured record of the round for downstream analysis modes; the speaker-labelled turns let a consumer read either side without re-inferring who spoke. The full contract lives in `interview-prep/sessions/README.md`.
|
||||
|
||||
Format:
|
||||
|
||||
```markdown
|
||||
---
|
||||
company: [company]
|
||||
role: [role]
|
||||
round: [screen | hiring-manager | technical | system-design | behavioral | onsite | final]
|
||||
date: YYYY-MM-DD
|
||||
interviewer_role: [role, if known]
|
||||
source: debrief
|
||||
---
|
||||
|
||||
## Q1
|
||||
**Interviewer:** [question as asked]
|
||||
<!-- competency: tag[, tag...] -->
|
||||
**Candidate:** [answer as delivered / reconstructed in this debrief]
|
||||
|
||||
## Q2
|
||||
...
|
||||
```
|
||||
|
||||
Rules for the transcript:
|
||||
|
||||
- **Map the round type to the enum** above (e.g. recruiter screen → `screen`, HM screen → `hiring-manager`, technical deep-dive → `technical`, design/case-study → `system-design`).
|
||||
- **Tag each answer.** On the line directly above each `**Candidate:**` line, emit `<!-- competency: tag[, tag...] -->` — lowercase-kebab-case, comma-separated for multi-competency answers (e.g. `system-design`, `people-leadership`, `incident-response`). You already assessed each answer in Step 2, so tag from that assessment rather than re-reading. Tags are free-form; pick the competency the question actually tested.
|
||||
- **Reconstruct the candidate turn faithfully.** Use what the candidate reported saying in Step 1, not an idealized answer. The "correct/complete answer" from Step 2 belongs in the debrief file, never in the transcript — the transcript records what happened.
|
||||
- **`source: debrief`.**
|
||||
- The session file lands in a gitignored directory (real names/companies never enter version control); write it without redacting.
|
||||
|
||||
---
|
||||
|
||||
## Rules
|
||||
|
||||
- **Debrief immediately.** Memory of interview details degrades fast — within hours, specific questions and reactions are forgotten. Run this skill the same day.
|
||||
- **Don't soften gaps.** A 🔴 gap that gets called 🟡 out of kindness will show up again in the next round.
|
||||
- **Never put invented claims in the candidate's mouth.** Correct/complete answers may draw on general domain knowledge, but any suggested personal claim or metric must come from what the candidate said, `cv.md`, `article-digest.md`, or the story bank.
|
||||
- **Retracted claims are a hard gate.** If a claim appears in `interview-prep/retracted-claims.md`, never suggest the candidate use it — even if they said it in the real interview. Flag it: "That claim is in your retracted list — it's not defensible under pressure. Here's a version that doesn't depend on it."
|
||||
- **Record new retractions.** If the debrief reveals a claim the candidate used in the real interview that they now agree isn't defensible, offer to append it to `interview-prep/retracted-claims.md`: `**"[claim]"** ([context]). Reason: [one-line reason + correct framing if applicable].`
|
||||
- **Extract vocabulary gaps explicitly.** If the candidate used an imprecise term where a precise one exists, add it to `interview-prep/interview-prep-guide.md` under the vocabulary section (if the candidate maintains one).
|
||||
- **One gap = one fix.** Don't overwhelm with a full study plan for every gap. Prioritize the 1–2 most likely to be tested in the next round.
|
||||
- **Celebrate what worked.** Debrief isn't only about gaps. Name what was strong — it reinforces the right behaviour and builds confidence for the next round.
|
||||
@@ -0,0 +1,152 @@
|
||||
# Mode: interview/plan — Interview Prep Planner
|
||||
|
||||
Given a job description and interview date/time, build a structured, time-blocked preparation plan tailored to the candidate's specific gaps.
|
||||
|
||||
---
|
||||
|
||||
## Inputs
|
||||
|
||||
1. **Job description** (required) — paste inline or provide URL
|
||||
2. **Interview date and time** (required) — to calculate hours available
|
||||
3. **Interviewer name and role** (if known) — shapes depth and tone of prep
|
||||
4. **Round type** (if known) — screening, technical/domain-specific, design/case study, behavioral panel
|
||||
5. **CV** at `cv.md` + `article-digest.md` (if present) — read for experience, skills, proof points
|
||||
6. **Profile** at `config/profile.yml` + `modes/_profile.md` — read for narrative, archetypes, and targets
|
||||
7. **Story bank** at `interview-prep/story-bank.md` — existing STAR+R stories
|
||||
8. **Question bank** at `interview-prep/question-bank.md` — existing gaps (if file exists)
|
||||
|
||||
---
|
||||
|
||||
## Step 1 — Fit Assessment
|
||||
|
||||
Read CV and JD. Produce a two-column assessment:
|
||||
|
||||
**Strengths to anchor on:** experience, titles, domain, proof points that directly match the JD.
|
||||
|
||||
**Gaps to close:** skills, tools, or experience called out in JD that are absent or weak in CV. Rank by likelihood of being tested in this specific round type.
|
||||
|
||||
Be honest. A gap is a gap — flag it clearly so prep time goes to the right places.
|
||||
|
||||
---
|
||||
|
||||
## Step 2 — Round Intelligence
|
||||
|
||||
Identify what this round is actually evaluating based on:
|
||||
- Interviewer role (manager = communication + passion + fundamentals; practitioner = depth + judgment)
|
||||
- Round label (screening, technical/domain, design/case study, final)
|
||||
- JD signals (what they emphasize)
|
||||
|
||||
**Recruiter screen:**
|
||||
- Box-checking: fit, comp alignment, logistics, communication
|
||||
- Not a technical test — depth questions come in the HM and later rounds
|
||||
- Likely: background pitch, "why us/why this role", comp expectation, timeline, one logistical question
|
||||
- Treat this as the easy checkpoint; use prep time to build the foundation for what comes after
|
||||
|
||||
**Hiring-manager screen:**
|
||||
- Communication, passion, fit — plus leadership philosophy and judgment
|
||||
- Fundamentals of the core skill in the JD — not deep internals
|
||||
- 1–2 behavioral stories
|
||||
- Likely: background, "why us", one core concept from the JD, one leadership story, forward-looking situational question
|
||||
|
||||
**Technical / domain deep-dive with a practitioner:**
|
||||
- Depth in the core skill from the JD (e.g., runtime internals for engineering, modeling choices for data, valuation methods for finance)
|
||||
- Applied scenarios from the role's day-to-day
|
||||
- Live exercise or worked walkthrough possible
|
||||
- Stories used as evidence, not the main event
|
||||
|
||||
**Design / case study panel:**
|
||||
- Full solution — constraints, components, tradeoffs, failure modes
|
||||
- The quality dimensions the JD emphasizes (e.g., scalability, compliance, measurability)
|
||||
- Senior-level: set constraints, ask clarifying questions, drive the conversation
|
||||
|
||||
Calibrate the plan to the round. Over-preparing depth for a screening wastes time and creates the wrong mindset.
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Build the Time-Blocked Plan
|
||||
|
||||
Calculate hours available from now until interview time. Divide into blocks:
|
||||
|
||||
Before sizing the blocks, check `interview-prep/question-bank.md` (if it exists). Any question marked 🔴 from a prior round is a proven gap — it gets a dedicated block regardless of how the CV-vs-JD analysis ranks it. Real performance data outranks inferred risk.
|
||||
|
||||
**Template (adjust block sizes based on total hours available):**
|
||||
|
||||
```
|
||||
Block 1 — Lock your narrative (first, always)
|
||||
- Write out your background timeline explicitly
|
||||
- Prepare "why this company" with a specific connection to your history
|
||||
- Prepare your strongest proof point story (30-second version)
|
||||
- Time: ~15% of available hours
|
||||
|
||||
Block 2 — Priority domain topic (highest-risk gap first)
|
||||
- One topic per block — don't mix
|
||||
- For each: concept → your story hook → likely follow-up questions
|
||||
- Time: ~25% of available hours
|
||||
|
||||
Block 3 — Secondary domain topic
|
||||
- Second-highest-risk gap
|
||||
- Time: ~20% of available hours
|
||||
|
||||
Block 4 — Behavioral stories
|
||||
- Map existing stories to likely question types
|
||||
- Practice the 2-minute verbal version of each
|
||||
- Prepare the Reflection for each — the senior-candidate differentiator
|
||||
- Time: ~15% of available hours
|
||||
|
||||
Block 5 — Company research
|
||||
- Product pages relevant to the role
|
||||
- Connection between your history and their specific domain
|
||||
- 3–4 sharp questions to ask them
|
||||
- Time: ~10% of available hours
|
||||
|
||||
Block 6 — Practice run (if time permits)
|
||||
- One question per likely topic — out loud, timed
|
||||
- Time: ~10% of available hours
|
||||
|
||||
Block 7 — Buffer + rest
|
||||
- Stop studying 60–90 minutes before the interview
|
||||
- Cramming in the last hour adds noise, not signal
|
||||
- Time: remaining
|
||||
```
|
||||
|
||||
Adjust block sizes based on gap severity and round type. If it's a screening, Block 4 (behavioral) and Block 5 (company research) are more important than deep domain blocks.
|
||||
|
||||
---
|
||||
|
||||
## Step 4 — Priority Quick-Reference
|
||||
|
||||
At the end of the plan, produce a one-page quick-reference the candidate can skim 15 minutes before the interview:
|
||||
|
||||
```markdown
|
||||
## 15-Minute Pre-Interview Review
|
||||
|
||||
**Your anchor sentence:** [one sentence that captures why you're right for this role]
|
||||
|
||||
**Top 3 things to remember:**
|
||||
1. [most important message to leave the interviewer with]
|
||||
2. [most likely question and your first sentence of the answer]
|
||||
3. [the connection between your history and their domain]
|
||||
|
||||
**Your questions to ask:**
|
||||
1. [question 1]
|
||||
2. [question 2]
|
||||
3. [question 3]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — Save Output
|
||||
|
||||
Save the plan to `interview-prep/{company-slug}-{role-slug}.md` if a file doesn't exist, or append a `## Prep Plan` section if it does.
|
||||
|
||||
---
|
||||
|
||||
## Rules
|
||||
|
||||
- **Calibrate to the round.** A screening prep plan looks very different from a design-panel prep plan. Don't default to maximum depth for every interview.
|
||||
- **Gaps first.** Time is finite. The candidate's strengths don't need prep — their gaps do.
|
||||
- **🔴 gaps from the question bank take priority over inferred gaps.** Real performance data beats CV-vs-JD analysis. If the candidate already knows they struggle on a topic, don't bury it.
|
||||
- **One topic per block.** Mixing topics in a single block reduces retention.
|
||||
- **Always include rest time.** A rested candidate outperforms a cramming one.
|
||||
- **Never generate fake company intel.** If you don't have research, say so — don't invent culture claims or technical details about the company.
|
||||
- **Never invent claims for the candidate.** The anchor sentence and pre-interview talking points in the quick-reference (Step 4) must be grounded in what the candidate actually has — `cv.md`, `article-digest.md`, or the story bank. Don't draft claims that depend on experience or metrics the candidate doesn't have. If a claim appears in `interview-prep/retracted-claims.md`, never include it.
|
||||
@@ -0,0 +1,249 @@
|
||||
# Mode: interview/practice — Practice Interviewer
|
||||
|
||||
Run a realistic practice interview — one question at a time — and give structured feedback after each answer. Tracks what landed and what needs work.
|
||||
|
||||
---
|
||||
|
||||
## Inputs
|
||||
|
||||
1. **Round type** (required) — screening/recruiter, screening/HM, technical/domain-specific, design/case study, behavioral
|
||||
2. **Interviewer persona** (if known) — name, role, company; shapes question style and depth
|
||||
3. **Question list** (optional) — specific questions to cover; if not provided, generate from round type
|
||||
4. **CV** at `cv.md` + `article-digest.md` (if present) — to verify claims in answers and ground stronger versions in real experience
|
||||
5. **Profile** at `config/profile.yml` + `modes/_profile.md` — candidate narrative, deal-breakers, comp targets
|
||||
6. **Story bank** at `interview-prep/story-bank.md` — to verify story accuracy in feedback
|
||||
7. **Question bank** at `interview-prep/question-bank.md` — to update status after each answer
|
||||
8. **Role-specific prep file** — for company intel, sourced questions, comp strategy
|
||||
9. **Retracted claims** at `interview-prep/retracted-claims.md` (if present) — claims the candidate has explicitly rejected as indefensible; treat as a hard gate
|
||||
|
||||
---
|
||||
|
||||
## Protocol
|
||||
|
||||
### Preflight — Check Substance Files
|
||||
|
||||
Before setting the scene, confirm which files exist:
|
||||
|
||||
- `interview-prep/question-bank.md` (or a company-specific equivalent)
|
||||
- The role-specific prep file (`interview-prep/{company}-{role}.md`)
|
||||
- `cv.md`
|
||||
- `interview-prep/retracted-claims.md`
|
||||
|
||||
If the question bank and role-specific prep file are both absent, tell the candidate plainly:
|
||||
|
||||
> "You have the practice protocol but not your question bank or prep notes for this role. Feedback will be generic until those exist. Want to run `interview-prep` or `interview/plan` first to build them?"
|
||||
|
||||
Don't silently run a thin session as if it were a full one. If the candidate confirms they want to proceed anyway, continue — but note in the session summary that question sourcing fell back to generated defaults.
|
||||
|
||||
---
|
||||
|
||||
### Opening
|
||||
|
||||
Set the scene briefly:
|
||||
|
||||
> "I'll play [interviewer name/role]. We'll go one question at a time. Answer as you would in the real interview — out loud if possible, typed if not. After each answer I'll give you feedback, then we move to the next. Say 'pause' if you want to stop and discuss before I give feedback. Ready?"
|
||||
|
||||
Then open with the first question — no preamble, no "here's question 1". Just ask it naturally as the interviewer would.
|
||||
|
||||
---
|
||||
|
||||
### During the Session
|
||||
|
||||
**Ask one question at a time.** Wait for the full answer before giving feedback.
|
||||
|
||||
**Stay in character** during the answer. If the candidate asks a clarifying question mid-answer ("does that make sense?"), respond as the interviewer would — briefly, without breaking the scene.
|
||||
|
||||
**Follow-up questions:** after a complete answer, ask one natural follow-up if:
|
||||
- The answer was incomplete but on the right track (pull the thread)
|
||||
- The answer was strong (go deeper — this is what real interviewers do)
|
||||
- The answer missed the key point entirely (give them a chance to recover)
|
||||
|
||||
**Track what's been covered.** Keep a running mental list of which stories and examples the candidate has used. If they reach for the same story a second time, flag it after feedback: "You've used [story] for [N] questions now — interviewers notice a thin example set. What's a different example you could use here?" Also check the *close* of each answer: if it lands on a domain that doesn't match the role (e.g., closing on e-commerce when the role is fintech/fraud), note it: "Strong content, but you closed on [wrong domain] — for this role, land the answer on [right domain]."
|
||||
|
||||
---
|
||||
|
||||
### After Each Answer — Structured Feedback
|
||||
|
||||
```markdown
|
||||
**What landed:**
|
||||
- [specific thing that worked — quote their words if possible]
|
||||
- [another strength]
|
||||
|
||||
**What to sharpen:**
|
||||
- [specific gap — what was missing or imprecise]
|
||||
- [vocabulary or framing to improve]
|
||||
|
||||
**The stronger version:**
|
||||
> "[One or two sentences showing how the answer could have opened or closed more effectively]"
|
||||
|
||||
**Status update:** [✅ Strong / 🟡 Solid / 🔴 Gap]
|
||||
```
|
||||
|
||||
Keep feedback tight. One or two things to sharpen per answer — not a full rewrite. The goal is improvement on the next attempt, not discouragement.
|
||||
|
||||
---
|
||||
|
||||
### Feedback Principles
|
||||
|
||||
**Be honest, not encouraging.** "Good answer" without substance wastes the candidate's prep time. If an answer was weak, say so clearly and explain why.
|
||||
|
||||
**Quote their actual words.** "You said 'negotiate between consistency and availability' — the precise term is 'trade off consistency for availability'" is more useful than "use better technical vocabulary."
|
||||
|
||||
**Lead with what landed.** Even a weak answer usually has something right. Naming it first makes the correction land better.
|
||||
|
||||
**Flag vocabulary gaps explicitly.** Expert interviewers notice imprecise language. When the candidate uses a vague term where a precise one exists, call it out by name.
|
||||
|
||||
**The Reflection check.** For behavioral stories, always check: did they include a Reflection? ("What I'd do differently / what I learned.") This is the senior-candidate signal. If it's missing, prompt once after feedback: "What would you do differently knowing what you know now?"
|
||||
|
||||
**Two-minute rule.** If an answer runs past two minutes, note it. Interviewers stop listening. The fix is almost always to state the answer first, then explain — not to cut content. *In a typed session you cannot time delivery — substitute a structure check instead:* flag answers that bury the headline (more than 4–5 sentences of setup before the point lands) and tell the candidate: pacing and filler words can only be diagnosed out loud — record yourself or run this question again verbally.
|
||||
|
||||
**Verify suspicious claims before coaching them.** When the candidate states a specific metric or scope claim (headcount managed, AUM, revenue figure, percentage improvement) that you cannot confirm from prior context, check it against `cv.md`, `article-digest.md`, and `interview-prep/retracted-claims.md` before giving feedback. If the claim isn't supported, flag it: "I can't find that number in your CV — is it defensible if they push? If not, here's a version that doesn't depend on it." Never coach a candidate to repeat a claim they can't back up.
|
||||
|
||||
**Never invent experience or metrics.** The stronger version may only use facts the candidate actually stated, or claims that exist in `cv.md`, `article-digest.md`, or the story bank. Tightening framing is the job — adding accomplishments is fabrication. If a claim appears in `interview-prep/retracted-claims.md`, do not use it in a stronger version even if the candidate said it.
|
||||
|
||||
**Offer to record retractions.** When a candidate concedes mid-session that a claim isn't defensible under pressure ("you're right, I can't back that up"), offer to append it to `interview-prep/retracted-claims.md`: "Want me to add that to your retracted list so it doesn't surface again?" If yes, append: `**"[claim]"** ([context]). Reason: [one-line reason + correct framing if applicable].`
|
||||
|
||||
**When company-intel is thin mid-session.** If the candidate visibly struggles on a "why this company / why this role" question because the role-specific prep file lacks the intel, don't fabricate and don't stay silent. Step out of character, run the `interview-prep` research step for that one question (the same sourced-research path `interview-prep.md` owns), and return with 2–3 concrete, cited angles. Then resume in character. If research yields nothing usable, say so plainly. This is not a second search loop — it is invoking the existing research stage just-in-time when the upstream pipeline wasn't run first.
|
||||
|
||||
**When the candidate disputes a factual claim in the prep materials.** If the candidate challenges a specific fact in the question bank or prep file (e.g., a metric, a product spec, an SLA figure), don't defend the file's authority. Step out of character, verify the claim against primary sources, and correct the source file if the candidate is right. Return with the verified figure and resume. If no primary source can be found, say so and flag the claim as unverified — the candidate should not use an unverifiable fact in a real interview.
|
||||
|
||||
---
|
||||
|
||||
### After All Questions — Session Summary
|
||||
|
||||
```markdown
|
||||
## Practice Session Summary
|
||||
|
||||
**Round type:** [screening / technical / design-case-study / behavioral]
|
||||
**Questions covered:** [N]
|
||||
|
||||
**Ready:**
|
||||
- [question] — [one-line note on why it's strong]
|
||||
|
||||
**Needs work before interview:**
|
||||
- [question] — [specific gap to close]
|
||||
|
||||
**Vocabulary to fix:**
|
||||
- "[what they said]" → "[correct term]"
|
||||
|
||||
**Overall read:** [one honest sentence on interview readiness]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Write Session Transcript
|
||||
|
||||
After the summary, write a machine-readable session transcript to `interview-prep/sessions/{company-slug}-{role-slug}-{round}-{YYYY-MM-DD}.md` (use `practice` for the company/role slug if this wasn't a company-specific session). This is a structured record of the round for downstream analysis modes; the speaker-labelled turns let a consumer read either side without re-inferring who spoke. The full contract lives in `interview-prep/sessions/README.md`.
|
||||
|
||||
Format:
|
||||
|
||||
```markdown
|
||||
---
|
||||
company: [company, or "practice"]
|
||||
role: [role]
|
||||
round: [screen | hiring-manager | technical | system-design | behavioral | onsite | final]
|
||||
date: YYYY-MM-DD
|
||||
interviewer_role: [persona role, if set]
|
||||
source: practice
|
||||
---
|
||||
|
||||
## Q1
|
||||
**Interviewer:** [the question you asked]
|
||||
<!-- competency: tag[, tag...] -->
|
||||
**Candidate:** [the candidate's answer, verbatim]
|
||||
|
||||
## Q2
|
||||
...
|
||||
```
|
||||
|
||||
Rules for the transcript:
|
||||
|
||||
- **Map the round type to the enum** above (recruiter screen → `screen`, HM screen → `hiring-manager`, technical/domain → `technical`, design/case study → `system-design`, behavioral → `behavioral`).
|
||||
- **Tag each answer.** On the line directly above each `**Candidate:**` line, emit `<!-- competency: tag[, tag...] -->` — lowercase-kebab-case, comma-separated for multi-competency answers. You already assessed each answer during the session, so tag from that. Tags are free-form; pick the competency the question actually tested.
|
||||
- **Record the candidate's answer verbatim**, not the "stronger version" — the transcript records what happened, not the coaching.
|
||||
- **`source: practice`.**
|
||||
- The session file lands in a gitignored directory (real names/companies never enter version control); write it without redacting.
|
||||
|
||||
---
|
||||
|
||||
## Question Sets by Round Type
|
||||
|
||||
If no question list is provided, source questions in this order of precedence:
|
||||
|
||||
1. **Real questions from `interview-prep/question-bank.md`** — questions this company (or a prior round) actually asked, captured by debriefs. Highest value: empirically grounded.
|
||||
2. **Sourced questions from the role-specific prep file** — questions interview-prep.md research found and cited. Use them as written; keep their citations out of the session but respect their wording.
|
||||
3. **The default sets below** — generated fallback for a first session with no research yet. Fill bracketed slots from the JD.
|
||||
|
||||
Mix tiers when the higher tiers are thin — e.g., 3 real questions from the bank padded with defaults — but never skip a higher tier that has relevant questions for this round type.
|
||||
|
||||
### Screening — Recruiter (20–30 min)
|
||||
|
||||
A recruiter screen is box-checking, not depth probing. Keep answers crisp; don't over-engineer. The recruiter is verifying fit, comp alignment, and logistics before passing to the hiring manager.
|
||||
|
||||
1. Walk me through your background.
|
||||
2. Why this company / why this role?
|
||||
3. Why are you leaving your current role?
|
||||
4. What are your comp expectations?
|
||||
5. [Logistics: location / hybrid / timeline / work authorization]
|
||||
6. What questions do you have for us?
|
||||
|
||||
**Comp coaching (recruiter screen only).** Watch for the candidate volunteering a salary floor unprompted (e.g., "the minimum I can go to is X"). If they do, flag it after the answer: "You just gave them your floor — that caps your negotiation before it starts. The stronger move is to anchor on a researched target and defer to the package: 'I'm targeting the upper half of the market range for this level — I'd want to understand base, bonus, and equity together before settling on a number.'" If the role-specific prep file defines a comp strategy, follow that; otherwise give only this generic mechanics note — never invent target numbers.
|
||||
|
||||
### Screening — Hiring Manager (30–45 min)
|
||||
|
||||
An HM screen probes leadership philosophy, judgment, and experience depth. Answers can be longer and carry more story weight. The HM is deciding whether to invest rounds of their team's time.
|
||||
|
||||
1. Walk me through your background.
|
||||
2. Why this company / why this role?
|
||||
3. Tell me about the hardest problem you've solved in your field.
|
||||
4. Tell me about a time you faced resistance to a change you proposed.
|
||||
5. What does [title from JD] mean to you?
|
||||
6. How would you describe your approach to your craft?
|
||||
7. [One fundamental concept from the JD — e.g., a core method, framework, regulation, or tool of the discipline]
|
||||
|
||||
Mix in at least 2 situational / forward-looking questions from the set below — these probe judgment and self-awareness, not past stories:
|
||||
|
||||
**Forward-looking / situational:**
|
||||
- "What does success look like for you in the first 90 days?"
|
||||
- "If you join and the team is struggling — missed deadlines, low morale — what's your first move?"
|
||||
- "How do you decide what to delegate vs. what to own yourself?"
|
||||
- "How do you handle a respected colleague who disagrees with a direction you've set?"
|
||||
|
||||
**Self-awareness / growth:**
|
||||
- "What's something you got wrong professionally and what did you learn?"
|
||||
- "What do you need from your manager to do your best work?"
|
||||
- "Where are you still growing in your role?"
|
||||
|
||||
### Technical / Domain-Specific (practitioner, 45–60 min)
|
||||
1. [Core internals of the discipline's main tool or method — e.g., runtime internals for engineering, attribution models for marketing, valuation methods for finance]
|
||||
2. [Established pattern or framework relevant to the role — from the JD]
|
||||
3. [Fundamental building block deep-dive — e.g., a data structure, a statistical test, an accounting principle]
|
||||
4. [Advanced topic the JD emphasizes — the area where depth separates candidates]
|
||||
5. Tell me about a high-stakes failure in your work — how you diagnosed it and what you did.
|
||||
6. How do you raise the quality bar on a team?
|
||||
|
||||
### Design / Case Study (45–60 min)
|
||||
1. Design [a system, process, campaign, or product relevant to the role].
|
||||
2. [Constraint question — how does your design behave when something fails, scales 10x, or loses budget?]
|
||||
3. [Quality/reliability question — how do you guarantee correctness or measure success?]
|
||||
4. Walk me through how you'd know it's working after launch.
|
||||
|
||||
### Behavioral Panel
|
||||
1. Tell me about a time you led a team through a difficult delivery.
|
||||
2. Describe a major failure in production or in market — what happened and what changed after?
|
||||
3. Tell me about a time you influenced direction across teams or stakeholders.
|
||||
4. What does a high-performing team look like to you?
|
||||
5. Tell me about a time you simplified something complex.
|
||||
6. Tell me about a time you solved a problem that wasn't yours to solve.
|
||||
|
||||
---
|
||||
|
||||
## Rules
|
||||
|
||||
- **One question at a time.** Never front-load multiple questions. Real interviewers ask one at a time.
|
||||
- **No hints before the answer.** Don't prime the candidate with "this is about X." Ask cold.
|
||||
- **Honest feedback only.** False encouragement is worse than silence — it sends a candidate into a real interview underprepared.
|
||||
- **No fabricated claims in suggested answers.** Stronger versions draw only on what the candidate said or what's in `cv.md`, `article-digest.md`, or the story bank — never invented experience or metrics.
|
||||
- **Retracted claims are a hard gate.** If a claim appears in `interview-prep/retracted-claims.md`, never use it in a stronger version — even if the candidate said it in their answer. Flag it instead.
|
||||
- **Track status.** Update `interview-prep/question-bank.md` after the session if it exists.
|
||||
- **Stop when asked.** If the candidate says "let's pause" or "that's enough for today," respect it. Don't push for one more question.
|
||||
Reference in new issue
Block a user