Кастдев с ИИ: как разобрать интервью и проверить цитаты

Как разобрать кастдев-интервью с ИИ: кодовая книга, цитаты с таймкодами и полный учебный пример. Проверяем повторы, вопросы интервьюера и противоречия.

Анализ кастдев интервью с ИИ даёт пользу, когда до саммари вы фиксируете, что считаете: респондента, реплику или повтор одного человека. Дальше нужна единица анализа и правило подсчёта, иначе при подсчёте реплик вместо людей можно ошибочно получить двух клиентов из двух упоминаний одного человека. В этой инструкции есть последовательность от транскрипта до проверки выводов и полный учебный пример: два вымышленных интервью, кодовая книга, размеченные реплики и эталон подсчёта. Сразу оговорюсь: это не клиентский кейс и не запуск модели, а раскрытый вход и ожидаемый результат, по которому можно сверить свою разметку.

Нейросеть здесь уместна как исполнитель по правилам. Она размечает реплики по кодовой книге и возвращает цитаты с идентификаторами и таймкодами. Проверку цитат и знаменателя делает человек или отдельный агентский шаг по формальным правилам. Обязательная ручная вычитка каждой строки не нужна, но правило исключений и недостающие бизнес-факты задаёте вы.

Инструмент выбирайте под задачу. GigaChat, по документации, умеет работать с текстом и анализировать приложенный файл в форматах DOCX, PDF и TXT Работа с документами в ГигаЧат. Для генерации и переработки текста есть отдельная инструкция Генерация текста с помощью ГигаЧат. Условия доступа, лимиты и тарифы смотрите в официальных материалах провайдера: подтверждённой цены в этих источниках нет.

Задайте решение и единицу анализа

Сначала назовите решение, которое должно измениться после интервью. «Узнать аудиторию» — не решение. «Понять, мешает ли отсутствие цены записи в мастерскую и что предлагать в этом месте пути» — решение, под которое можно подобрать коды и вопросы.

Единица анализа зависит от вывода. Если нужен ответ «сколько клиентов столкнулись с барьером», считайте уникальных респондентов, а не реплики. Если нужен ответ «как человек описывает путь к записи», единицей становится фрагмент разговора, но в выводе всё равно указывайте, сколько разных людей он подтверждает.

Зафиксируйте исходную гипотезу до чтения расшифровок. В учебном примере ниже она такая: H1 — до записи клиенту обязательно нужна точная цена. Такая запись нужна, чтобы потом честно отметить поддержку и контрпример, а не подгонять вывод под первое яркое высказывание.

Границы выборки запишите рядом с гипотезой: кто отвечал, сколько людей, как их отбирали, какие сегменты не попали. Два респондента не дают оценки рынка, и это ограничение остаётся в тексте вывода, а не прячется в приложении.

Отделите респондента от реплики технически. У каждого человека — свой ID, у каждой реплики — ID, таймкод и роль говорящего. Вопрос интервьюера — часть разговора, но не клиентский сигнал. Если вопрос наводящий, его формулировку полезно сохранить: она объясняет, почему ответ мог сместиться, и помогает исправить следующий гайд.

Подготовьте транскрипты

Расшифровка нужна такая, чтобы по ней можно было вернуться к звуку и контексту. Сохраняйте роли, ID респондентов, порядок реплик и таймкоды. Обезличьте данные: имена, контакты и названия компаний заменяйте на метки, если они не нужны для вывода.

Не объявляйте имеющийся текст проверенной ASR-расшифровкой. Если запись расшифрована вручную или в сервисе, отметьте способ и версию. Для реальной записи учебные таймкоды не заменяют сверку с исходным аудио: таймкод в таблице — адрес фрагмента, а не доказательство, что там сказано именно это. Перед разметкой выборочно сверьте звук с текстом в местах, где реплика обрывается или содержит цифры.

Транскрипт — чувствительные данные. Если вы отправляете его внешнему сервису, проверьте правила обработки данных у провайдера и внутренние требования к персональным данным. Документация GigaChat описывает анализ прикреплённого файла, но не заменяет вашу оценку того, что допустимо загружать.

Формат входа для разметки удобно свести к таблице: ID реплики, респондент, таймкод, говорящий, текст. Такой формат сам по себе снижает риск потерять авторство реплики при копировании в чат.

Составьте кодовую книгу и запрос к ИИ

