Анализ кастдев интервью с ИИ даёт пользу, когда до саммари вы фиксируете, что считаете: респондента, реплику или повтор одного человека. Дальше нужна единица анализа и правило подсчёта, иначе при подсчёте реплик вместо людей можно ошибочно получить двух клиентов из двух упоминаний одного человека. В этой инструкции есть последовательность от транскрипта до проверки выводов и полный учебный пример: два вымышленных интервью, кодовая книга, размеченные реплики и эталон подсчёта. Сразу оговорюсь: это не клиентский кейс и не запуск модели, а раскрытый вход и ожидаемый результат, по которому можно сверить свою разметку.
Нейросеть здесь уместна как исполнитель по правилам. Она размечает реплики по кодовой книге и возвращает цитаты с идентификаторами и таймкодами. Проверку цитат и знаменателя делает человек или отдельный агентский шаг по формальным правилам. Обязательная ручная вычитка каждой строки не нужна, но правило исключений и недостающие бизнес-факты задаёте вы.
Инструмент выбирайте под задачу. 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 нельзя из-за этого выбрасывать: это единственный контрпример в наборе.
Проверьте выводы и следующий вопрос
Проверка идёт по формальным шагам, а не по общему впечатлению от саммари.
- Цитаты. Каждая цитата в разметке должна целиком совпадать с репликой и её таймкодом. Если модель сократила фразу, поправила пунктуацию или склеила две реплики, строку возвращаем на пересборку.
- Роли. Ни один вопрос интервьюера не должен попасть в счёт клиентских сигналов. Отдельно отметьте наводящие вопросы: они влияют на интерпретацию, но не отменяют сам ответ.
- Знаменатель. Проверьте, что n считается по разным людям, а знаменатель совпадает с числом респондентов в наборе. Повтор одного человека не увеличивает числитель.
- Противоречия. Для каждой гипотезы ищите реплики, которые ей не соответствуют, и сохраняйте все найденные. Если противоречащих реплик в наборе нет, явно отметьте это, не делая вывода о доказанности гипотезы.
- Различение статусов. Наблюдение — это то, что дословно сказано и размечено. Гипотеза — предположение, которое ещё нужно проверить. Вопрос для следующего интервью — что спросить иначе, чтобы проверить гипотезу или снять неопределённость.
Для учебного набора итог такой. Наблюдение: у A есть явный барьер из-за цены, у B диапазона достаточно. Гипотеза для проверки: часть клиентов отказывается от записи, когда цены нет, и им помогает видимый диапазон, а не только точная сумма. Вопрос для следующего интервью: «Что вы посмотрели на сайте перед записью и что вас остановило или не остановило?» — без подсказки про точную цену.
Это не оценка рынка: два человека не показывают долю аудитории. Отсутствие слова «цена» у другого респондента тоже не означает отсутствия потребности. Выводы расширяются только новыми интервью с новыми людьми.
Смежные задачи разбора аудитории и отзывов удобно держать отдельно от кодировки: общий разбор целевой аудитории с нейросетью описан в материале анализ целевой аудитории с помощью нейросети, а работу с отзывами — в статье анализ отзывов нейросетью. Кодировка интервью отличается от них тем, что сохраняет авторство каждой реплики и считает уникальных людей, а не упоминания.
Что проверить в собственной разметке перед тем, как показывать выводы команде: совпадают ли цитаты с транскриптом, не посчитан ли интервьюер клиентом, совпадает ли знаменатель с числом респондентов, искали ли вы контрпримеры к основной гипотезе и сохранены ли все найденные. Если контрпримеров в наборе нет, это отмечается явно, без вывода о доказанности гипотезы. Если хотя бы один пункт не сходится, вывод ещё не готов — независимо от того, насколько убедительно звучит саммари.

