How Teamcast Measures
Coverage & assessment
The measurement model behind every Teamcast interview: deterministic, evidence-backed, coverage-only.
Every interview produces a coverage_summary — a sufficient / partial / insufficient rating, computed at three levels: per sub-dimension, per competency, and overall.
Structure
Competencies break down into sub-dimensions, which break down into signals — each weighted by the role profile (see Analytics & role profiles). Every claim in the assessment is backed by an evidence unit that cites the specific utterance the candidate said — full traceability from score back to transcript.
Highlights & lowlights
Highlights are the strongest behavioral episodes in the interview, each with its citation. Lowlights are the thinnest sub-dimensions — where coverage is weakest.
Deterministic scoring
Scoring is pure math: reproducible, with no randomness and no LLM in the scoring path. The LLM is only used earlier, to extract and type evidence from the transcript — it never sets a score. Signal weights come from the database ontology, not from hardcoded values.
Example
{
"overall_coverage": "partial",
"gap_competencies": ["system design at scale"],
"covered_count": 5,
"total_count": 6
}Detailed pipeline trace (stage_trace)
Payloads scored since the 13-stage projection shipped also carry an additive stage_trace — a display-only re-organisation of the same evidence, powering the recruiter Detailed assessment view. It walks a reviewer through how one transcript became a score. It adds no new scoring and duplicates nothing from the fields above — per-signal strengths, roll-ups and coverage are still read from traces / sub_dimension_details / competencies / coverage_summary. Older payloads omit it, and the Detailed view falls back to the coverage review.
The 13-stage skeleton describes the canonical Signal-Acquisition pipeline. Each stage carries a status: active (this pipeline computes it today) or planned (defined but not yet wired in the production path), and a kind: deterministic or llm.
| # | Stage | Kind | Status |
|---|---|---|---|
| 1 | PII Scrub | deterministic | planned |
| 2 | Segmentation | deterministic | active |
| 3 | ERA-CoT Pre-analysis | llm | planned |
| 4 | Evidence Extraction | llm | active |
| 5 | Evidence Typing | llm | active |
| 6 | Epistemic Classification | llm | active |
| 7 | Quality Scoring | deterministic | active |
| 8 | CRISP Confidence | deterministic | active |
| 9 | Dedup & Merge | deterministic | active |
| 10 | Signal Mapping & Contribution | deterministic | active |
| 11 | Aggregation — max() | deterministic | active |
| 12 | Sub-dimension & Competency Roll-up | deterministic | active |
| 13 | Coverage & Output | deterministic | active |
segmentation is the Stage-2 transcript (per utterance, with a recording offset_s for click-to-play). evidence_units is the flat Stage 4–9 view — every cited unit with its captured measures (the per-evidence quality / confidence / contribution sub-scores).
"stage_trace": {
"stages": [
{ "index": 2, "key": "segmentation", "name": "Segmentation", "kind": "deterministic", "status": "active" }
// ... all 13 stages
],
"segmentation": [
{ "utterance_id": "u6", "speaker": "candidate", "text": "So we first take all the loggers...", "offset_s": 141.2 }
],
"evidence_units": [
{
"utterance_id": "u6",
"competency_id": "analytical",
"sub_dimension_id": "problem_diagnosis",
"signal_id": "diagnostic_reasoning",
"evidence_type_id": "direct_quote",
"strength": 0.8,
"quote": "So we first take all the loggers...",
"measures": {
"quality": 0.8, "confidence": 0.888, "contribution": 0.639,
"specificity": 0.9, "causal_clarity": 0.9, "epistemic_weight": 0.9
// ... full per-evidence measure block; null on the holistic-fallback path
}
}
],
"evidence_unit_count": 15,
"merged_duplicate_count": 0,
"era_cot": null // Stage-3 pre-analysis when it ran, else null
}Stages marked planned render as skeleton in the Detailed view but carry no per-candidate data until they are wired.