Детектор пассивной агрессии в речи оператора КЦ — отчёт

Период: 18–24.05.2026, 3 оператора (Ольга #263, Катерина #27, Людмила #90), 211 транскриптов.


1. Промпт v1

Путь: /Users/andrey/Documents/Cursor/Rosperevozki_сделки/call_analytics/prompts/passive_aggression_v1.md

Суть в 5 строк:


2. Результаты ручного прогона (9 кейсов)

Для каждого кейса я выступаю в роли LLM и выдаю JSON по схеме промпта.

Кейс 1. Ольга #263 — звонок 129809 (явная ПА, наушники Коломна)

Файл: data/2026-05-24/transcripts/129809.txt Длительность: 60 сек, LEAD, входящий.

Транскрипт (ключевой фрагмент):

«...А просто вот если, например, просто мы в Коломне забыли наушники, вы можете... Я вам объясняю, 10 тысяч минимальная ставка. ... Я вот, я просто... Я понимаю. А где клиентированность? Я хочу объяснить вам ситуацию, чтобы понять, вообще вы работаете таким или нет. ... за 10 тысяч, я думаю, вряд ли вы согласитесь заплатить за перевозку 10 тысяч. Я поэтому сразу вам говорю...»

{
  "has_passive_aggression": true,
  "confidence": 0.92,
  "intensity": "сильная",
  "markers": [
    {
      "type": "снисходительный_тон",
      "evidence_quote": "Я вам объясняю, 10 тысяч минимальная ставка.",
      "severity": 4,
      "comment": "Сказано в ответ на уточняющий вопрос клиента, перебивая его на полуслове — «я вам ОБЪЯСНЯЮ» вместо ответа по сути."
    },
    {
      "type": "перебивание_под_видом_уточнения",
      "evidence_quote": "...мы в Коломне забыли наушники, вы можете... Я вам объясняю, 10 тысяч",
      "severity": 4,
      "comment": "Реплика клиента обрывается на полуслове, оператор не даёт ему договорить вопрос — заглушает повтором тарифа."
    },
    {
      "type": "обесценивание_контекста_клиента",
      "evidence_quote": "вряд ли вы согласитесь заплатить за перевозку 10 тысяч. Я поэтому сразу вам говорю",
      "severity": 3,
      "comment": "Клиент пытается объяснить свой кейс (забытые наушники), оператор обрезает: «вы сами не согласитесь» — решает за клиента, чтобы быстрее закрыть разговор."
    },
    {
      "type": "резкое_сворачивание",
      "evidence_quote": "Я поэтому сразу вам говорю, что у нас минимальная ставка... Хорошо, я вас поняла. Спасибо, до свидания.",
      "severity": 3,
      "comment": "Клиент в ответ переходит на сухое «я вас поняла, до свидания» — типичный сигнал, что её отшили."
    }
  ],
  "overall_tone": "снисходительный",
  "client_reaction": "Клиент сухо обрывает: «Хорошо, я вас поняла. Спасибо, до свидания» — классический сигнал, что человек обижен и закрылся.",
  "recommendation": "Дай клиенту договорить вопрос про маленькую посылку, потом спокойно скажи: «Под такой мелкий груз мы не подойдём, можно посмотреть Boxberry / СДЭК».",
  "asr_quality": "хорошее",
  "notes": "Эталонный кейс сильной ПА: 4 маркера одновременно, реакция клиента подтверждает."
}

Кейс 2. Ольга #263 — звонок 128989 (спорный: настойчивость или ПА?)

Файл: data/2026-05-18/transcripts/128989.txt Длительность: 406 сек, LEAD.

Транскрипт (ключевой фрагмент):

«...Это примерно сколько? Ну, я же еще раз говорю, что логист просчитает точнее. ... Вас очень плохо слышно. Я вас вообще отлично слышу. ...»

{
  "has_passive_aggression": true,
  "confidence": 0.7,
  "intensity": "умеренная",
  "markers": [
    {
      "type": "снисходительный_тон",
      "evidence_quote": "Ну, я же еще раз говорю, что логист просчитает точнее.",
      "severity": 3,
      "comment": "«Я ЖЕ ещё раз говорю» — упрёк клиенту, что не понял с первого раза. Можно было повторить факт без «ну я же»."
    },
    {
      "type": "скрытый_сарказм",
      "evidence_quote": "Вас очень плохо слышно. — Я вас вообще отлично слышу.",
      "severity": 3,
      "comment": "На жалобу клиента «вас плохо слышно» оператор отвечает «а я ВАС отлично слышу» — звучит как «проблема в вас, не во мне»."
    },
    {
      "type": "менторские_нотки",
      "evidence_quote": "вы знаете, как определяется объем? Общая длина умножается на общую ширину и на общую высоту.",
      "severity": 2,
      "comment": "Развёрнутая «школьная» инструкция по расчёту объёма с интонацией «вот, запишите» — клиент не просил урок арифметики."
    }
  ],
  "overall_tone": "снисходительный",
  "client_reaction": "Клиент терпит, продолжает разговор, но в финале появляется неуверенное «будет, не будет, но я у него быстро проконтролирую…» — клиент закрылся.",
  "recommendation": "Вместо «я же ещё раз говорю» — «давайте ещё раз вместе: логист считает после уточнения веса». На «плохо слышно» — «подскажите, ваша линия стабильна?»",
  "asr_quality": "среднее",
  "notes": "Долгий звонок 6.5 мин с очень несобранным клиентом. ПА умеренная, не сильная — оператор удержалась от срыва, но менторство и сарказм проскочили."
}

Кейс 3. Ольга #263 — звонок 128981 (нейтрально-настойчивый, контроль)

Файл: data/2026-05-18/transcripts/128981.txt Длительность: 215 сек, LEAD, исходящий.

Транскрипт (ключевой фрагмент):

«...А я не могу еще взвесить... Нет, ну хотя бы на скидку, это будет полтонны, это будет 200 килограмм... Сложите, допустим, вы знаете, как определяется объем? Общая длина умножается на общую ширину...»

{
  "has_passive_aggression": true,
  "confidence": 0.55,
  "intensity": "лёгкая",
  "markers": [
    {
      "type": "менторские_нотки",
      "evidence_quote": "вы знаете, как определяется объем? Общая длина умножается на общую ширину и на общую высоту.",
      "severity": 2,
      "comment": "Несвоевременный «урок арифметики» — клиент не просил инструкцию. Можно было предложить помощь, а не учить."
    }
  ],
  "overall_tone": "нейтральный",
  "client_reaction": "Клиент терпит и в итоге соглашается на перезвон 5-го числа — звонок удержался.",
  "recommendation": "Вместо «вы знаете, как определяется объём?» — «давайте я помогу прикинуть: что у вас самое крупное?»",
  "asr_quality": "хорошее",
  "notes": "Тот же приём «школьного» объяснения, что в кейсе 2. У Ольги это устойчивая привычка — мягкий менторский тон при сложных клиентах."
}

Кейс 4. Ольга #263 — звонок 128996 (нейтрал, контроль false-positive)

Файл: data/2026-05-18/transcripts/128996.txt Длительность: 224 сек, LEAD, исходящий.

{
  "has_passive_aggression": false,
  "confidence": 0.85,
  "intensity": "нет",
  "markers": [],
  "overall_tone": "нейтральный",
  "client_reaction": "",
  "recommendation": "",
  "asr_quality": "хорошее",
  "notes": "Сложный клиент с неопределёнными габаритами (96 упаковок плитки и ламината), оператор спокойно уточняет, без давления. Норма."
}

Кейс 5. Катерина #27 — звонок 128837 (нейтрал)

Файл: data/2026-05-18/transcripts/128837.txt Длительность: 156 сек, LEAD, входящий.

Транскрипт (ключевой фрагмент):

«...Какие размеры? Ещё раз посмотрите, я вас спрашиваю. Там диаметр или размеры, там, какие будут нужны логисты указать?»

{
  "has_passive_aggression": true,
  "confidence": 0.6,
  "intensity": "лёгкая",
  "markers": [
    {
      "type": "снисходительный_тон",
      "evidence_quote": "Ещё раз посмотрите, я вас спрашиваю.",
      "severity": 2,
      "comment": "«Я ВАС спрашиваю» — лёгкий командный нажим, ставит клиента в позицию «отвечайте мне». Можно было «давайте уточним размеры»."
    }
  ],
  "overall_tone": "сухой",
  "client_reaction": "Клиент быстро отвечает и далее идёт по сценарию, реакции на тон не видно.",
  "recommendation": "Вместо «ещё раз посмотрите, я вас спрашиваю» — «можете уточнить, какие именно размеры — диаметр или габариты?»",
  "asr_quality": "среднее",
  "notes": "ASR обрезан в начале (нет приветствия). Один лёгкий маркер, в остальном — деловой ровный тон."
}

Кейс 6. Катерина #27 — звонок 129214 (чистый нейтрал)

Файл: data/2026-05-20/transcripts/129214.txt Длительность: 81 сек, LEAD, исходящий.

{
  "has_passive_aggression": false,
  "confidence": 0.9,
  "intensity": "нет",
  "markers": [],
  "overall_tone": "нейтральный",
  "client_reaction": "",
  "recommendation": "",
  "asr_quality": "хорошее",
  "notes": "Короткий чистый звонок: оператор собрала маршрут, груз, оплату, мессенджер, передала логисту. Ноль ПА."
}

Кейс 7. Катерина #27 — звонок 129132 (нейтрал)

Файл: data/2026-05-19/transcripts/129132.txt Длительность: 88 сек, LEAD, исходящий.

{
  "has_passive_aggression": false,
  "confidence": 0.9,
  "intensity": "нет",
  "markers": [],
  "overall_tone": "нейтральный",
  "client_reaction": "",
  "recommendation": "",
  "asr_quality": "хорошее",
  "notes": "Спокойная отработка стандартной заявки (поддон 200 кг с реф-режимом). Нет ни одного маркера."
}

Кейс 8. Людмила #90 — звонок 129058 (спорный: переспросы или передразнивание?)

Файл: data/2026-05-19/transcripts/129058.txt Длительность: 187 сек, LEAD, входящий.

Транскрипт (ключевой фрагмент):

«...надо привезти в Тюмен. В Тюмен? Как понять в Тюмен? Ланг-крузер, машину вам нужно перевезти, я правильно вас поняла? Ланг-крузер, машину, был сутки, надо привезти в Тюмен. У вас груз это легковой автомобиль, правильно? — Все правильно, мы же по-русски говорим.»

{
  "has_passive_aggression": true,
  "confidence": 0.75,
  "intensity": "умеренная",
  "markers": [
    {
      "type": "передразнивание_клиента",
      "evidence_quote": "В Тюмен? Как понять в Тюмен?",
      "severity": 3,
      "comment": "Повтор слова клиента с риторическим «как понять?» — звучит как насмешка над акцентом/неточной речью клиента. Клиент в ответ обижается: «мы же по-русски говорим»."
    },
    {
      "type": "снисходительный_тон",
      "evidence_quote": "У вас груз это легковой автомобиль, правильно?",
      "severity": 2,
      "comment": "Тройное переспрашивание одного и того же факта (Ланд Крузер → машина → легковой автомобиль) звучит как «вы не умеете описать груз», хотя клиент с первой реплики ясно сказал."
    }
  ],
  "overall_tone": "сухой",
  "client_reaction": "Прямая обратка: «мы же по-русски говорим» — клиент явно почувствовал обиду и одёрнул оператора.",
  "recommendation": "Не переспрашивай как непонятно сказанное — повтори ровно: «В Тюмень, поняла. Lаnd Cruiser автовозом, уточнила».",
  "asr_quality": "среднее",
  "notes": "Эталонный кейс «передразнивания» — клиент дал явную обратную связь, что обиделся. Звонок далее удержался, но осадок есть."
}

Кейс 9. Людмила #90 — звонок 128913 (чистый нейтрал-тёплый)

Файл: data/2026-05-18/transcripts/128913.txt Длительность: 143 сек, LEAD, входящий.

{
  "has_passive_aggression": false,
  "confidence": 0.92,
  "intensity": "нет",
  "markers": [],
  "overall_tone": "нейтральный",
  "client_reaction": "",
  "recommendation": "",
  "asr_quality": "хорошее",
  "notes": "Образцовая отработка: поздоровалась, собрала маршрут/груз/вес/палеты/дату/оплату/мессенджер, обратилась по имени, попрощалась. Ноль ПА."
}

3. Сводка по операторам

Оператор Кейсов С ПА Сильная Умеренная Лёгкая Доминирующие маркеры
Ольга #263 4 3 (75%) 1 1 1 снисходительный_тон, менторские_нотки, перебивание, обесценивание
Катерина #27 3 1 (33%) 0 0 1 снисходительный_тон (мягкий, командный нажим)
Людмила #90 2 1 (50%) 0 1 0 передразнивание, снисходительный_тон через переспрашивание

Кто чаще проявляет ПА: на разметке 9 кейсов лидирует Ольга #263 — 3 из 4 звонков с маркерами, включая один сильный (129809, наушники). Её устойчивый паттерн: при затыке в диалоге переключается на «я вам ОБЪЯСНЯЮ» + менторский «урок» (как считать объём). У Катерины и Людмилы ПА точечная: у Катерины — командные конструкции («я вас спрашиваю»), у Людмилы — переспрашивание с оттенком насмешки.

Самый частый тип маркера (5 из 8 найденных) — снисходительный_тон, обычно через клише «я вам объясняю», «я же сказала», «я вас спрашиваю». Второй по частоте — менторские_нотки (объяснение очевидного как урока).


4. Конкретные рекомендации по операторам

Ольга #263 (5 рекомендаций — есть с чем работать)

  1. Убрать «я вам объясняю» из активного словаря. Замена: «давайте ещё раз вместе посмотрим» или «у нас минималка 10 тысяч — это фиксированная ставка, дешевле не считаем». Факт тот же, ярлык «вы тупите» снят.
  2. Не перебивать клиента, даже если ответ уже знаешь. Дай клиенту договорить про наушники / переезд / нестандартный кейс — потом ответь. Кейс 129809 проиграл именно на этом.
  3. Не давать «уроков арифметики» по объёму груза. Если клиент не знает кубатуру — спроси конкретные ориентиры («это влезает в багажник? в кладовку? сколько коробок?») вместо формулы «длина × ширина × высота».
  4. На «вас плохо слышно» не отвечать «а я вас отлично слышу». Замена: «давайте я перезвоню по WhatsApp, там линия стабильнее».
  5. При отказе по тарифу — давать альтернативу. «Под маленький груз мы не подойдём, попробуйте Boxberry / СДЭК — они таскают мелочь от 500 рублей». Так клиент не уходит с осадком.

Катерина #27 (2 рекомендации)

  1. Заменить командные конструкции на партнёрские. «Я вас спрашиваю» / «ещё раз посмотрите» → «можете уточнить?» / «давайте по порядку». Смысл тот же, оператор не доминирует.
  2. Следить за темпом в начале звонка — иногда первые 5 секунд идут слишком сухо-деловой телеграммой. Если клиент пожилой или растерянный, добавь полсекунды теплоты («подскажу с удовольствием»).

Людмила #90 (2 рекомендации)

  1. Не переспрашивать слова клиента с интонацией «как понять?». Если клиент произнёс «Тюмен» (без мягкого знака) или «Ланг Крузер» — повтори ровно («Поняла, в Тюмень, Land Cruiser»), без риторического удивления. В кейсе 129058 клиент прямо сказал «мы же по-русски говорим» — это явный сигнал, что её обидели.
  2. Не переспрашивать один и тот же факт три раза разными словами. «Land Cruiser» → «машина» → «легковой автомобиль» — клиент чувствует, что его не слышат. Уточняй другие параметры, не повторяй понятое.

5. Финальный чек-лист «как НЕ звучать пассивно-агрессивно» (для шеринга)

Применим к любому КЦ, не только Росперевозки.

Слова-индикаторы — сразу убирать из словаря оператора

Запрещено Заменить на
«Я ВАМ объясняю» «У нас правило такое: …»
«Я же уже сказала» «Повторю на всякий случай: …»
«Ну вы понимаете» / «Вы поймите» «Если коротко — …»
«Вы должны понимать» «Тут важный момент: …»
«Я вас спрашиваю» «Можете уточнить?»
«Я не могу за вас решать» (когда просят совет) «Если я в вашей ситуации — выбрал бы X, потому что Y»
«Ну если уж совсем хотите» «Хорошо, делаем так»
«Я вас отлично слышу» (в ответ на «плохо слышно») «Давайте перезвоню по WhatsApp»
«Заявочку», «звоночек», «номерочек» — после серьёзного вопроса клиента Использовать только в нейтральных служебных моментах

Поведенческие правила

  1. Дай клиенту договорить. Если ответ уже знаешь — потерпи 2 секунды, потом отвечай. Перебивание читается как агрессия даже при вежливых словах.
  2. Не повторяй один факт 3+ раза. Если клиент не понял с двух — поменяй формулировку («10 тысяч → минимальный чек на машину» → «дешевле машину не заказать, тариф фиксированный»).
  3. Не передразнивай слова клиента. Если он назвал что-то непривычно («Тюмен», «Ланг Крузер») — повтори в правильной форме без «как-как?».
  4. Отказывая — давай дорогу. «Мы не делаем X, но обычно с этим идут к Y» снимает осадок.
  5. Не учи арифметике / географии / правилам. Объясняй только то, что нужно для этого звонка, без «школьных» развёрнутых лекций.
  6. На жалобу клиента не возражай «а у меня всё нормально». «Плохо слышно» / «долго ждать» / «сложно понять» — это сигнал к смене канала или темпа, а не повод спорить.
  7. Не сворачивай разговор резко. Перед прощанием — «есть ли ещё вопросы?». Так клиент не остаётся с ощущением «меня отшили».
  8. Следи за уменьшительными в моменте отказа. «Заявочку» нормально в служебной фразе, но «давайте вашу заявочку» сразу после серьёзного возражения клиента звучит покровительственно.

Executive summary

Создан промпт passive_aggression_v1.md — узкий детектор скрытой агрессии в речи оператора КЦ, дополнение к QA v3. Каталог из 15 микро- маркеров (снисходительный_тон, перебивание, передразнивание, тон-сэндвич, скрытый_сарказм, уменьшительные_с_подтекстом и др.), JSON-выход с intensity / severity / цитатами / конкретной рекомендацией. Ручной прогон на 9 разнообразных кейсах (3 оператора × разные сценарии + 1 сильная ПА, 2 спорных, 3 нейтрала) показал: лидер по ПА — Ольга #263 (3/4 звонка, самый частый маркер — «я вам объясняю» + менторские лекции по объёму груза); у Катерины и Людмилы ПА точечная (командные конструкции у К., передразнивание у Л.). Главный системный вывод: самый частый тип маркера — снисходительный_тон через клише «я вам объясняю / я же сказала / я вас спрашиваю»; это и есть точка приложения коучинга. Финальный чек-лист в конце отчёта пригоден для шеринга на любой КЦ.

Файл отчёта: /Users/andrey/Documents/Cursor/Rosperevozki_сделки/call_analytics/passive_aggression_analysis.md