Кодовая книга — это не список тем, а определения, по которым два человека или два прохода размечают одинаково. Для каждого кода дайте название, определение и границу: что считается кодом, а что похоже, но не является им.

Рабочий принцип: код ставится только там, где в реплике есть явное основание. Домысливать мотив, цену или опыт нельзя. Если респондент говорит «я посмотрел цену», это ещё не отказ. Если говорит «без цены не записался», это барьер. Разница в одной фразе, но в подсчёте она меняет вывод.

Требуйте от модели точную цитату, ID реплики и таймкод. Цитата должна совпадать с текстом транскрипта целиком, без сокращений и перестановок. Если модель не находит основания, она возвращает пустой список кодов для этой реплики, а не ближайший подходящий.

Сохраняйте контрпримеры. Для гипотезы «нужна точная цена» полезна не только реплика с барьером, но и реплика, где человеку хватило диапазона. Иначе выборка превращается в подтверждение.

Промпт ниже самодостаточен: в нём есть данные, определения, правила и схема выхода. Скопируйте его целиком.

Ты размечаешь транскрипты кастдев-интервью по заданной кодовой книге.
Работай только с текстом, который приведён ниже. Не добавляй внешние знания и не домысливай мотивы.

Задача: для каждой реплики с ролью respondent верни цитату, ID реплики, ID респондента, таймкод и коды из кодовой книги. Реплики интервьюера не размечай клиентскими кодами.

Правила:
1. Код ставится только при явном основании в тексте реплики.
2. Цитата должна дословно совпадать с текстом реплики и включать её целиком.
3. Если основания нет, верни для реплики пустой список кодов.
4. Не объединяй две реплики одного человека в одну цитату.
5. Для каждого кода подсчитай число уникальных респондентов и знаменатель — число разных респондентов в наборе. Повторы одного человека не увеличивают счёт.
6. Для исходной гипотезы отдельно перечисли реплики поддержки и контрпримеры.
7. Вопрос интервьюера не считай наблюдением.

Кодовая книга:
- price_search: явно искал или проверял цену.
- price_barrier: явно отказался от записи из-за неизвестной цены.
- range_sufficient: явно достаточно диапазона.
- schedule_need: явно названо удобное время.

Исходная гипотеза H1: до записи клиенту обязательно нужна точная цена.

Транскрипт I1, респондент A:
A0 | 00:05 | interviewer | Что вы делали перед записью?
A1 | 00:12 | respondent | Я сначала искал цену на сайте.
A2 | 00:26 | respondent | Без цены я не записался. Потом написал в чат.
A3 | 00:43 | respondent | Я ещё раз проверил цену вечером.

Транскрипт I2, респондент B:
B0 | 00:04 | interviewer | Нужна была точная цена до записи?
B1 | 00:14 | respondent | Нет, мне достаточно было диапазона. Записался сразу.
B2 | 00:31 | respondent | Важнее было попасть в субботу.

Формат ответа:
{
  "coded_turns": [
    {"turn": "", "respondent": "", "time": "", "quote": "", "codes": []}
  ],
  "counts": {
    "code_name": {"respondents": [], "n": 0, "denominator": 0}
  },
  "hypothesis_check": {
    "support": [],
    "counterevidence": [],
    "not_evidence": [],
    "conclusion": ""
  }
}

Разберите оба интервью целиком

Ниже — полный учебный вход и полный результат разметки. Все данные вымышлены, это не расшифровка реальной записи и не выполненный прогон модели.

Учебный пример

Входные данные. Решение: понять, мешает ли отсутствие цены записи в мастерскую. Гипотеза H1: до записи клиенту обязательно нужна точная цена. Респондентов двое, поэтому знаменатель в подсчёте — 2.

ID реплики Респондент Таймкод Говорящий Текст
A0 A 00:05 интервьюер Что вы делали перед записью?
A1 A 00:12 респондент Я сначала искал цену на сайте.
A2 A 00:26 респондент Без цены я не записался. Потом написал в чат.
A3 A 00:43 респондент Я ещё раз проверил цену вечером.
B0 B 00:04 интервьюер Нужна была точная цена до записи?
B1 B 00:14 респондент Нет, мне достаточно было диапазона. Записался сразу.
B2 B 00:31 респондент Важнее было попасть в субботу.

Кодовая книга: price_search — явно искал или проверял цену; price_barrier — явно отказался от записи из-за неизвестной цены; range_sufficient — явно достаточно диапазона; schedule_need — явно названо удобное время.

