7.3 KiB
Mode: interview-redflag — Company Red-Flag Detector
Purpose
Analyse the interviewer's side of session transcripts to surface structural red flags about a company before the candidate accepts an offer or re-applies. Complements patterns (tracker-level win/loss) and #960 / realign-targeting (candidate-side answer clustering).
This mode answers: "Even if I win this process — is this company safe to join?"
Dependency
Requires transcripts produced by modes/interview/debrief.md or modes/interview/practice.md (#956). Each transcript must be saved under interview-prep/sessions/ (gitignored). If no session files exist, exit gracefully with an onboarding message.
Inputs
interview-prep/sessions/— Session transcripts (debrief + practice outputs). One file per round.interview-prep/{company}-{role}.md— Company intel file (for context + output target).config/profile.yml— User profile (for role/archetype context).
Expected transcript filename convention (from #956):
{company-slug}-{role-slug}-{round}-{YYYY-MM-DD}.md
Minimum Threshold
Check: does interview-prep/sessions/ contain at least 1 file?
If not:
"No session transcripts found yet. Run
/career-ops interviewon a role after your next interview to generate a debrief, then come back to check for red flags."
Exit gracefully.
Step 1 — Discover Sessions
List all .md files in interview-prep/sessions/. Parse each filename using the YYYY-MM-DD date segment as the anchor:
{company-slug}-{role-slug}-{round}-{YYYY-MM-DD}.md
↑ ↑ ↑ ↑
everything segment round date anchor
before round immediately label (trailing)
before round
YYYY-MM-DDis the anchor — find the date, work left from it.round= segment immediately before the date anchor.company+role= everything beforeround.
Example: acme-corp-swe-hr-2024-01-15.md → company=acme-corp, role=swe, round=hr, date=2024-01-15.
Group files by {company-slug}. For each company group, note:
- Number of rounds on file
- Date range of sessions
- Role slugs covered (a company may have sessions across multiple roles)
Step 2 — Classify Interviewer Signals Per Session
For each transcript, read only the interviewer's turns (lines attributed to the interviewer, moderator, or prefixed with role labels). Ignore candidate turns for this pass.
Mark each of the four signal types as present or absent for the session. A signal is present if it is directly observable in the transcript — do not infer. Single occurrence within a session is sufficient to mark it present; noise filtering happens at the company-level aggregation step (Step 3).
Signal taxonomy
| Signal | What to look for |
|---|---|
| Scope ambiguity | Questions with no measurable criteria ("tell me about yourself, anything really"; "just talk us through whatever you think is relevant"); no definition of what a good answer looks like; role responsibilities described in circular or contradictory terms across interviewers |
| Defensive closure | Interviewer shortens or redirects after a technically complete / superior candidate answer; follow-up probes absent when answer exceeds expectations; session ends abruptly after candidate gives a comprehensive response without probing further |
| Evaluator competency gap | Interviewer cannot engage with a domain-correct answer (silence, non-sequitur follow-up, pivot to unrelated topic); senior interviewer asks questions whose framing reveals unfamiliarity with the candidate's stated domain |
| Process signals | Contradictory criteria across interviewers in the same company; structured follow-up absent across all rounds; interviewers visibly unaware of previous round's content; evaluation criteria shift mid-session |
Record which signals are present per session. Do not infer — only flag what is explicitly observable in the transcript text.
Step 3 — Aggregate Per Company
For each company, count how many sessions triggered each signal type.
Compute a red-flag score:
- Each signal type present in 1 session: +1
- Each signal type present in 2+ sessions (pattern, not noise): +2
- Maximum possible: 8 (4 signal types × 2)
Step 4 — Assign Warning Level
| Score | Level | Label |
|---|---|---|
| 0–1 | None | No structural red flags detected |
| 2–3 | Caution | ⚠️ Enter with eyes open |
| 4+ | Warning | 🚩 Reconsider |
Step 5 — Generate Output
Output routing: Red-flag analysis is company-wide (signals aggregate across rounds regardless of role). Write to a single company-level file: interview-prep/{company-slug}-redflags.md. Create it if absent. If sessions span multiple role slugs, note all roles in the header. Do not append to per-role intel files — those are role-specific, this is company-specific.
Write the following structure:
# Red-Flag Analysis — {Company}
**Roles covered:** {role-slug(s)}
**Sessions analysed:** {N} round(s) — {date range}
**Warning level:** {emoji} {label}
### Signals detected
| Signal | Sessions | Severity |
|--------|----------|----------|
| Scope ambiguity | {n}/{total} | {single/pattern} |
| Defensive closure | {n}/{total} | {single/pattern} |
| Evaluator competency gap | {n}/{total} | {single/pattern} |
| Process signals | {n}/{total} | {single/pattern} |
### What this means
{1–3 sentences interpreting the pattern in plain language. What specifically did the interviewers do? What does this predict about the role? Be direct — if the signal predicts the candidate will absorb undefined responsibility, say so.}
### Recommended action
{One of:
- "No action needed — proceed."
- "Before accepting: clarify [specific scope/responsibility] in writing."
- "Before accepting: ask [specific questions] to verify the concern."
- "Reconsider: the pattern across {N} rounds suggests [specific risk]."}
*Analysis based on interviewer behaviour only. Candidate decides.*
Step 6 — Present Summary
After writing the file, show the user:
Red-Flag Analysis — {Company}
──────────────────────────────
Rounds analysed: {N}
Warning level: {emoji} {label}
Signals:
• {signal}: {n}/{total} sessions {(pattern) if 2+}
...
→ Full analysis written to interview-prep/{company-slug}-redflags.md
If multiple companies were analysed in one run, show a summary table:
Company Rounds Level
──────────────── ────── ─────────────────────────
{Company A} 3 🚩 Reconsider
{Company B} 1 ⚠️ Enter with eyes open
{Company C} 2 No red flags
Scope / Non-Goals
- No auto-action — never edits
portals.yml,modes/_profile.md, ordata/applications.md. Advisory only. - No new dependencies — prompt-level analysis over local files.
- Privacy — reads only local, gitignored session files. Nothing leaves the machine.
- Not a Glassdoor replacement — analyses this candidate's live experience in this process, not crowd-sourced opinion.
- Candidate-side analysis is out of scope — use
realign-targeting(#960) for that.