# База болей

# Как это сделано

## Предпосылки и подход

За несколько лет по Элли накопилось много исследований, пользовательских болей и наблюдений, но инфа была распределена по разным местам: отдельным документам, Figma/Miro, записям исследований, Яндекс Трекеру и другим артефактам.

Поэтому мы начали собирать все боли в отдельную очередь в Трекере [https://tracker.yandex.ru/PMALLY](https://tracker.yandex.ru/PMALLY)

Одна таска в этой очереди = одна пользовательская боль с цитатами, ссылкой на исследования, сырые данные, расшифровки и т.д. Если есть несколько источников в разное время, но проблематика одна — всё агрегируется в одной карточке боли.

При проведении исследований приходилось расшифровывать боли и вручную заводить их в Трекер. Но теперь все боли автоматом создаются на сервере при расшифровке, а затем улетают в Трекер.

Таким образом, все набранные ранее боли перенесены из Трекера на сервер, а все новые боли изначально создаются на сервере и отправляются в Трекер, чтобы обе базы были актуальны.

С болями на сервере можно работать через агента. Боли в трекере привязываются как Эпик к произволственным тикетам в Трекере.

## Что находится внутри

### 1. Исследования

Каждое исследование хранится отдельным `.md`-файлом в:

`docs/ux/researches/`

В карточке исследования могут быть:

- контекст и потребность;
- цели;
- дизайн исследования;
- метод;
- гипотезы;
- респонденты;
- результаты и находки;
- исходные материалы;
- артефакты результата;
- принятые решения;
- следующие действия;
- связанные исследования;
- роли и другие сущности базы.

Дополнительно фиксируются метаданные: период, тип исследования, платформы, роли, подразделения, типы торговых точек и другие параметры, если они известны.

### 2. Боли

Пользовательские боли вынесены из исследований в отдельные карточки:

`docs/ux/pains/`

Каждая пользовательская боль хранится отдельной карточкой. Мы стараемся фиксировать не только саму формулировку проблемы, но и контекст, силу подтверждения и связь с продуктовыми изменениями.

По каждой боли собираем:

- **ID и ссылку на Яндекс Трекер** — чтобы связать Markdown-карточку с рабочей карточкой боли в Трекере. Внутренний числовой ID совпадает с номером `PMALLY`-задачи.
- **Категорию** — собственно боль, идея или наблюдение. Это помогает не смешивать пользовательскую проблему с предложенным решением или просто зафиксированным фактом поведения.
- **Статус боли** — открыта, в работе, на проверке, решена или больше не актуальна. Статус относится именно к пользовательской проблеме, а не к связанной продуктовой задаче.
- **Дату последнего обновления** — чтобы понимать свежесть информации.
- **Контекст возникновения**: для каких ролей проблема подтверждена, для каких типов торговых точек, на какой платформе и в какой продуктовой области она возникает. Боль не распространяется автоматически на другие роли или платформы только потому, что сценарии похожи.
- **Темы** — например, «Графики», «Расхождения», «Окна», «Прогноз». Они нужны для группировки и поиска проблем по предметным областям.
- **Частоту / распространённость** — насколько часто проблема встречается у конкретной роли или когорты, если это вообще удалось определить.
- **Эмоциональность** — насколько сильно пользователи переживают или эмоционально реагируют на проблему, если такие данные есть. Частота и эмоциональность хранятся отдельно: редкая проблема может быть очень болезненной, а частая — восприниматься спокойно. Структура этих полей заложена непосредственно в шаблон карточки боли.
- **Описание боли** — сама проблема пользователя, без подмены её предполагаемым решением.
- **Цитату пользователя**, если сохранилось первичное свидетельство.
- **Подтверждение** — что именно позволяет считать проблему существующей: например, сколько участников исследования её отметили, была ли она найдена в одном или нескольких исследованиях, есть ли количественные данные. Наличие нескольких источников усиливает подтверждение, но само по себе ещё не означает известную распространённость проблемы.
- **Источники** — откуда вообще появилась боль: исследование, интервью, личное сообщение, стратегическая сессия, наблюдение и т. д. Для источника по возможности сохраняем исследование, дату, респондента, ссылку на расшифровку или запись и таймкод.
- **Связанные продуктовые задачи** — что уже делалось или планируется сделать в продукте в ответ на проблему. При этом закрытая задача не означает автоматически, что сама боль решена: решение могло закрыть её только частично или у одной боли может быть несколько связанных задач.

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

Таким образом, карточка боли отвечает не только на вопрос **«что неудобно?»**, но и на более важные:

**У кого возникает проблема? В каком контексте? Чем она подтверждена? Насколько она распространена? Откуда мы это знаем? Что с ней уже делали?**


Да — кроме `pains` и `researches` у вас база уже содержит ещё три смысловых слоя и один служебный файл. Я бы описала это в статье так:

### 3. Подразделения

Сейчас в базе есть:

- Розница;
- Последняя миля;
- Горячая линия;
- Бэкофис.

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

###  4. Роли пользователей

Каждая карточка роли описывает тип пользователя Элли и его реальный рабочий контекст.

В карточке роли могут храниться:

- ID роли внутри базы;
- системный код роли в Элли;
- тип роли — менеджерская или линейная;
- альтернативные названия и сокращения;
- подразделение;
- применимые типы торговых точек;
- используемые платформы;
- количество пользователей;
- права в Элли;
- описание рабочего контекста.

Это позволяет анализировать исследования не абстрактно «по сотрудникам», а понимать, **кто именно сталкивается с конкретной проблемой и какие возможности у него есть в системе**.

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

Есть и специальные агрегирующие роли — например, `Сотрудник` для линейных сотрудников торговых точек в целом. Она используется, когда знание относится сразу к широкой группе и перечислять все конкретные роли отдельно не имеет смысла.

---

### 5. Типы торговых точек

Это важно, потому что одна и та же роль или процесс может работать по-разному в разных форматах ТТ. Например, боль может быть подтверждена только для даркстора, только для вайтстора или сразу для обоих. Также здесь хранятся разные варианты названий. Например, `Вайт`, `Вайт стор`, `white store`, `whitestore` и `ВС` могут быть сопоставлены с одной сущностью `Вайтстор`. Это особенно полезно для старых исследований, где терминология была не унифицирована.

---

### 6. Правила работы с базой `AGENTS.md` 

По сути, это инструкция для AI-агентов: словарь + модель данных + правила интерпретации.

В ней описано:

- какие сущности есть в базе;
- как они связаны;
- что означают роли, подразделения, типы ТТ, платформы и боли;
- какие значения считаются допустимыми;
- как интерпретировать wikilinks;
- какие данные нельзя автоматически переносить между ролями, платформами или подразделениями;
- как отличать боль от идеи, наблюдения и продуктовой задачи;
- как работать с историческими исследованиями;
- как трактовать неполные или неизвестные данные.

## Связи в базе

Все сущности хранятся обычными Markdown-файлами.

При этом они связаны между собой через wikilinks — ссылки вида:

`[[roles/starshiy-prodavetc|Старший продавец]]`

или:

`[[pains/103|Боль 103]]`

Поэтому в совокупности получается не просто набор документов, а **граф знаний**.

Исследование может ссылаться на роль и боль, боль — на исследование и пользователя, а обратные ссылки позволяют посмотреть на эту же связь с другой стороны.

Например:

`Исследование → нашло боль → боль относится к Старшему → подтверждается ещё двумя исследованиями`

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

Итого структура сейчас такая:

```
docs/ux/
├── divisions/    — подразделения и операционный контекст
├── pains/        — отдельные пользовательские боли
├── researches/   — исследования и их результаты
├── roles/        — роли пользователей, права и рабочий контекст
├── shop-types/   — типы торговых точек
└── AGENTS.md     — правила понимания и обработки всей базы
```

## Чем это полезно

**Главный эффект базы — переход от архива исследований к накопительной системе знаний.**

Раньше исследование в основном отвечало на вопрос:

> Что мы узнали в этом конкретном проекте?

Теперь можно задавать вопросы уровнем выше.

Например:

> Какие боли Старших повторяются в разных исследованиях?

> Какие проблемы подтверждены несколькими независимыми источниками?

> Что мы уже знаем про работу с расхождениями?

> Какие боли Окон возможностей остаются нерешёнными?

> Есть ли исследования, которые противоречат друг другу?

> Какие роли исследованы хорошо, а про какие у нас почти нет данных?

> Какие проблемы встречаются и в мобильном приложении, и в вебе?

> Что мы уже знаем по теме, прежде чем запускать новое исследование?

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

**Для продуктовой команды** позволяет пройти от конкретной боли назад к доказательствам и понять, насколько хорошо она подтверждена.

**Для новых участников команды** становится картой уже накопленного знания об Элли.

**Для AI-агентов** Markdown и явные связи позволяют работать сразу со всем массивом знаний: искать паттерны, сопоставлять исследования, находить противоречия, собирать срезы по ролям или темам и при этом возвращаться к конкретным источникам.

По сути мы сохраняем исследования не только как историю проведённой работы, а превращаем их в **переиспользуемую память продуктовой и исследовательской команды**.

# Подключение агента к базе исследований

База представляет собой обычную папку с Markdown-файлами на сервере Элли.

Вы разово настраиваете обращение агента к базе и затем можете работать с актуальным списком болей.

## Первое подключение к базе

Перед началом работы нужны:

- активное подключение к VPN ВкусВилл [(см. п. 6.1. инструкции)](https://bookstack.ally.software/books/onbording-sotrudnika/page/dostupy)
- Доступ к репозиторию Элли [(см. п. 3 инструкции)](https://bookstack.ally.software/books/onbording-sotrudnika/page/dostupy)
- установленный AI-агент: Cursor, Claude Code, Codex, Gemini CLI и пр. на ваше усмотрение

С базой можно работать двумя способами — зависит от того, как настроен ваш AI-агент.

#### Вариант 1. Агент умеет работать с репозиторием напрямую

Если среда уже подключена к Git или умеет открывать репозиторий по ссылке, достаточно перейти к папке:

```
docs/ux
```

#### Вариант 2. Агент работает с локальными файлами

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

Самый распространённый способ — склонировать репозиторий через Git. После этого на компьютере появится обычная папка проекта, внутри которой будет нужная:

```
docs\ux
```

Дальше агенту нужно дать доступ к этой локальной папке

```
File → Open Folder
```

#### Что в итоге получает агент

В обоих случаях результат одинаковый:

агент видит файлы репозитория  
↓  
видит docs/ux  
↓  
читает AGENTS.md  
↓  
может работать с исследованиями, болями, ролями и остальной базой

## Работа с болями — только на чтение

Важно: папка с болями — это источник данных, а не рабочая зона для агента.

AI-агенту нужно настроить работу с `docs/ux/pains` в режиме **только чтения**.

Он может:

- искать боли;
- читать карточки;
- сопоставлять их между собой;
- анализировать источники и подтверждения;
- использовать их как контекст для ответа.

Но агент **не должен**:

- создавать новые файлы в `pains`;
- редактировать существующие боли;
- удалять карточки;
- менять статусы, формулировки, связи или источники;
- «дополнять» базу своими выводами;
- автоматически заводить новые боли на основании анализа.

Все изменения в базе болей должны проходить через штатный процесс и источник данных, а не появляться как побочный результат работы AI.

Для дополнительной защиты это правило лучше зафиксировать и в настройках/permissions агента, и в `AGENTS.md`.

Например:

<div id="bkmrk-"></div>```
## Работа с болями

Папка `docs/ux/pains/` доступна только для чтения.

Разрешено:
- читать файлы;
- искать по ним;
- использовать данные для анализа.

Запрещено:
- создавать новые файлы;
- редактировать существующие;
- удалять файлы;
- менять статусы, формулировки, связи и источники;
- записывать в базу собственные выводы агента.

Если задача пользователя предполагает изменение боли, не вноси изменение самостоятельно — сообщи, что для этого нужен отдельный рабочий процесс.
```

# База промтов

Все промты ниже предполагают работу с UX-базой в `docs/ux`.

Для папки `docs/ux/pains` действует режим **только чтение**: агент может искать, читать и анализировать карточки, но не должен создавать, редактировать или удалять боли.

Если хочется дополнительно застраховаться, к любому запросу можно добавлять:

```
Работай с docs/ux/pains только на чтение.
Ничего в базе болей не создавай, не редактируй и не удаляй.
Не додумывай отсутствующие данные.
Для выводов показывай, на каких исследованиях и болях они основаны.
```

<div id="bkmrk-"></div>## Быстро разобраться в базе

### Что вообще есть

```
Изучи docs/ux и объясни, какие знания уже накоплены в базе.

Покажи:
— основные темы исследований;
— основные группы пользователей;
— наиболее часто встречающиеся продуктовые области;
— какие типы исследований представлены;
— какие крупные группы болей можно выделить.

Не пересказывай каждый файл отдельно — дай карту базы.
```

### Краткий онбординг нового человека

```
Представь, что я впервые работаю с Элли.

По материалам docs/ux подготовь мне 10-минутный онбординг:
— кто основные пользователи;
— в каких контекстах они работают;
— какие ключевые сценарии исследовались;
— какие пользовательские проблемы уже известны;
— какие термины мне обязательно понимать.

Все утверждения основывай только на базе.
```

### Что команда уже знает

```
Собери краткое резюме того, что исследовательская команда уже знает о пользовательском опыте Элли.

Не перечисляй исследования по очереди.
Синтезируй знания поперёк исследований.
```

<div id="bkmrk--1"></div># Поиск информации по теме

### Что уже знаем по теме

```
Найди всё, что база знает про [ТЕМА].

Собери:
— связанные исследования;
— связанные боли;
— роли;
— платформы;
— типы торговых точек;
— основные выводы;
— открытые вопросы.

Отдельно отметь, что подтверждено хорошо, а где данных мало.
```

### Все боли по теме

```
Найди все боли, связанные с [ТЕМА].

Для каждой покажи:
— ID;
— краткую формулировку;
— роль;
— платформу;
— тип ТТ;
— подтверждение;
— источник;
— текущий статус.

Не объединяй разные боли только потому, что у них похожие формулировки.
```

### Всё про конкретный сценарий

```
Что мы уже знаем про сценарий [СЦЕНАРИЙ]?

Найди связанные исследования, боли, роли и наблюдения.

Опиши сценарий глазами пользователя:
— задача;
— контекст;
— основные шаги;
— затруднения;
— известные потребности;
— связанные продуктовые изменения.
```

### Поиск конкретного знания

```
Проверь, есть ли в базе подтверждение утверждения:

"[УТВЕРЖДЕНИЕ]"

Найди аргументы за и против.
Если данных недостаточно — так и скажи.
Не интерпретируй отсутствие данных как опровержение.
```

# Работа с болями

### Самые подтверждённые проблемы

```
Найди боли, которые подтверждаются несколькими независимыми источниками или исследованиями.

Для каждой покажи:
— сколько разных источников её подтверждают;
— какие это источники;
— насколько разнообразны роли и контексты;
— есть ли количественное подтверждение.

Не делай вывод о распространённости только по числу файлов.
```

### Слабые боли

```
Найди боли, у которых самая слабая доказательная база.

Например:
— единственный источник;
— единичная цитата;
— нет исследования;
— неизвестна выборка;
— давно не обновлялись;
— нет подтверждения распространённости.

Объясни, чего именно не хватает для более уверенного вывода.
```

### Старые открытые боли

```
Найди самые давно не обновлявшиеся боли со статусом open или in-progress.

Не делай вывод, что они неактуальны.
Покажи, какие из них стоит перепроверить на актуальность и почему.
```

### Похожие боли

```
Найди пары или группы болей, которые потенциально описывают одну и ту же пользовательскую проблему разными словами.

Для каждой группы сравни:
— пользователя;
— контекст;
— причину;
— проявление;
— источники.

Не объединяй их автоматически.
Покажи только кандидатов на ручную проверку.
```

### Боль целиком

```
Разбери боль [ID].

Покажи:
— что именно является проблемой;
— у кого она возникает;
— в каком контексте;
— чем подтверждается;
— что неизвестно;
— какие решения уже предпринимались;
— связанные исследования;
— возможные риски неправильной интерпретации.
```

### Проверить распространённость

```
Что база позволяет сказать о распространённости проблемы [БОЛЬ/ТЕМА]?

Отдельно покажи:
— качественные свидетельства;
— количество участников, если известно;
— количественные данные;
— ограничения выборки.

Не превращай количество упоминаний в процент пользователей.
```

###  

### Старые и новые данные

```
Сравни более старые и более новые исследования по теме [ТЕМА].

Что изменилось со временем?
Какие старые проблемы сохраняются?
Какие исчезли?
Какие появились позже?

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

# Роли, подразделения и типы ТТ

### Всё про роль

```
Собери UX-профиль роли [РОЛЬ].

Используй roles, pains и researches.

Покажи:
— рабочий контекст;
— платформы;
— права и ограничения;
— основные сценарии;
— ключевые боли;
— связанные исследования;
— темы, по которым знаний мало.
```

### Сравнить две роли

```
Сравни пользовательский опыт ролей [РОЛЬ 1] и [РОЛЬ 2].

Покажи:
— общие сценарии;
— различия;
— общие боли;
— боли, характерные только для одной роли;
— различия в правах и контексте;
— где данных недостаточно.

Не переноси результаты одной роли на другую.
```

### Что характерно именно для роли

```
Какие проблемы подтверждены именно для роли [РОЛЬ], а не для пользователей Элли вообще?

Исключи боли, где связь с этой ролью только предполагается.
```

### Срез по подразделению

```
Собери срез пользовательских проблем для подразделения [ПОДРАЗДЕЛЕНИЕ].

Раздели результат по ролям.
Не распространяй боль одной роли на всё подразделение.
```

### Вайтстор против даркстора

```
Сравни подтверждённые боли Вайтсторов и Дарксторов.

Раздели:
— общие проблемы;
— специфичные для Вайтстора;
— специфичные для Даркстора;
— проблемы, где тип ТТ неизвестен.

Не переносись с одного типа ТТ на другой без явных данных.
```

### Специфика конкретного контекста

```
Какие пользовательские проблемы появляются только в контексте [ТИП ТТ / ПОДРАЗДЕЛЕНИЕ]?

Покажи доказательства специфичности этого контекста.
```

---

# Web и mobile

### Сравнение платформ

```
Сравни боли пользователей web и mobile.

Покажи:
— проблемы, подтверждённые на обеих платформах;
— только web;
— только mobile;
— случаи, где платформа не определена.

Не считай наличие похожей функции доказательством одинаковой боли.
```

### Один сценарий на разных платформах

```
Сравни пользовательский опыт сценария [СЦЕНАРИЙ] в web и mobile.

Покажи только подтверждённые различия.
Если по одной платформе нет данных — отметь пробел.
```

# Работа над продуктовой задачей

### Контекст перед проектированием

```
Мы собираемся менять [ФУНКЦИЮ / СЦЕНАРИЙ].

Собери для продуктовой команды существующий UX-контекст:
— роли;
— боли;
— предыдущие исследования;
— известные ограничения;
— предыдущие попытки решения;
— риски, которые уже обнаруживались.
```

### Какие боли затрагивает фича

```
По описанию продуктовой задачи:

[ОПИСАНИЕ]

найди существующие боли, которые она потенциально затрагивает.

Не создавай новые связи в базе.
Покажи кандидатов и объясни, почему они могут быть связаны.
```

### Проверить решение против известных болей

```
Вот предлагаемое решение:

[ОПИСАНИЕ]

Сравни его с накопленными исследованиями.

Покажи:
— какие боли оно потенциально закрывает;
— какие не затрагивает;
— какие известные пользовательские риски может создать;
— какие утверждения требуют проверки с пользователями.
```

### Какие пользователи могут пострадать

```
Для изменения [ОПИСАНИЕ] найди роли и сценарии, на которые оно потенциально может повлиять по данным базы.

Не придумывай технические зависимости.
Используй только связи пользовательского контекста.
```

# Подготовка материалов

### Подготовка к встрече

```
Мне предстоит встреча по теме [ТЕМА].

Собери шпаргалку на одну страницу:
— что мы точно знаем;
— где есть спорные моменты;
— какие боли связаны;
— какие решения уже предпринимались;
— какие вопросы стоит задать команде.
```

### Ответ на вопрос 

```
Коллега спрашивает:

"[ВОПРОС]"

Подготовь ответ исключительно на основании UX-базы.

Сначала дай краткий ответ.
Затем покажи исследования и боли, на которых он основан.
Отдельно обозначь ограничения данных.
```

<div id="bkmrk--3"></div><div id="bkmrk--4"></div>