Результат разметки. Размечены все пять реплик респондентов. Реплики интервьюера A0 и B0 в клиентский сигнал не входят.

Реплика Респондент Таймкод Цитата Коды
A1 A 00:12 Я сначала искал цену на сайте. price_search
A2 A 00:26 Без цены я не записался. Потом написал в чат. price_barrier
A3 A 00:43 Я ещё раз проверил цену вечером. price_search
B1 B 00:14 Нет, мне достаточно было диапазона. Записался сразу. range_sufficient
B2 B 00:31 Важнее было попасть в субботу. schedule_need

Подсчёт по уникальным респондентам:

Код Респонденты n Знаменатель
price_search A 1 2
price_barrier A 1 2
range_sufficient B 1 2
schedule_need B 1 2

Эталон подсчёта: price_search встречается у A дважды — в A1 и A3. Это один респондент, поэтому n = 1, а не 2 и не 3. Ошибка возникает, если считать строки таблицы, а не людей.

Проверка гипотезы. Поддержка — A2: человек прямо говорит, что без цены не записался. Контрпример — B1: диапазона достаточно, запись произошла сразу. A0 и B0 — вопросы интервьюера, они не подтверждают и не опровергают гипотезу. Вывод: обязательность точной цены для всех не поддержана, B1 — контрпример, а потребность A нужно проверять отдельно на других респондентах.

Обратите внимание на B0: вопрос подсказывает ответ «точная цена». Формулировку стоит сохранить как замечание к гайду, но ответ B1 нельзя из-за этого выбрасывать: это единственный контрпример в наборе.

Проверьте выводы и следующий вопрос

Проверка идёт по формальным шагам, а не по общему впечатлению от саммари.

  1. Цитаты. Каждая цитата в разметке должна целиком совпадать с репликой и её таймкодом. Если модель сократила фразу, поправила пунктуацию или склеила две реплики, строку возвращаем на пересборку.
  2. Роли. Ни один вопрос интервьюера не должен попасть в счёт клиентских сигналов. Отдельно отметьте наводящие вопросы: они влияют на интерпретацию, но не отменяют сам ответ.
  3. Знаменатель. Проверьте, что n считается по разным людям, а знаменатель совпадает с числом респондентов в наборе. Повтор одного человека не увеличивает числитель.
  4. Противоречия. Для каждой гипотезы ищите реплики, которые ей не соответствуют, и сохраняйте все найденные. Если противоречащих реплик в наборе нет, явно отметьте это, не делая вывода о доказанности гипотезы.
  5. Различение статусов. Наблюдение — это то, что дословно сказано и размечено. Гипотеза — предположение, которое ещё нужно проверить. Вопрос для следующего интервью — что спросить иначе, чтобы проверить гипотезу или снять неопределённость.

Для учебного набора итог такой. Наблюдение: у A есть явный барьер из-за цены, у B диапазона достаточно. Гипотеза для проверки: часть клиентов отказывается от записи, когда цены нет, и им помогает видимый диапазон, а не только точная сумма. Вопрос для следующего интервью: «Что вы посмотрели на сайте перед записью и что вас остановило или не остановило?» — без подсказки про точную цену.

Это не оценка рынка: два человека не показывают долю аудитории. Отсутствие слова «цена» у другого респондента тоже не означает отсутствия потребности. Выводы расширяются только новыми интервью с новыми людьми.

Смежные задачи разбора аудитории и отзывов удобно держать отдельно от кодировки: общий разбор целевой аудитории с нейросетью описан в материале анализ целевой аудитории с помощью нейросети, а работу с отзывами — в статье анализ отзывов нейросетью. Кодировка интервью отличается от них тем, что сохраняет авторство каждой реплики и считает уникальных людей, а не упоминания.

Что проверить в собственной разметке перед тем, как показывать выводы команде: совпадают ли цитаты с транскриптом, не посчитан ли интервьюер клиентом, совпадает ли знаменатель с числом респондентов, искали ли вы контрпримеры к основной гипотезе и сохранены ли все найденные. Если контрпримеров в наборе нет, это отмечается явно, без вывода о доказанности гипотезы. Если хотя бы один пункт не сходится, вывод ещё не готов — независимо от того, насколько убедительно звучит саммари.

Валерий Курземнек

Автор метода «Машиночитаемый маркетинг»

Что ещё почитать