← Back to portfolio

Case Study

Interview Signal Extractor

Interview signal decays the moment the call ends. This captures it before it does.

An original system design, informed by my work on interview intelligence at Employ Inc — not a description of Pillar's proprietary implementation, UI, or data. Business impact figures below are reasoned estimates, not measured production numbers.

1. The Original Workflow

A hiring manager runs a 45-minute structured interview while simultaneously taking notes — which means the notes are necessarily incomplete, because attention is split between listening, asking good follow-ups, and writing. Within 24–48 hours (often longer, once the rest of the week's calendar hits), they open the recording or raw transcript and reconstruct their evaluation from memory: scrubbing to the "tell me about a time..." answer, replaying it at 1.5x, manually copying two or three quotes into a scorecard field per competency, then assigning a 1–4 rating that's really a blend of the transcript, their notes, and how they felt about the candidate by the end of the call.

This repeats per interviewer, per candidate. For one open role, a realistic funnel is 5 candidates through 3 relevant interview rounds each — 15 scorecards, at roughly 20–25 minutes of write-up per scorecard once quote-hunting and note cleanup are included. That's on top of the interview itself, done by people whose actual job isn't writing scorecards.

2. The Friction Points

FrictionRoot CauseImpact
Quote loss over timeReal-time notes are incomplete by construction — the interviewer is also running the conversationBy debrief, interviewers can't produce the specific evidence behind their score, so ratings collapse into "vibes"
Recency/primacy bias in comparisonHumans over-weight the most recent or most emotionally memorable candidate when comparing several for one roleStrong early candidates get unfairly discounted; weak-but-recent candidates get overrated
Inconsistent rubric applicationNo two interviewers decompose "communication" or "ownership" the same way without an enforced structureThe same competency label means different things depending on who scored it, so aggregate scores aren't comparable
Scorecard write-up as a bottleneck20+ minutes of manual write-up per interview, per interviewerInterviewers rush or skip scorecards under sprint pressure, especially for later-round candidates

3. Prerequisites

  1. Reliable, speaker-diarized transcription. Extraction against a transcript that can't reliably tell interviewer from candidate speech is worse than no extraction — it just launders bad input into confident-looking output.
  2. A defined, versioned competency rubric with written score anchors (what a 1 looks like vs. a 4 for "Ownership") must exist before any AI scoring is possible. Without explicit anchors, the model has nothing legitimate to score against.
  3. A supervised pilot where interviewers see AI output alongside their own, not instead of it. If the first thing any interviewer experiences is "the AI scored my candidate and I disagree," adoption dies on contact.

4. The AI-Enabled Redesign

  1. Ingest & diarize — transcript ingested immediately post-interview, speaker-labeled and timestamped.
  2. Competency-anchored extraction — the model reads the full transcript against the versioned rubric and pulls candidate statements that map to each competency, not a free-form summary.
  3. Confidence-scored classification — for each competency, the model assigns a 1–4 score and a confidence level, and always surfaces the 1–3 direct quotes that justify it.
  4. Cross-interview aggregation — once all interviewers for a candidate submit, the system aggregates scores per competency and flags contradictions.
  5. Human-reviewable draft, not an autofilled answer — the interviewer gets a pre-filled scorecard within minutes, with quotes attached, and edits it rather than starting from a blank page.

5. Human Fallback Triggers

  • Confidence below threshold (e.g. <70%) on any competency — left for human review, never auto-populated with a best guess.
  • Any quote flagged by a bias-language check (age, family/parental status, accent, national origin, disability, or similar) — withheld entirely; the competency is flagged potential_bias_signal and a human reviews the raw transcript directly.
  • Contradictory scores across interviewers on the same candidate/competency (>2-point spread on a 4-point scale) — routed into the debrief discussion, never silently averaged.
  • Transcripts under a minimum length/turn-count (e.g. a call that dropped after 8 minutes) — flagged as insufficient signal; no score generated at all.
  • Low diarization confidence — routed to manual review, since extraction on a garbled transcript is worse than none.

6. Sample AI Prompt

System promptYou are an interview signal extraction assistant. You are given a timestamped, speaker-diarized interview transcript and a versioned competency rubric. Your job is to extract evidence-backed competency scores, not general impressions. For each competency in the rubric: 1. Read the transcript for candidate statements (not interviewer statements) that provide direct evidence for that competency. 2. Assign a score from 1-4 using ONLY the rubric's written anchors for that competency and score level. Do not substitute your own judgment of what "good" looks like. 3. Attach 1-3 direct, verbatim quotes (with timestamps) that justify the score. Never paraphrase a quote. 4. Assign a confidence level (high/medium/low). If the candidate never clearly addressed a competency, output "insufficient_signal" instead of guessing. 5. If a quote references a candidate's age, family/parental status, accent, national origin, disability, or other protected characteristic, do not include it or use it to inform the score. Flag the competency "potential_bias_signal" and output no score. Never invent a quote. Never round a low-confidence score up to look more decisive. When uncertain, under-claim, not over-claim. Output strict JSON: { "competency": string, "score": 1-4 | null, "confidence": "high"|"medium"|"low", "quotes": [{ "text": string, "timestamp": string }], "flag": "none"|"needs_human_review"|"potential_bias_signal"|"insufficient_signal" }
Example input — competency: "Ownership" (rubric anchor for 4: candidate identifies and acts on a problem outside their explicit scope, without being asked, and drives it to a measurable outcome)[00:14:22] Interviewer: Tell me about a time you owned a problem that wasn't originally yours. [00:14:31] Candidate: We had a support escalation queue that kept growing and nobody actually owned triaging it — it technically sat between two teams. I didn't wait for someone to assign it to me. I pulled the last 200 tickets, tagged the root causes myself over a weekend, and proposed a routing change to my manager on Monday. We cut the backlog by half in three weeks.
Example output{ "competency": "Ownership", "score": 4, "confidence": "high", "quotes": [ { "text": "it technically sat between two teams. I didn't wait for someone to assign it to me.", "timestamp": "00:14:31" }, { "text": "I pulled the last 200 tickets, tagged the root causes myself over a weekend", "timestamp": "00:14:31" }, { "text": "We cut the backlog by half in three weeks.", "timestamp": "00:14:31" } ], "flag": "none" }

Error handling: if the transcript segment relevant to a competency is missing, garbled below diarization confidence threshold, or the candidate's response doesn't address the competency at all, the model outputs score: null, confidence: "low", flag: "insufficient_signal" — a missing score is always preferable to a fabricated one.

7. Prompt Testing

CaseInputExpected OutputWhat a Bad Result Reveals
ClearThe Ownership example aboveScore 4, confidence high, 2–3 verbatim quotes, flag noneParaphrasing instead of quoting, or hedging to a 3 on unambiguous evidence, means the model is under-confident on clear signal
Ambiguous / low-signal"I'm definitely a team player, I think collaboration is super important" — no concrete exampleConfidence low, flag insufficient_signal, no score forcedScoring this 3–4 on positive sentiment alone means the model is pattern-matching on tone instead of requiring evidence — the most dangerous failure mode here
Multi-signal / contradictoryCandidate's "ownership" story reveals they bypassed their manager and caused friction with a peer teamOwnership scored honestly, and the friction surfaced as relevant to Collaboration — not silently resolved in the candidate's favorOnly extracting the flattering half of the story reveals a selection bias toward positive-sounding evidence
Edge caseCall dropped after 6 minutes, before any competency questions were reachedinsufficient_signal on every competency, no scores, no invented summarySummarizing technical difficulty as a soft-skills read ("stayed calm under pressure") reveals the model fabricating signal from irrelevant content

8. Business Impact

MetricBeforeAfterReasoning
Scorecard write-up time per interview~22 min~6 minQuote-hunting and re-listening is the dominant time cost; editing a pre-filled, quote-attached draft is materially faster than writing one from scratch
Time-to-scorecard availability~24–48 hrs (batched)<15 minGeneration runs immediately once the transcript is ready, closing the recall-decay gap that causes quote loss
Contradictory scores caught before debrief~0% (surfaced informally, if at all)~100% (structurally flagged)A capability change, not an incremental one — every scorecard pair is checked automatically instead of relying on someone noticing mid-conversation

The math, shown: 5 candidates × 3 relevant interview rounds = 15 scorecards per open role. At 22 min → 6 min, that's 16 minutes saved × 15 = 240 minutes (4 hours) saved per hiring cycle — before counting the time saved in debrief meetings that no longer re-litigate half-remembered impressions.

9. Product Thinking — Risks & Tradeoffs

Risk: AI competency scoring could encode or amplify bias if not carefully designed. A rubric-anchored score is only as fair as the rubric and the model's application of it. Score distributions get audited per interviewer and per candidate demographic slice on a regular cadence, not just at launch; the bias-language flag in Section 5 exists specifically to pull suspect content out of the automated path entirely rather than let the model quietly "handle" it.

Risk: over-trusting AI-generated scorecards could reduce interviewer rigor over time. If a pre-filled draft is good enough often enough, interviewers may stop critically checking it — the same complacency risk as autocomplete. The tool is positioned and measured as a drafting aid, not a scoring authority; edit rates are tracked, and a sustained near-zero edit rate on a given interviewer is itself a flag worth investigating, not a success metric.

Design choice — what stays human, and why: final hiring decisions, any borderline scoring call (defined by the confidence threshold in Section 5), and anything bias-flagged. The system is built to produce evidence and a first-pass read, never a verdict.

Dependency: quality is bounded by the rubric, not the model. A vague or poorly-anchored rubric produces vague, poorly-anchored scores no matter how good the extraction is — garbage rubric in, garbage signal out. This is why Prerequisite #2 isn't optional.

10. Portfolio Assets to Build

  • A before/after workflow diagram (manual multi-day recall-based process vs. the AI-assisted near-real-time flow)
  • The system prompt and sample output above, presented as readable code (already built)
  • A mockup of the scorecard output UI — competency rows, score, confidence badge, attached quotes, and a distinct visual state for "needs human review"
  • A short rollout/pilot plan: Phase 1 — shadow mode on one team for two hiring cycles, AI output visible but never used in decisions; Phase 2 — opt-in default draft for volunteering interviewers, human edit required before submit; Phase 3 — default rollout with all fallback triggers active, no scorecard ever reaches a hiring decision without human sign-off
← Back to portfolio