← Все кейсы
Лучи Лучи ДМС-сервис

Лучи: AI-система принятия решений в сервисе ДМС

Система превращает обращение пациента в ДМС-чате в готовое действие внутри CRM: запись в клинику, гарантийное письмо или изменение визита. Там, где уверенности достаточно, действует сама, а в более сложных случаях передаёт обращение оператору с уже подготовленным контекстом.

За перепиской в ДМС прячется маршрут решения

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

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

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

Что делает систему сложной

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

2. Время здесь является частью смысла.
Фразы вроде “давайте завтра после обеда” или “могу в пятницу утром” нужно превращать не в красивый текст, а в конкретные окна времени, привязанные ко времени сообщения. Расплывчатые формулировки вроде “в ближайшие дни” вообще нельзя считать конкретным временем записи.

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

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

5. Время ответа задаёт бюджет архитектуры.
У обращения есть собственное окно по SLA: и на ответ пациенту, и на закрытие тикета. Бюджет вызовов модели на одно обращение в нём жёсткий — счёт идёт буквально на единицы. Длинные цепочки рассуждений с многократным переспросом сюда не помещаются. Каждый узел системы должен приносить пользу больше своей стоимости в этом бюджете, иначе в нём нет смысла.

Почему здесь не хватает готового инструмента

Со стороны задача кажется проще, чем есть на самом деле.

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

Именно поэтому здесь не сработал бы обычный сценарий “берём готовый инструмент, немного настраиваем и подключаем к внутренним системам”. Как только система начинает приносить пользу на одном участке, она сразу упирается в следующий слой операционных зависимостей. В таких процессах «умная надстройка» быстро дорастает до полноценной системы, которая сама готовит и проверяет действия.

Как устроена система

1. Понять, что именно пациент хочет сейчас

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

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

2. Решить, ведём ли мы это обращение сами

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

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

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

3. Пройти по CRM так, чтобы оператор мог подхватить

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

Это сделано не из стилистических соображений: архитектура запасной линии совпадает с архитектурой основной. На любом шаге, где система упёрлась — в неуверенность, в редкий контекст, в нестандартную просьбу пациента — оператор просто открывает обращение и продолжает с того состояния, в котором система остановилась. Отдельного “режима ручного разбора” не существует, потому что ручной разбор и есть штатный режим CRM. Система работает внутри него на тех участках, на которых может справиться, и оставляет процесс в живом состоянии на тех, где справиться не может.

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

Под “автоматически записывает пациента” внутри этого скрывается отдельная мини-система. Учитываются предпочтительная клиника, последняя клиника из истории, согласования, география, служебные исключения в списке клиник, онлайн-доступность и актуальные окна записи. Для части услуг система сначала отправляет запрос на расписание, ждёт ответ, отбирает подходящие окна и возвращает варианты оператору. Это уже ближе к координации записи, чем к генерации текста.

4. Датасеты — это и есть проект

Самым недооценённым оказался слой проверки качества. Воспринимается он обычно как “что-то поверх готовой системы”, но в реальности всё устроено наоборот. Сначала появляются наборы реальных кейсов с разметкой бизнеса — образцы того, как должны выглядеть правильно разобранный чат, сопоставленная услуга, заметка и гарантийное письмо. Только после этого можно осмысленно проектировать узлы системы, потому что у каждого узла появляется свой критерий “хорошо”.

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

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

Основная стоимость таких AI-систем сидит в умении доказать, что решение стабильно работает на реальных обращениях. Сама модель в этом бюджете обходится дешевле всего.

