call-apology-effectiveness-auditor · git:20261003.04d028c · 2026-10-03 · sha256 ad8844d53cd4be4b
call-apology-effectiveness-auditor git:20261003.04d028cA
Immutable. This exact content never changes and is served at /api/v1/blob/ad8844d53cd4be4b.
---
name: call-apology-effectiveness-auditor
description: Offline heuristic CALL-E transcript skill that detects callee grievances and grades the agent's response against the six-component apology effectiveness taxonomy (acknowledgment, repair, explanation, regret, forbearance, forgiveness request) with rote/empathic/explanatory typology, plus an apology-protocol goal template. It is not a sincerity measure, relationship counseling, or authorization to act automatically.
license: MIT
---
# call-apology-effectiveness-auditor
> **"I'm sorry you feel that way" is not an apology. It is a complaint
> about the person who had one.**
Apology effectiveness is component-decomposable: research on real
conflict apologies shows that a working apology is not one utterance but
a stack of parts - acknowledgment of responsibility, concrete repair,
brief explanation, expressed regret, forbearance, and (optionally) a
request for forgiveness - and that acknowledgment carries the most
weight. When a callee raises a grievance on a call, an agent that says
only "I'm sorry about that" and moves on to scheduling has produced a
rote apology: audible, and empty. This skill detects the grievance and
grades the recovery response against that component stack.
## When To Use
- after support, collections, or clinic calls where the callee may have
raised a grievance (delay, broken promise, repeated contact)
- in QA pipelines, to find calls where the recovery was rote, deflecting,
or missing entirely
- before recovery callbacks, to craft an apology-protocol goal that names
the miss and offers concrete repair
## When Not To Use
- as a measure of sincerity or relationship health; the components are
surface-lexical markers - an agent can say "that's on us" with no
feeling behind it
- to force apologies on every failure; sometimes the right posture is no
apology at all, because the agent cannot own fault it does not have
- during a call; strictly post-call analysis plus pre-call goal crafting
- on non-English transcripts; the lexicons are English-only
## Workflow
### Audit a finished call
```bash
python3 scripts/apology_effectiveness_auditor.py analyze \
--transcript path/to/call-result.json
```
Reads the real `get_call_run` result shape (`{status, result: {transcript}}`)
or the flat fixture shape used by sibling skill fixtures. Emits a card:
- `grievance_turn_index` / `grievances_total` / `grievance_evidence`:
where the first grievance was voiced (callee turns only), how many
grievance-bearing callee turns exist, and the masked evidence sentence
- `apology_detected` / `apology_evidence`: whether any agent turn from the
grievance onward contains an apology, and the masked sentence
- `components_present`: the six-component markers found in the graded
window (the apology sentence plus the following agent turn, since
explanations often arrive one turn late)
- `typology`: `rote` / `empathic` / `explanatory` (empathic > explanatory
> rote)
- `verdict`: `EFFECTIVE_APOLOGY` (acknowledgment plus repair or
explanation) / `PARTIAL_APOLOGY` / `NON_APOLOGY` (deflection override) /
`GRIEVANCE_UNADDRESSED` / `NO_GRIEVANCE`, plus `unclear` paths (empty
transcript, fewer than two turns)
Only the FIRST grievance's response window is graded; later grievances
are counted in `grievances_total` but their responses are not separately
graded.
### Craft the apology-protocol goal
```bash
python3 scripts/apology_effectiveness_auditor.py craft --scenario apology-protocol
```
Emits the plan_call inputs JSON whose goal implements the protocol:
acknowledge the specific miss, offer concrete repair, explain briefly
only after acknowledging, and never use "sorry you feel that way"
constructions.
## Scientific Foundation
| Research | Relevance |
|---|---|
| An Exploration of the Structure of Effective Apologies (Lewicki, Polin & Lount, Negotiation and Conflict Management Research 9(1), 2016, doi 10.1111/ncmr.12073) | Empirically ranks six apology components; acknowledgment of responsibility carries the most weight - our EFFECTIVE threshold requires it |
| A Critical Review of Apology in AI Systems (Harland et al., arXiv 2412.15787, 2024) | First synthesis of AI apology research: apologies are routine in chatbots but rarely designed - motivates auditing them on calls |
| Who's Sorry Now: User Preferences Among Rote, Empathic, and Explanatory Apologies from LLM Chatbots (Ashktorab et al., arXiv 2507.02745, 2025) | Users distinguish apology TYPES; preference data grounds our rote/empathic/explanatory typology |
Citation notes recorded during verification: all three web-verified
2026-10-01. CORRECTION recorded: the frequently cited "2014 component
structure of interpersonal apologies" title does not exist - the
empirical six-component study is the 2016 NCMR paper by Lewicki, Polin &
Lount (not "Polite").
## Differences from sibling skills
- `call-disfluency-stress-profiler` measures stress markers as they
happen; this skill grades the recovery RESPONSE after a grievance is
voiced.
- `call-repair-sequence-auditor` scores micro-level conversational repair
(huh/repeat/rephrase); this skill scores macro-level relational
recovery.
- `call-agent-commitment-tracker` tracks future obligations; a repair
offer is graded for FORM here and tracked as an OBLIGATION there.