Я не собиралась делать SyvStudio.
Мне нужна была админка.
Syverro строится на данных, данные нужно было как-то редактировать, поэтому почти сразу появилась небольшая внутренняя страница: имя автора, даты жизни, короткая биография, список книг. Обычный служебный интерфейс, который существует не потому, что кто-то мечтал его создать, а потому что без него всё остальное перестаёт работать.
В моём представлении он должен был выглядеть примерно как настройки страницы ВКонтакте времён Дурова: разделы, редактируемые блоки, ничего особенно интересного.
Проблема была в том, что литература довольно быстро отказалась помещаться в форму.
SyvStudio — внутренний редакционный интерфейс Syverro для работы со структурированными данными об авторах, произведениях и связанных литературных сущностях. Studio объединяет редактирование данных, источники, редакционные предложения и модерацию, а постепенно вокруг неё формируется AI-слой для автоматизации работы с данными.
Одного автора нельзя заключить в три строки и объявить заполненным
Сначала оказалось, что данных об авторе нужно гораздо больше.
Имя и имя на родном языке — разные данные. Страна происхождения и страна проживания — тоже. Псевдоним не равен настоящему имени. Даты могут иметь разную точность. Биография, библиография, события жизни, связи с другими людьми требуют разных способов представления.
Потом появилась ещё одна принципиальная граница.
Библиография автора и книги автора в Syverro — не одно и то же.
Syverro концептуально не задуман как база всей существующей литературы. Если книгой не заинтересовался живой человек, если её никто не читает, не бросил, не добавил в список на будущее, ей вообще незачем существовать в пользовательском каталоге.
У Брэдбери могут быть десятки произведений. Это не означает, что Syverro должен создать десятки пользовательских карточек только ради библиографической полноты.
Так одна форма начала распадаться на сущности, разделы и связи.
И это было только начало.
Первая Studio была формуляром. Формуляры никто не любит
Если бы данные продолжили редактироваться в первой версии Studio, её в итоге просто никто не стал бы заполнять.
Включая меня.
Особенно меня.
Она была похожа на бюрократический формуляр: длинная последовательность полей, которая предполагала, что человек уже знает структуру базы, понимает, куда что положить, аккуратно заполнит всё необходимое и желательно нигде не ошибётся.
А ещё форма могла вылететь из-за ошибки.
Прекрасный интерфейс, если цель продукта — воспитать в редакторе смирение.
Проблема была не только в UX. Сама форма начала врать о структуре данных.
Когда интерфейс представляет автора как длинный набор полей, очень легко начать складывать туда всё, что с ним связано. Жанры. Темы. Мотивы. Литературные направления. Концепты.
Но «связано с автором» не означает «принадлежит автору».
Большая часть этих данных принадлежит произведениям.
И это различие оказалось для Syverro фундаментальным.
Структура интерфейса должна работать на структуру данных, а не наоборот
Мне хотелось иметь одну прекрасную карточку автора, из которой можно управлять абсолютно всем.
Я от этой идеи отказалась.
Не потому, что технически невозможно сделать страницу длиной с небольшой российский закон. Можно. Человечество регулярно демонстрирует выдающиеся способности в создании интерфейсов, в которых есть всё и пользоваться нельзя ничем.
Причина была в модели данных.
Жанр принадлежит произведению. Тема возникает у произведения. Мотив тоже. Концепт, атмосфера и множество других характеристик существуют не потому, что однажды были вписаны редактором в профиль писателя.
Автор связан с ними через свои произведения.
Это особенно важно для Syverro, потому что его база принципиально неполна.
Если пользователи Syverro читали только половину библиографии автора, аналитический портрет этого автора внутри системы может отличаться от литературоведческого портрета автора вообще.
И это нормально.
В каком-то смысле Syverro становится не литературным журналом и не энциклопедией, а зеркалом фактического человеческого чтения.
Публичный Syverro в итоге должен складываться из двух слоёв:
структуры и аналитики самой базы + фактического пользовательского опыта.
Studio нужна для первого.
Именно поэтому попытка собрать всё в одной редакторской карточке постепенно уступила место системе связанных сущностей.
Именно поэтому для дальнейшего исследования мне в итоге оказался интереснее граф.
Не потому, что графы выглядят технологично. Хотя выглядят, куда деваться.
Просто связи лучше описывают эту систему, чем очередная страница с сорока семью полями.
А потом выяснилось, что всё это кто-то должен заполнять
Вот здесь архитектурная проблема встретилась с гораздо менее возвышенной реальностью.
Я соло-разработчица. И редакции у Syverro нет.
Мне эта проблема была знакома ещё до Syverro: я бывшая закупщица и несколько лет заполняла карточки сотнями. Я прекрасно знаю, сколько времени может сожрать деятельность, которая выглядит как «ну там просто данные внести».
Поэтому вопрос возник почти сразу.
Допустим, я построю правильную структуру.
Кто будет её заполнять?
Можно нанять редакторов.
Денег на редакторов нет.
Можно заполнить самой.
Тогда вместо разработки Syverro я буду работать редактором Syverro.
Система получилась довольно честная: выбирай, каким именно способом проиграть.
Ручное заполнение прекрасно масштабируется до момента, когда заканчивается человек
Если бы всё это время я просто вносила книги и авторов вручную, сегодня у Syverro, вероятно, уже была бы база из нескольких сотен довольно прилично заполненных карточек.
Это не аргумент против автоматизации.
Наоборот.
Несколько сотен карточек — как раз тот масштаб, на котором ручной подход ещё создаёт иллюзию решения.
После книг и авторов начинаются произведения, библиографии, события, направления, жанры, темы, мотивы, концепты, источники и отношения между сущностями.
И тогда я перестаю проектировать структуру данных.
Я начинаю писать разрозненные статьи и вручную поддерживать между ними сотни связей.
Получается маленькая Википедия, которую обслуживает один очень уставший человек.
А я вообще не собиралась строить вторую Википедию.
Я пыталась получить материал для анализа.
Поэтому время, которое сейчас уходит на автоматизацию, для меня имеет смысл только как инвестиция: система должна в будущем вернуть больше времени, чем потребовала при создании.
Иначе я просто изобрела особенно сложный способ заполнить форму.
«Пусть AI просто заполнит карточку»
В этот момент в Studio появился AI-слой.
Первоначальная идея была почти оскорбительно простой.
AI умеет искать информацию.
AI умеет работать со структурированными данными.
Значит:
нажимаю «Заполнить» → получаю заполненную карточку.
Я считала это достаточно тривиальной задачей.
И, если её декомпозировать, во многом считаю до сих пор.
Проблема находится в неприятном промежутке между «нашёл» и «записал».
Как понять, что найденному можно доверять?
Для меня проблема AI никогда не сводилась к тому, что машина ошибается.
Люди тоже ошибаются.
При поточном ручном заполнении базы человек вполне способен перепутать поле, неверно интерпретировать источник, перенести не то значение или просто устать. Каждая карточка Syverro в каком-то смысле является конспектом, а качество человеческих конспектов, как выяснилось несколько тысяч лет назад, тоже не гарантируется природой.
От машины мне не нужна истина в последней инстанции.
Мне нужна предсказуемая частота ошибок.
Если человеческое заполнение даёт условные 1–3% ошибок, я хочу привести автоматизированную систему примерно к тому же диапазону, понимать происхождение данных и иметь механизм обнаружения отклонений.
И вот здесь задача «AI просто заполнит форму» перестала быть задачей заполнения формы.
Появились источники.
Предложения изменений.
Проверка.
Конфликты с существующими данными.
Модерация.
Отдельное применение подтверждённых изменений.
Studio пришлось перестроить ещё раз.
Лучше пустое поле, чем уверенная ложь
Это стало одним из самых важных правил.
В одной из ранних попыток карточка автора могла остаться почти пустой, зато вокруг неё появлялась свалка сомнительных связей. Система вроде бы работала: что-то находила, что-то сохраняла, что-то связывала.
Пользы от этого было немного.
Если Syverro не знает родной язык Брэдбери, пользователь может открыть другой источник.
Если Syverro уверенно сообщает, что родной язык Брэдбери русский, пользователь получает ложь, оформленную как факт.
Второе хуже.
Поэтому нынешняя редакционная логика консервативна не из любви к бюрократии.
Это временная цена недоверия.
AI может предложить данные. Источник должен быть виден. Существующее значение может вступить с новым в конфликт. Человек пока остаётся последней прослойкой между предложением и канонической записью.
Мне этот процесс не особенно нравится.
Если честно, при нынешнем количестве других задач я даже не могу уделять каждой карточке столько внимания, сколько предполагает идеальная редактура.
В идеальном сценарии я всё ещё хочу нажать одну кнопку и больше ничего не проверять.
Просто теперь я лучше понимаю, сколько инженерии находится между мной и этой кнопкой.
Studio стала не редактором, а местом наблюдения
Это изменение для меня важнее AI как такового.
Первая Studio отвечала на вопрос:
«Как изменить данные?»
Нынешняя постепенно должна отвечать на другой:
«Что происходит с данными?»
Что заполнено.
Чего не хватает.
Откуда пришёл факт.
Что предложила автоматизация.
Где источники расходятся.
Что требует человеческого решения.
Какие связи существуют между сущностями.
Что система считает надёжным.
Где возникла ошибка.
В перспективе я вижу Studio скорее инструментом наблюдения и мониторинга, чем местом, где редактор целыми днями вручную печатает биографии.
В том числе поэтому мне нужен отдельный слой контроля качества: система, которая способна фоном перепроверять уже существующие данные и сигнализировать о расхождениях.
Человеческая проверка сейчас необходима.
Это не значит, что я хочу сделать её вечной.
Мне всё ещё не нравится SyvStudio
Это, пожалуй, важная часть кейса.
Она не закончена.
Карточка автора мне нравится структурно. Отдельная редакционная поверхность оказалась правильным решением. Timeline я считаю полезнее обязательной длинной биографии: большинству людей, которым нужны основные сведения о человеке, не требуется читать литературный некролог на три экрана.
Но в остальном Studio всё ещё очень рабочая.
Местами это буквально пространство с торчащими строительными лесами.
Чтобы понять происходящее, иногда приходится вникать.
Меня это раздражает особенно сильно, потому что весь смысл Studio заключается в том, чтобы мне не приходилось вникать в механику каждый раз, когда я хочу выполнить обычное действие.
Я вообще ленивая.
И считаю это полезным качеством при проектировании интерфейсов.
Я не хочу десять раз настраивать инструмент перед тем, как он сделает работу. Не хочу изучать интерфейс ради интерфейса. Не хочу видеть кнопку только потому, что когда-то разработчик мог её добавить.
Если задача простая, я хочу нажать кнопку и получить законченный результат.
Если для этого система должна проделать внутри двадцать операций, это её проблема.
Не моя.
Кнопка должна заслужить право существовать
Studio перестраивалась несколько раз за свои несколько месяцев жизни, но я не могу честно разделить её на красивые «поколения».
Проект слишком молодой.
Изменения происходили проще.
Возникала реальная потребность — появлялся элемент интерфейса.
Потребность исчезала или оказывалась неправильно сформулирована — структура менялась.
Я стараюсь придерживаться довольно примитивного правила:
нет задачи — нет кнопки.
То же касается разделов, настроек и сущностей.
Это не минимализм ради эстетики. SyvStudio никогда не будет особенно маленьким интерфейсом: сама предметная область слишком плотная.
Но сложность предметной области и сложность взаимодействия — не одно и то же.
Я не могу сделать литературу простой.
Я могу хотя бы не добавлять к ней ещё и сложность интерфейса.
SyvStudio не будет готова
Syverro существует около четырёх месяцев. Studio — ещё меньше.
За это время она успела пройти путь от служебной формы до редакционной системы с несколькими сущностями, источниками, модерацией и AI-слоем.
И я всё ещё плохо представляю её окончательный вид.
Раньше это казалось проблемой.
Теперь уже не очень.
Потому что, вероятно, окончательной SyvStudio не существует.
Она будет меняться вместе с Syverro.
Если автоматизация станет достаточно надёжной, исчезнет часть ручной модерации.
Если появятся новые аналитические сущности, Studio понадобится способ наблюдать за ними.
Если изменится модель произведений, изменятся редакционные поверхности.
Если появится человеческая редакция, выяснится, насколько интерфейс, который я проектировала под собственную лень, пригоден для людей, не находившихся у меня в голове во время разработки. Наконец-то настоящий стресс-тест.
Studio — продукт, а не проект.
У неё нет финальной страницы в Figma, после которой можно торжественно объявить, что всё придумано.
Есть только текущая структура Syverro и интерфейс, который должен позволять с ней работать, не заставляя человека становиться ручным продолжением базы данных.
Syverro вообще начался не с желания каталогизировать литературу.
Я просто хотела отмечать прочитанные книги где-то лучше Google-таблицы.
Потом оказалось, что для анализа чтения нужны данные. Для данных нужна структура. Для структуры нужен редакционный инструмент. Для его масштаба нужна автоматизация. Для автоматизации нужен контроль качества.
Так из маленькой админки выросла SyvStudio.
Не потому, что мне очень хотелось построить ещё один продукт.
Я просто устала от этого дерьма.
И, пожалуй, это до сих пор один из самых надёжных способов обнаружить задачу, которую действительно стоит решить.
Структура интерфейса должна работать на структуру данных, а не наоборот.