call-verbal-irony-detector · git:20260920.49cb149 · 2026-09-20 · sha256 65cb9d4773c0406b

call-verbal-irony-detector git:20260920.49cb149A

Immutable. This exact content is served forever at /api/v1/blob/65cb9d4773c0406b.

---
name: call-verbal-irony-detector
description: Offline experimental CALL-E transcript helper using English irony markers and complaint-context scoring. Returns advisory evidence spans, illustrative confidence buckets or abstention, and suggested de-escalation wording. It does not establish a person's intent, authorize another call or perform consequential actions.
license: MIT
---

# call-verbal-irony-detector

> **What was said is not always what was meant.**

`call-summarizer` reports caller sentiment - what was said. This skill detects
verbal irony - the mismatch between the two - and turns it into the next
call's strategy. A callee who answers "Oh, great. Just perfect." after a
complaint is not happy, and an agent that acts on the literal words will
make it worse.

## When To Use

- after any CALL-E call where the outcome hinges on a positive-sounding
  answer inside a complaint discussion
- to decide whether a follow-up call should use a de-escalation goal
- to generate that de-escalation goal for `plan_call` directly

## When Not To Use

- to detect sentiment in general; use `call-summarizer` for that
- to detect fraud or social engineering; use `call-fraud-shield`
- during a call; this is strictly post-call analysis plus pre-call goal
  crafting, because CALL-E exposes transcripts, not live audio
- as proof of the callee's emotional state; text-only irony cues are
  ambiguous and the card says so

## Workflow

### Analyze a finished call

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

Reads the real `get_call_run` result shape (`{status, result: {transcript}}`)
or the flat shape used by sibling skill fixtures. Emits a card:

- `irony_detected` + `confidence` (high / medium / low / none)
- `evidence`: turn index, masked span, matched rules
- `irony_assessment: "unclear"` with a reason when the callee never spoke
- `recommended_action`: `retry_with_deescalation_goal` (with the goal text),
  `verify_literal_intent_prompt`, or `continue`

Confidence labels are fixed heuristic score buckets, not empirically calibrated
probabilities. Action names are review suggestions only; confirm the person's
intent and separately approve any follow-up call or consequential action.

### Craft the follow-up goal

```bash
python3 scripts/irony_detector.py craft --scenario complaint-followup --language en
```

Emits the plan_call inputs JSON whose `goal` is the same de-escalation
template the card recommends, so analysis and next call stay consistent.

## Scientific Foundation

| Research | Relevance |
|---|---|
| SarcNet: A Multilingual Multimodal Sarcasm Detection Dataset (LREC-COLING 2024) | Motivates marker + context mismatch detection; we use the text modality only |
| Sarcasm in Sight and Sound / MUStARD++ (arXiv 2310.01430) | Multimodal sarcasm benchmark incl. speech; our contrast rule is a text-only approximation |

Both papers study multimodal sarcasm; CALL-E exposes transcripts without
prosody, so this skill deliberately implements the text-side approximation
and labels every output `analysis_mode: "heuristic"`.

## Differences from sibling skills

- `call-summarizer` reports stated sentiment; this skill reports the
  stated-vs-meant mismatch and changes the next call's goal.
- `call-review` audits call compliance; this skill tunes conversational
  strategy.