Что под капотом — инженерная карта сервиса
ОБРАЩЕНИЕ
идентификатор обращения · идентификатор пациента · один общий чат на все обращения · время последнего сообщения
параллельно
СБОР СОСТОЯНИЯ
поднять живой контекст процесса, а не только последнее сообщение
13 источников за один проход async fan-out
визиты · профиль пациента · претензии и жалобы · warnings · полный чат · options · срок программы · история обращений · approvals · rating clusters · virtual clinic · telemed-first · GP history
после этого отдельно добираются продукты пациента
Кэш свежести summary store
решение привязывается к последнему сообщению пациента; устаревший контекст нельзя безопасно переиспользовать
ПОНИМАНИЕ ЗАПРОСА
выделить новый смысловой запрос внутри общего чата и привести его к рабочим сущностям
Разделение чата appeal vs context
сообщения режутся на текущий фрагмент обращения и исторический контекст
модель ищет первый новый топик после даты старта обращения
Набор узких AI-модулей multi-step
отдельные проходы на chat summary · claims · notes · service matching · clinic matching · visit matching
Гибридный retrieval Weaviate + similarity search
услуги и клиники ищутся через hybrid search, затем услуга дополнительно нормализуется через отдельный similarity-search сервис
Окна времени ISO-8601
фразы вроде “завтра после обеда” превращаются в интервалы времени, привязанные к timestamp конкретного сообщения
единый контекст решения →
нормализованная услуга кандидаты клиник история пациента временные окна
ПРОВЕРКИ граница между AI и кодом
всё, где цена ошибки высока, переводится в явные проверки
нужно ли согласование
hardcoded checks, уже выданные approvals и уже отправленные гарантийные письма за последние 30 дней
покрытие и лимиты
есть ли услуга в программе, не упёрлись ли в лимит, можно ли идти через virtual clinic
допустимость клиники
входит ли клиника в программу и можно ли вести туда именно этот маршрут
маршрут телемедицины
telemed-first не как текстовая рекомендация, а как блокирующее условие маршрута
служебные сценарии
keywords и script-service правила для случаев, где свободная интерпретация опасна
ДЕЙСТВИЯ В CRM включаются флагами
один endpoint может быть read-only или action-capable
Управление риском feature flags
`enable_prefill_visit` · `enable_update_visit` · `enable_gp`
ветки действий запускаются по темам `CREATE_VISIT`, `CREATE_GUARANTEE_LETTER`, `CANCEL_VISIT`
Ветка визита prefill + update
собирает Visit payload, ищет связанный визит по обращению, обновляет визит и notice, возвращает предзаполненную форму CRM
Ветка записи booking engine
выбор идёт через preferred clinic, последнюю клинику из истории, approvals и географию пациента
для части услуг создаётся schedule request, идёт polling ответа, слоты режутся по окну пациента, группируются по врачу и сливаются по соседним интервалам
Ветка гарантийного письма GP flow
ищет релевантный визит или approval, выбирает `template_id`, создаёт письмо и при наличии данных клиники сразу обновляет его содержимое
ЧТО ПРИШЛОСЬ ВЫДЕЛИТЬ В ОТДЕЛЬНЫЕ ПОДСИСТЕМЫ
это видно по истории коммитов: проект рос не вокруг красивого текста, а вокруг операционных зон риска
Подбор клиники и маршрутизация записи
эту часть переписывали сериями: от простого выбора клиники она выросла до механизма с альтернативами, online-booking, telemed-first и virtual clinic
Свежесть решения
кэш переделывали несколько раз, потому что устаревшее решение по обращению опаснее, чем медленный пересчёт
Гарантийные письма
эта ветка выросла из шаблонов в самостоятельный процесс с выбором `template_id`, отдельным payload и обновлением содержимого после создания
Контроль качества
появился отдельный OKK-слой со своим API, агентным режимом, датасетами и offline-eval, потому что качество операторских сообщений нельзя было держать только ручной проверкой
13 источников на одно обращение · один общий чат на все обращения пациента · узкие AI-модули вместо одного универсального вызова
Weaviate + similarity search + rule-layer + action flags · prefill визита · запись · гарантийное письмо · отмена визита
отдельные eval-контуры для chat / services / visits / clinic retrieval / OKK

Где у этого процесса есть ROI

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

Слишком узкая зона действий агента не оправдывает инфраструктуры поддержки и проверок, и они начинают съедать экономию быстрее, чем она появляется. Слишком широкая зона тащит за собой ошибочные действия в CRM, и каждое такое действие стоит компании в разы больше, чем плановая остановка. Чем шире автономия, тем дороже отдельная ошибка.

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

Для бизнеса это и есть главный вывод кейса. Перед тем, как считать ROI от AI-внедрения в сложном операционном процессе, имеет смысл сначала понять, есть ли у него вообще такая полоса. У многих процессов её нет: контекста слишком много, а граница допустимой автономии слишком тонкая, чтобы оценка уверенности могла её надёжно держать.

Что изменилось в процессе

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

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

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

демонстрация маршрута ускоренный показ 0.0 сек
обращение
ДМС сервис
под капотом
ждёт запуска
После запуска система отделит новый запрос от старой темы и соберёт решение из живого состояния процесса.

Что мы вынесли из пилота

Система, которая готовит и проверяет действия в CRM
13 параллельных источников данных на одно обращение
Один общий чат на все обращения пациента
Актуальные окна записи, согласования и гарантийные письма в одном процессе
Отдельные наборы проверки на каждый промежуточный шаг
Зона автономии расширяется ступенями по мере роста доверия к системе
Система, которая готовит и проверяет действия в CRM
13 параллельных источников данных на одно обращение
Один общий чат на все обращения пациента
Актуальные окна записи, согласования и гарантийные письма в одном процессе
Отдельные наборы проверки на каждый промежуточный шаг
Зона автономии расширяется ступенями по мере роста доверия к системе

Модули платформы в этом проекте

Чат и агенты pydantic-ai

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

Документы Weaviate

Отдельный поиск по справочникам услуг и клиник поверх CRM-данных. Операторские формулировки и официальные названия услуг не совпадают, поэтому без такого поиска система теряется

Guardrails

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

Evaluation

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

Observability

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

Расскажите, какой процесс хотите разобрать.

Ответим, подходит ли задача для AI-агентов, и если да, предложим конкретный план.

или напишите напрямую — ilya@manaraga.ai