Read in:
Русский

Созвоны превращаются в нити

Коротко. Сводку одного созвона читают один раз и забывают. Перед следующим созвоном мне нужна нить: клиент, с которым я говорил четыре раза с июля, о чём договорились каждый раз и что ещё открыто. Поэтому единица здесь — заметка нити, и в её хронологии по строке на созвон. Страница рисует таймлайн прямо из этих строк, синхронизировать нечего. Агент предлагает, кто говорил, какие были темы и к какой нити относится созвон. Его догадки я проверяю на экране, сделанном для проверки, а не отвечая на вопросы в мессенджере. Мои правки ложатся в отдельную заметку, которая принадлежит странице. Обе страницы — макеты, которые может поставить кто угодно: Дашборд созвонов, с демо на выдуманных данных.

Страница нитей: строка на нить, точка на созвон, в боковой панели — цепочка одной нити

Созвон — это точка, а не документ

Большинство инструментов для созвонов дают страницу на созвон: транскрипт, сводку, может быть задачи. Так видит запись диктофон. Работа устроена иначе. Поставщик, с которым я говорю в октябре, — тот же поставщик, что в сентябре, и октябрьский созвон понятен только рядом с сентябрьским: в сентябре он держал два лота до 1 октября, в октябре я подтвердил поздно и получил один.

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

## Хронология

- [[calls/a9d4e7|2026-09-09]]: Тимур держит два лота
  до 1 октября. Открыто: подтвердить до 1-го.
- [[calls/e3b6c2|2026-10-07]]: Подтвердили поздно, лот наш один.
  Решили: предоплата 30% на этой неделе.

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

Таймлайн — это и есть заметка

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

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

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

Нить, по которой три недели не было созвона, сереет, и до сегодняшнего дня от неё тянется пунктир. Это самое полезное на странице. Без всякого отчёта видно, какие разговоры я забросил. Новая упаковка в демо молчит пятьдесят дней, и страница говорит об этом раньше, чем мне придётся вспомнить.

Агент предлагает, человек проверяет

trip2g не записывает, не расшифровывает и не разбирает созвоны. Транскрипт, разбор и карту тем пишет что-то другое: диктофон, который сохраняет в базу, скрипт или агент с API-ключом. Оба макета эти заметки только читают. Пишут они заметку правок созвона, ключ hidden у нити и заметку человека, когда я добавляю нового.

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

Спикеры — только когда это видно из разговора. Диктофоны называют спикеров по календарю, а календарь часто врёт. У меня часы на записывающей машине стояли в одном часовом поясе, а календарь жил в другом, так что диктофон цеплял событие на час в стороне и уверенно ставил на спикера чужое имя. В демо оставлен один такой созвон, где поставщику досталось имя бухгалтера: метка «Борис Зотов», а первая строка транскрипта — «Тимур, простите, я с подтверждением опоздала». Поэтому агент сопоставляет метку с человеком, только если тот представился, к нему обратились по имени или это явно следующий созвон известной нити. Иначе пишет ? и оставляет мне.

Всё угаданное помечено как догадка. Разбор, написанный без меня, несёт assumed: true. Страница считает такие созвоны «ждущими вашей проверки», пока я не подтвердил четыре вещи: спикеров, категорию, нити и темы.

Страница одного созвона: диктофон подписал поставщика именем бухгалтера; предложение сопоставляет метку с нужным человеком и ждёт проверки

Раньше я отвечал на такие вопросы в чате с агентом: «кто Спикер 2 на созвоне во вторник?» Для одного созвона это работает. Для десяти — нет, и нагрузка ложится не на ту сторону: мне надо вспомнить, какой созвон, открыть транскрипт, набрать имя, которое агент потом сопоставит с заметкой. На экране созвон уже открыт, транскрипт рядом с вопросом, у каждого спикера по две его собственные цитаты, а имя выбирается поиском по людям, которые у меня уже есть. Выбрать быстрее, чем набрать, а новый человек — один клик, который создаёт его заметку.

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

Приоритет и скрытие — мои

Некоторые поля ставит только владелец. priority поднимает нить наверх её группы; hidden: true убирает нить с доски, не удаляя её. Если заметки нитей ведёт агент, в его инструкции стоит написать: priority и hidden оставлять как есть и никогда не добавлять. Кнопка «Скрыть нить» пишет этот один ключ во frontmatter нити и не трогает остальной текст, так что она не может столкнуться с последней правкой агента в хронологии.

Почему правки живут в своей заметке

Страница могла бы писать мои правки прямо в заметку разбора. Она этого не делает: пишет call_edits/<id>.md, по заметке на созвон, и больше ничего.

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

Заметка правок — это договор в её frontmatter: speakers связывает метку с заметкой человека, threads перечисляет выбранные мной нити, topics_wrong — вычеркнутые темы, extra_topics — пропущенные, дальше scores, outcome и verified. Полный список — на странице настроек, а в демо лежит одна такая заметка. То, что пишет разборы, может прочитать её на следующем проходе. Этого читателя вы пишете сами.

Есть и вторая причина. Заметка правок — запись того, что решил человек, отдельно от того, что угадала модель. Когда промпт агента меняется, я могу сравнить его новые догадки со своими старыми ответами. Если бы мои ответы были перемешаны с его выводом, не смог бы.

Страница сохраняет через секунду после последнего изменения и перед записью сверяет хэш заметки, так что правка, сделанная тем временем в Obsidian, не затирается, а запись отклоняется.

Страница нитей на телефоне: таймлайн прокручивается вбок под закреплённой колонкой названий

Что осталось открытым

  • Созвон сам в нить не переезжает. Страница показывает нити, которые уже ссылаются на созвон, и сохраняет выбранные мной нити в заметку правок. Строку хронологии по-прежнему пишет тот, кто ведёт заметки нитей, у меня это агент на следующем проходе. Кнопка, которая сразу дописывает строку, была бы удобной, и она сделала бы страницу вторым автором заметок нитей — ровно тем, от чего защищает отдельная заметка правок.
  • Страница грузит всё. Все разборы, нити и карты тем попадают в HTML. Для нескольких сотен созвонов это нормально, для нескольких тысяч уже нет.
  • Проверка двоичная. «Проверено» говорит, что я посмотрел, но не насколько я уверен. Пока этого хватало.
  • Интерфейс настраивается руками. Любую надпись на странице можно перевести во frontmatter заметки страницы, и русское демо несёт полный список. Он длинный. Общий словарь был бы короче — и был бы ещё одной вещью, которую надо ставить.

Макеты лежат в репозитории в docs/_layouts/calls/, все настройки перечислены на странице Дашборд созвонов. Демо — нити и один созвон — работают на обжарке кофе, которой не существует.