call-cognitive-load-monitor · git:20260918.cabb6bf · 2026-09-18 · sha256 16cb52264cfafe36
call-cognitive-load-monitor git:20260918.cabb6bfA
Immutable. This exact content is served forever at /api/v1/blob/16cb52264cfafe36.
---
name: call-cognitive-load-monitor
description: Offline experimental CALL-E transcript heuristics for repetition, confusion phrases and conversational proxies, with advisory scores and script suggestions for human review; not a cognitive assessment or consent determination.
license: MIT
---
# call-cognitive-load-monitor
> **Detect when your caller is overwhelmed — before it costs you the call.**
This skill analyzes supplied text for heuristic confusion markers and conversational proxies. It does not measure acoustics, administer a cognitive assessment, or establish consent validity. Reports and suggested script changes require human review; no live integration, message sending or follow-up call is performed.
---
## Why This Skill Exists
Most call-centre quality tools measure whether the **agent** performed well. This skill measures whether the **caller** was able to process what was said. When cognitive load peaks — especially at closing, where consent and commitment are given — the validity of that interaction is at risk.
**Advisory scope**: A `CONSENT_AT_RISK` label is a suggestion for human review, not a regulatory finding or authorization for a follow-up call. No label establishes that consent is valid or invalid.
---
## Research Scope
The weights and thresholds are unvalidated demonstration choices, not a reproduction of a published acoustic model. Background and claim limitations: [`references/research-papers.md`](references/research-papers.md).
---
## Quick Start
```bash
python3 scripts/monitor_cognitive_load.py \
--transcript path/to/transcript.json \
--dry-run \
--out /tmp/load_report.json
```
### Validate output schema
```bash
python3 scripts/validate_load_report.py --report /tmp/load_report.json
```
---
## Input
Standard CALL-E transcript — same two formats as other skills:
**Format A — array of turns:**
```json
[
{"role": "agent", "text": "Under the terms of sub-clause 4(b)(ii) of the agreement..."},
{"role": "callee", "text": "Sorry, could you say that again? I'm not following."},
{"role": "agent", "text": "Of course. Regarding the billing section specifically..."},
{"role": "callee", "text": "I still don't understand. What does that mean for me?"}
]
```
---
## Output — Overload Report
```json
{
"call_id": "calle-001",
"analysis_timestamp": "2026-09-17T08:00:00Z",
"overall_cognitive_load": "HIGH",
"load_score": 0.78,
"load_by_phase": {
"opening": 0.12,
"middle": 0.45,
"closing": 0.78
},
"peak_phase": "closing",
"overload_signals": [
{
"type": "repetition_request",
"evidence": "Sorry, could you say that again?",
"turn": 4,
"phase": "middle",
"weight": 0.30
},
{
"type": "confusion_phrase",
"evidence": "I still don't understand. What does that mean for me?",
"turn": 6,
"phase": "middle",
"weight": 0.25
},
{
"type": "jargon_density_spike",
"evidence": "sub-clause 4(b)(ii) of the agreement",
"turn": 3,
"phase": "middle",
"weight": 0.18
}
],
"interaction_dynamics": {
"turn_imbalance_score": 0.62,
"avg_silence_gap_ms": 2800,
"overlap_count": 0,
"participation_ratio": {"agent": 0.74, "callee": 0.26}
},
"script_patches": [
{
"original": "Under the terms of sub-clause 4(b)(ii) of the agreement",
"suggested": "According to our billing rules",
"rationale": "Legal jargon removed; Flesch-Kincaid grade reduced from 18 to 6"
}
],
"consent_validity_flag": "AT_RISK",
"consent_validity_reason": "Load score 0.78 exceeded threshold 0.65 during closing phase where commitment was recorded.",
"recommended_action": "SEND_WRITTEN_CONFIRMATION",
"false_positive_disclaimer": "Cognitive load inference is probabilistic. A flagged call does not constitute a legal finding. Human review is required before any adverse action.",
"flags": ["REQUIRES_HUMAN_REVIEW", "JARGON_DENSITY_HIGH"],
"analysis_mode": "heuristic",
"schema_version": "1.0"
}
```
---
## Cognitive Load Signals
### Linguistic Markers
| Signal Type | Example | Weight |
|---|---|---|
| `repetition_request` | "Could you repeat that?" / "Say that again?" | 0.30 |
| `confusion_phrase` | "I don't understand" / "I'm lost" / "What does that mean?" | 0.25 |
| `self_correction` | "Wait, I mean... actually..." | 0.15 |
| `clarification_request` | "So what you're saying is...?" | 0.20 |
| `jargon_density_spike` | Technical / legal terminology per 50-word window | 0.18 |
| `hedge_word_cluster` | "I think", "maybe", "I'm not sure" (3+ in one turn) | 0.12 |
### Interaction Dynamic Markers
| Signal Type | Threshold | Significance |
|---|---|---|
| `turn_imbalance` | Agent:Callee ratio > 3:1 | Agent dominating — callee cannot process |
| `long_silence_gap` | > 2 500 ms | Callee processing delay — indicates high extraneous load |
| `participation_drop` | Callee turns drop ≥ 40% in closing phase | Cognitive withdrawal |
### Load Levels
| Load Score | Level | Recommended Action |
|---|---|---|
| < 0.35 | `LOW` | `PROCEED` |
| 0.35–0.64 | `MEDIUM` | `FLAG_FOR_REVIEW` |
| 0.65–0.84 | `HIGH` | `SEND_WRITTEN_CONFIRMATION` |
| ≥ 0.85 | `CRITICAL` | `REPEAT_CALL_WITH_SIMPLER_SCRIPT` |
---
## Consent Validity Flags
| Flag | Trigger | Meaning |
|---|---|---|
| `CONSENT_VALID` | Load < 0.65 during closing | Caller was processing normally when consenting |
| `CONSENT_AT_RISK` | Load ≥ 0.65 during closing | Caller may have consented under cognitive strain |
| `CONSENT_UNKNOWN` | Closing phase not identifiable | Transcript structure too short to assess |
> [!CAUTION]
> `CONSENT_AT_RISK` does not mean consent is invalid. It flags the call for human review and recommends sending written confirmation. Never use this flag as a standalone legal determination.
---
## Command-Line Reference
```
usage: monitor_cognitive_load.py [-h] --transcript TRANSCRIPT
[--threshold THRESHOLD]
[--dry-run]
[--out OUT]
options:
--transcript Path to the transcript JSON file (required)
--threshold Load score above which level is HIGH (default: 0.65)
--dry-run Analyse without side effects
--out Write report JSON to this path (default: stdout)
```
---
## Integration with CALL-E
Insert as a **post-call QA step** in any pipeline where consent or commitment is recorded:
```
[call ends] → [transcribe] → [monitor_cognitive_load.py]
↓
load=HIGH → send written confirmation email
load=CRITICAL → schedule follow-up call with simplified script
```
Combine with `client-persona-profiler`: Analytical (C) and Steady (S) callers have lower jargon tolerance — flag their calls at a lower threshold.
---
## Privacy & Safety
- Reports contain copied transcript evidence and script-patch text and may contain private data. Keep real-input reports local and access-controlled; use synthetic inputs for examples and tests. Do not publish reports without review.
- The separate `validate_load_report.py` check is not automatically run before writing and is not a complete PII redactor or privacy guarantee.
- The consent-validity flag is **advisory only**. A human must review before any regulatory or legal action.
Full safety reference: [`references/safety.md`](references/safety.md)
## Expected Outcomes & Metrics
The following numbers are unvalidated design targets, not measured results.
| Metric | Expected Target | Notes |
|---|---|---|
| Latency | < 50ms per transcript | Evaluates locally without LLM dependencies. |
| TPR (True Positive Rate) | > 85% | Identifies cognitive strain in human-annotated datasets. |
| FPR (False Positive Rate) | < 10% | Some benign clarification requests may be flagged. |
---
## Limitations & Known Constraints
- **Text-Only Modality**: Cannot detect sighs, actual silence duration, or exasperated tone. Silence and load fields are text-based proxies, not acoustic measurements.
- **Prototype options**: `--threshold` is currently accepted but unused; reported levels use built-in constants. Short transcripts and a `CONSENT_VALID` label do not prove that a closing phase or consent occurred.
- **ASR Dependency**: If the ASR mistranscribes "I'm lost" as "I boss", the signal is missed.
- **Language Bias**: Heuristics are currently calibrated exclusively for English.
---
## Files
```
skills/call-cognitive-load-monitor/
├── SKILL.md
├── scripts/
│ ├── monitor_cognitive_load.py ← Main analysis runner
│ ├── validate_load_report.py ← Output schema validator
│ └── test_cognitive_load.py ← Test suite (50+ assertions)
└── references/
├── example-transcript.json ← High-load example transcript
├── examples.md ← Usage examples
├── research-papers.md ← Full citations
└── safety.md ← Consent-validity ethics guide
```