call-disfluency-stress-profiler · git:20260924.afe6d97 · 2026-09-24 · sha256 4f607887756c1286

call-disfluency-stress-profiler git:20260924.afe6d97A

Immutable. This exact content is served forever at /api/v1/blob/4f607887756c1286.

---
name: call-disfluency-stress-profiler
description: Offline heuristic CALL-E transcript skill that measures filled-pause, self-repair, repetition, and hesitation-opener rates per speaker side to detect callee stress and agent knowledge-gap hesitancy, then emits a reassurance-paced follow-up call goal. It is not a clinical stress assessment, a proof of speaker intent, or authorization to act automatically.
license: MIT
---

# call-disfluency-stress-profiler

> **Repeated pauses and repairs can be useful prompts for human review,
> but do not establish a speaker's emotional state or knowledge.**

Spoken conversation carries signals that plain transcripts still preserve:
disfluency. When a callee is stressed, confused, or overwhelmed, their
filled-pause rate (`uh`, `um`, `er`) and self-repair frequency (`I mean`,
`actually`, word repetitions) spike measurably above baseline. When an agent
encounters questions outside its prepared knowledge, the same markers appear
in its turns.

This skill reads the finished `get_call_run` transcript, computes per-side
disfluency rates, and flags `CALLEE_STRESSED` or `AGENT_HESITANT` when rates
cross illustrative, unvalidated demo thresholds. It then offers a reassurance-paced follow-up
call goal or a script-review recommendation.

## When To Use

- after any CALL-E call where the contact seemed distressed or uncertain
- as part of a QA pipeline to detect agent knowledge gaps at scale
- in healthcare, collections, or support workflows where caller distress
  carries legal or ethical weight
- to identify topics that consistently cause agent hesitancy (→ update scripts)

## When Not To Use

- as a clinical or psychological stress assessment
- during a call; strictly post-call analysis plus pre-call goal crafting
- as the sole basis for medical or legal decisions
- on languages other than English; the lexicon is English-only

## Workflow

### Audit a finished call

```bash
python3 scripts/disfluency_stress_profiler.py analyze \
  --transcript path/to/call-result.json
```

Reads the real `get_call_run` result shape or the flat fixture shape. Emits
a disfluency card:

- `agent_profile` / `callee_profile`: per-side stats including `total_words`,
  `total_markers`, `disfluency_rate`, and `per_turn_counts`
- `flags[]`: `CALLEE_STRESSED` and/or `AGENT_HESITANT` when rates exceed
  their respective thresholds
- `verdict`: `NORMAL` / `CALLEE_STRESSED` / `AGENT_HESITANT` / `BOTH_STRESSED`,
  plus `unclear` paths
- `recommended_action`: one of `no_action_required`, `reassurance_followup`,
  `review_agent_script`, or `reassurance_followup_and_script_review`
- `disclaimer`: heuristic advisory disclaimer on every card

#### Thresholds (defaults)

| Side | Threshold | Flag triggered |
|---|---|---|
| Callee | 8% disfluency rate | `CALLEE_STRESSED` |
| Agent | 6% disfluency rate | `AGENT_HESITANT` |

#### Disfluency markers detected

| Category | Examples |
|---|---|
| Filled pauses | `uh`, `um`, `er`, `eh`, `ah`, `hmm` |
| Self-repairs | `I mean`, `actually`, `no wait`, `to rephrase` |
| Repetitions | `I I`, `the the`, `we we` |
| Hesitation openers | `well, `, `so, `, `you know, ` at clause start |

### Craft the reassurance follow-up goal

```bash
python3 scripts/disfluency_stress_profiler.py craft --scenario reassurance-followup
```

Emits the `plan_call` inputs JSON whose `goal` instructs the next call to
adopt a calm, unhurried pace, pause after each question, acknowledge concerns
explicitly, and ask one question per turn.

## Research Background

These references provide conceptual background, not validation of this regex
implementation or its 8%/6% defaults. Disfluency has many causes; the labels
are advisory review cues, not measured stress or competence.

| Research | Relevance |
|---|---|
| Shriberg, E. — *Preliminaries to a Theory of Speech Disfluencies* (PhD Thesis, UC Berkeley, 1994) | Gold-standard taxonomy for filled pauses, repetitions, and repairs in spoken dialogue; direct source for the marker categories in this skill |
| Levelt, W.J.M. — *Monitoring and Self-Repair in Speech* (Cognition, Vol. 14, 1983, doi:10.1016/0010-0277(83)90026-4) | Theory of self-repair: speakers monitor their own speech and repair when cognitive load is high; repair rate correlates with stress and difficulty |
| Kumar et al. — *Mind the Pause: Disfluency-Aware Objective Tuning for Multilingual Speech Correction with LLMs* (ACL 2026, arXiv:2605.12242) | Confirms that disfluency detection from text transcripts is technically feasible with high accuracy; provides methodology basis for lexical marker detection |
| Ngo et al. — [*"Mm, Wat?" Detecting Other-initiated Repair Requests in Dialogue*](https://aclanthology.org/2025.emnlp-main.1168/) (EMNLP 2025) | Studies multimodal repair-initiation detection in Dutch dialogues; it does not validate this skill's stress thresholds |
| CALL-E Official Documentation — *Transcript Structure and get_call_run Result Schema* (docs.heycall-e.com) | Defines the exact JSON shapes this skill parses: `transcript[].speaker`, `transcript[].text`, and the nested `result` wrapper |

This skill implements a lexical/regex heuristic against the defined marker
taxonomy. It does not use model internals and labels every output
`analysis_mode: "heuristic"`.

## Differences from sibling skills

- `call-verbal-irony-detector` detects semantic incongruence (sarcasm/irony);
  this skill measures prosodic-cognitive load signals visible in text.
- `call-semantic-barge-in-analyzer` measures interruption patterns; this skill
  measures hesitancy within un-interrupted turns.
- `call-agent-certainty-calibrator` grades agent fact-statement accuracy; this
  skill grades conversational fluency and stress level on both sides.