Обсудить пилот
FlowAgents / Материалы / Примеры

Три процесса, которые собрал конструктор по описанию словами

Обновлено: 20 октября 2026 · Для руководителей, финансистов, продаж и e-commerce

Коротко: все три процесса ниже собрал конструктор FlowAgents по описанию задачи словами — модель Claude Opus 5.5, без правок человеком. Каждый черновик проверила сама платформа: процесс не запустится, если он что-то записывает в CRM или задачи без вашего подтверждения или без ограничения числа записей. Ниже — описание, которое получил конструктор, шаги процесса, кто что делает и полный текст процесса.

ДебиторкаЗаявка → счётУтро продавца

Дебиторка: кто сколько должен и задачи менеджерам

Для кого: Финансовый директор, бухгалтер

Описание, которое получил конструктор:

Каждый понедельник в 9 утра сверяй, кто нам должен. Возьми долги покупателей из 1С, поступления за последние 30 дней из банка (Точка или Т-Бизнес) и ответственных менеджеров по клиентам из Битрикс24, сопоставь оплаты с долгами и посчитай просрочку. Должников с просрочкой проверь в Контур.Фокусе на риски. Подготовь список обзвона и вежливые черновики напоминаний с запросом акта сверки — письма отправлю сам. После моего подтверждения поставь в Битрикс24 каждому менеджеру задачу обзвонить его должников — одним подтверждением на весь список — и пришли мне отчёт: кто сколько должен, риски и черновики.

Собран с первой попытки; правок человеком не было.

Что собрал конструктор

Схема — та же, что в кабинете; прогон проигрывается в браузере. По шагам:

  1. Одновременно собирает долги покупателей из 1С:Бухгалтерии, поступления из банка за выбранный период (Точка или Т-Бизнес — выбор в форме) и ответственных менеджеров из Битрикс24.
  2. Сопоставляет оплаты с долгами и менеджерами, считает просрочку по каждому должнику.
  3. Проверяет должников с просрочкой в Контур.Фокусе: статус, банкротство, суды, исполнительные производства.
  4. Готовит список обзвона по менеджерам — сначала высокий риск — и вежливые черновики писем с запросом акта сверки. Письма не отправляет.
  5. Собирает задачи: одна на менеджера, в ней все его должники; клиентов без менеджера в задачи не включает.
  6. Подтверждение человеком: весь список задач одним экраном. Нет ответа — процесс останавливается, а не пишет сам.
  7. Для каждого менеджера — задача в Битрикс24. Не больше 20 задач за запуск; сбой на одной — остальные не ставятся.
  8. Отчёт: кто сколько должен, риски, черновики писем, какие задачи поставлены.

Делает платформа

  • читает 1С, банк, Битрикс24 и Контур.Фокус — только чтение
  • сверяет оплаты и считает просрочку
  • пишет черновики писем и задачи
  • присылает отчёт каждый понедельник в 9:00

Остаётся человеку

  • подтверждает задачи менеджерам
  • отправляет письма должникам сам
  • решает по рисковым должникам
Полный текст процесса, как его выдал конструктор
process: receivables_weekly
name: Еженедельная сверка дебиторки и задачи на обзвон
entry: бухгалтер
description: |
  Раз в неделю берёт долги покупателей из 1С, поступления за 30 дней из банка и менеджеров из Битрикс24.
  Сопоставляет оплаты с долгами, считает просрочку и проверяет должников с просрочкой в Контур.Фокусе.
  Готовит список обзвона и черновики писем. После подтверждения ставит каждому менеджеру задачу в Битрикс24.
station: сервер
strict: false
rollback: Удалить в Битрикс24 задачи «Обзвон должников» с датой создания этого запуска (список — в отчёте
  процесса).
form:
- id: bank
  label: Банк
  type: select
  values:
  - Точка
  - Т-Бизнес
  - оба
  default: Точка
  required: true
  hint: Откуда брать поступления от покупателей
- id: days
  label: Период поступлений, дней
  type: number
  default: 30
  required: true
  hint: За сколько последних дней смотреть оплаты в банке
steps:
- id: collect
  label: Сбор данных
  parallel:
    onec:
    - id: debts
      agent: onec-buh
      prompt: |
        Выгрузи из 1С:Бухгалтерии задолженность покупателей перед нами на сегодня (взаиморасчёты по счёту 62 и аналогам).
        По каждому контрагенту дай: наименование, ИНН, сумму долга, договор, неоплаченные документы реализации с датой, суммой и сроком оплаты по договору (если срок не задан, так и напиши).
        Авансы и переплаты покажи отдельным списком, в долги их не смешивай.
        Ответ — таблица, затем итоговая сумма. Последняя строка — «Итог: …» или «Работа остановлена: …».
    bank:
    - id: pay_tochka
      agent: tochka-lookup
      model: fast
      when: '{{ form.bank != ''Т-Бизнес'' }}'
      prompt: |
        Покажи все поступления на счета в Точке за последние {{ form.days }} дней.
        По каждому платежу: дата, плательщик, ИНН плательщика, сумма, назначение платежа.
        Свои переводы между счетами и возвраты не включай. Ответ — таблица. Последняя строка — «Итог: …» или «Работа остановлена: …».
    - id: pay_tbank
      agent: tbank-lookup
      model: fast
      when: '{{ form.bank != ''Точка'' }}'
      prompt: |
        Покажи все поступления на счета в Т-Бизнесе за последние {{ form.days }} дней.
        По каждому платежу: дата, плательщик, ИНН плательщика, сумма, назначение платежа.
        Свои переводы между счетами и возвраты не включай. Ответ — таблица. Последняя строка — «Итог: …» или «Работа остановлена: …».
    crm:
    - id: managers
      agent: bitrix24-lookup
      model: fast
      prompt: |
        Выгрузи из Битрикс24 компании-клиенты с ответственным менеджером.
        По каждой компании: название, ИНН (из реквизитов), ID ответственного сотрудника, ФИО ответственного, основной контакт (имя, телефон, e-mail).
        Если ИНН в реквизитах нет, так и пометь. Ответ — таблица. Последняя строка — «Итог: …» или «Работа остановлена: …».
- id: match
  agent: receivables-desk
  model: reasoning
  prompt: |
    Сопоставь долги покупателей с оплатами и ответственными менеджерами.

    Долги из 1С:
    {{ steps.debts.output }}

    Поступления из банка за {{ form.days }} дней:
    Точка: {{ steps.pay_tochka.output | default('не запрашивалась') }}
    Т-Бизнес: {{ steps.pay_tbank.output | default('не запрашивался') }}

    Менеджеры из Битрикс24:
    {{ steps.managers.output }}

    Что сделать:
    1. Свяжи записи по ИНН, а если ИНН нет, то по наименованию (так пометь).
    2. Найди оплаты из банка, которых ещё нет в 1С, и уменьши на них долг. Каждую такую оплату пометь «учтена по банку, в 1С не проведена».
    3. По каждому неоплаченному документу посчитай просрочку в днях от срока оплаты. Если срока нет, считай от даты документа плюс 10 дней и пометь это.
    4. Раздели должников: «с просрочкой» и «срок не наступил».
    Ответ: таблица должников с просрочкой (клиент, ИНН, долг, просрочено, макс. дней просрочки, последняя оплата, менеджер, контакт), затем таблица «срок не наступил», затем список клиентов без менеджера и спорные сопоставления.
    Ничего не выдумывай: если данных не хватает, так и напиши. Последняя строка — «Итог: …» или «Работа остановлена: …».
- id: risks
  agent: http-lookup
  prompt: |
    По набору kontur_focus (Контур.Фокус) проверь на риски каждого должника с просрочкой из списка ниже (поиск по ИНН).
    По каждому: статус (действует / ликвидация / банкротство), признаки риска (арбитражи как ответчик, исполнительные производства, недостоверность сведений, массовый адрес или директор, блокировки счетов), уровень риска (низкий / средний / высокий) и одна строка, почему.
    Должников «срок не наступил» не проверяй. Если должников с просрочкой нет, так и ответь.

    {{ steps.match.output }}

    Ответ — таблица. Данные только из Контур.Фокуса, если сведения не получены, так и пометь. Последняя строка — «Итог: …» или «Работа остановлена: …».
- id: calls
  agent: receivables-desk
  prompt: |
    По сверке и проверке рисков подготовь материалы для взыскания.

    Сверка:
    {{ steps.match.output }}

    Риски по Контур.Фокусу:
    {{ steps.risks.output }}

    1. Список обзвона по менеджерам. Порядок: сначала высокий риск, потом по сумме просрочки по убыванию. По каждому: клиент, контакт и телефон, сумма просрочки, дней просрочки, риск, что сказать в звонке (одна строка).
    2. Вежливые черновики напоминаний, по одному на должника с просрочкой. Тема письма, обращение к контакту, неоплаченные документы с суммами и сроками, просьба оплатить или сообщить дату оплаты, просьба подписать акт сверки взаиморасчётов на текущую дату. Тон доброжелательный, без угроз. Если риск высокий, в начале черновика оставь пометку для меня (в письмо её не переносить).
    Письма не отправляй, это только черновики. Последняя строка — «Итог: …» или «Работа остановлена: …».
- id: call_tasks
  agent: receivables-desk
  model: fast
  prompt: |
    По списку обзвона ниже собери задачи для Битрикс24: одна задача на менеджера, в ней все его должники с просрочкой.
    Клиентов без менеджера в задачи не включай.

    {{ steps.calls.output }}

    Ответь ТОЛЬКО JSON, без пояснений и без обрамления ```:
    {"tasks": [{"manager": "ФИО менеджера", "responsible_id": "ID сотрудника в Битрикс24", "title": "Обзвон должников: N клиентов, X ₽ просрочки", "description": "по строке на должника: клиент — телефон — сумма просрочки — дней — риск — что сказать"}]}
    Если должников с просрочкой нет: {"tasks": []}
- id: preview
  text: |
    Будут поставлены задачи в Битрикс24 (по одной на менеджера):
    {{ steps.call_tasks.output }}

    Список обзвона:
    {{ steps.calls.output }}
- id: confirm_tasks
  approve:
    title: Поставить задачи на обзвон в Битрикс24?
    text: |
      {{ steps.preview.text }}

      Задачи из списка {{ steps.call_tasks.output }} будут созданы одним подтверждением.
    fields:
    - id: comment
      label: Комментарий (необязательно)
    on_timeout: stop
    timeout: PT2H
- id: create_tasks
  each: '{{ fromJson(steps.call_tasks.output).tasks }}'
  item_label: '{{ item.manager }}'
  max_items: 20
  on_item_failure: stop
  steps:
  - id: task_create
    tool: task_add
    executor: bitrix
    writes: true
    params:
      title: '{{ item.title }}'
      description: '{{ item.description }}'
      responsible_id: '{{ item.responsible_id }}'
- id: final
  text: |
    Сверка дебиторской задолженности на понедельник.

    Кто сколько должен:
    {{ steps.match.output }}

    Риски (Контур.Фокус):
    {{ steps.risks.output }}

    Список обзвона и черновики писем (отправить вручную):
    {{ steps.calls.output }}

    Задачи в Битрикс24 ({{ steps.create_tasks.count }}):
    {{ steps.create_tasks.text }}
report:
  title: Дебиторка на понедельник
  from: final
  text: '{{ steps.final.text }}'
schedule: 0 9 * * 1

Новый клиент по звонку — до сделки и задачи на счёт

Для кого: Менеджер по продажам

Описание, которое получил конструктор:

Когда звонит новый клиент, я ввожу его ИНН, телефон и что он хочет. Найди его звонок в телефонии, проверь, есть ли уже компания или сделка в Битрикс24, и подтяни реквизиты по ИНН из DaData и Контур.Фокуса вместе с рисками. Если сделки нет — после моего подтверждения создай её в Битрикс24. Подготовь черновик счёта по позициям и сумме, которые я указал, и после подтверждения поставь бухгалтеру задачу в Битрикс24 выставить счёт в 1С и отправить через ЭДО. Пришли мне отчёт.

Собран с первой попытки; правок человеком не было.

Что собрал конструктор

Схема — та же, что в кабинете; прогон проигрывается в браузере. По шагам:

  1. Проверяет ИНН из формы: не 10 и не 12 цифр — сразу остановка с понятным сообщением.
  2. Одновременно: находит звонок клиента в телефонии (Новофон или Телфин), ищет компанию и открытые сделки в Битрикс24, берёт реквизиты из DaData и риски из Контур.Фокуса.
  3. Показывает, какая сделка будет создана. Подтверждение человеком: создавать ли сделку.
  4. Если сделки по клиенту ещё нет — создаёт её в Битрикс24.
  5. Агент продаж готовит черновик счёта строго по позициям и сумме из формы и задание бухгалтеру.
  6. Подтверждение человеком: черновик счёта, можно добавить замечания бухгалтеру.
  7. Подтверждение человеком: ставить ли задачу — с её текстом перед глазами.
  8. Задача бухгалтеру в Битрикс24: выставить счёт в 1С и отправить через ЭДО.
  9. Отчёт менеджеру: что найдено, что создано, что требует внимания.

Делает платформа

  • находит звонок, клиента, реквизиты и риски — только чтение
  • готовит черновик сделки, счёта и задачи
  • создаёт сделку и задачу после подтверждения

Остаётся человеку

  • заполняет форму по звонку: ИНН, телефон, что нужно, позиции
  • подтверждает сделку, счёт и задачу
  • бухгалтер выставляет счёт и отправляет через ЭДО
Полный текст процесса, как его выдал конструктор
process: lead_to_invoice_full
name: Новый клиент — от звонка до счёта
entry: менеджер
description: |
  По ИНН, телефону и запросу нового клиента находит его звонок, проверяет компанию и сделку в Битрикс24,
  подтягивает реквизиты и риски из DaData и Контур.Фокуса. С подтверждения менеджера создаёт сделку,
  готовит черновик счёта и ставит бухгалтеру задачу выставить счёт в 1С и отправить через ЭДО.
station: сервер
strict: false
form:
- id: inn
  label: ИНН клиента
  required: true
  hint: 10 цифр для организации, 12 — для ИП
- id: phone
  label: Телефон клиента
  required: true
  hint: в любом формате, например +7 900 123-45-67
- id: need
  label: Что хочет клиент
  required: true
  hint: коротко — товар или услуга, сроки, особые условия
- id: items
  label: Позиции счёта
  required: true
  hint: по строке на позицию — наименование, количество, единица, цена
- id: amount
  label: Сумма счёта, ₽
  type: number
  required: true
- id: accountant_id
  label: ID бухгалтера в Битрикс24
  type: number
  required: true
  hint: ответственный за задачу «выставить счёт» (Сотрудники → профиль → число в адресе)
steps:
- id: inn_ok
  require: '{{ form.inn | trim | length == 10 or form.inn | trim | length == 12 }}'
  message: 'Остановлено: ИНН должен состоять из 10 или 12 цифр'
- id: gather
  label: Звонок, CRM и реквизиты
  parallel:
    calls:
    - id: call_find
      agent: http-lookup
      model: fast
      prompt: |
        Найди в телефонии (наборы novofon и telphin — тот, что подключён) последний звонок
        с номера {{ form.phone }} или на него за последние 3 дня. Номер сравнивай по последним
        10 цифрам. Ответь: дата и время, входящий/исходящий, длительность, кто из сотрудников
        говорил, есть ли запись или расшифровка (ссылка, если есть). Ничего не придумывай:
        если звонка нет — так и напиши.
        Последней строкой — «Итог: звонок найден — <дата, сотрудник>» или «Итог: звонок не найден».
    crm:
    - id: crm_check
      agent: bitrix24-lookup
      model: fast
      prompt: |
        Проверь в CRM Битрикс24 клиента с ИНН {{ form.inn }} и телефоном {{ form.phone }}:
        1) компания с таким ИНН в реквизитах — ID, название, ответственный;
        2) контакт с этим телефоном — ID, имя, к какой компании привязан;
        3) открытые сделки этой компании или контакта — ID, название, стадия, сумма, ответственный;
        4) лиды с этим телефоном или ИНН, если есть.
        Только чтение, ничего не меняй.
        Последней строкой ровно одно из:
        «Итог: сделка есть — ID <число>, компания ID <число или нет>»,
        «Итог: сделки нет, компания ID <число>»,
        «Итог: сделки нет, компании нет».
    requisites:
    - id: req_dadata
      agent: http-lookup
      model: fast
      prompt: |
        Набор dadata: найди организацию или ИП по ИНН {{ form.inn }}.
        Ответь: полное и краткое наименование, ИНН, КПП, ОГРН, юридический адрес,
        руководитель, статус (действует / ликвидируется / ликвидирована), дата регистрации,
        основной ОКВЭД. Если ничего не нашлось — так и напиши.
        Последней строкой — «Итог: <краткое наименование>, статус <статус>» или «Работа остановлена: ИНН не найден».
    - id: req_focus
      agent: http-lookup
      model: fast
      prompt: |
        Набор kontur_focus: проверь контрагента с ИНН {{ form.inn }}.
        Ответь: маркеры риска (красные, жёлтые, зелёные) с короткой расшифровкой, арбитражные
        дела в роли ответчика за последний год (число и сумма), исполнительные производства,
        признаки недостоверности адреса или руководителя, сведения о банкротстве.
        Ничего не додумывай — только то, что вернул Фокус.
        Последней строкой — «Итог: риск низкий / средний / высокий — <главная причина>».
- id: deal_preview
  when: '{{ steps.crm_check.verdict | lower contains ''сделки нет'' }}'
  text: |
    Будет создана сделка в Битрикс24:
    • Название: {{ form.need }} — ИНН {{ form.inn }}
    • Сумма: {{ form.amount }} ₽
    • Комментарий: телефон {{ form.phone }}; запрос: {{ form.need }}
    • Компания: ID, который вы укажете ниже (если пусто — сделка без компании)

    Что нашлось в CRM:
    {{ steps.crm_check.output }}

    Реквизиты: {{ steps.req_dadata.verdict }}
    Риски: {{ steps.req_focus.verdict }}
- id: deal_ok
  when: '{{ steps.crm_check.verdict | lower contains ''сделки нет'' }}'
  approve:
    title: Создать сделку в Битрикс24?
    text: '{{ steps.deal_preview.text }}'
    fields:
    - id: company_id
      label: ID компании в Битрикс24 (из ответа CRM; пусто — без компании)
    on_timeout: stop
    timeout: PT2H
- id: deal_create
  when: '{{ steps.crm_check.verdict | lower contains ''сделки нет'' }}'
  executor: bitrix
  tool: deal_add
  writes: true
  params:
    fields:
      TITLE: '{{ form.need }} — ИНН {{ form.inn }}'
      OPPORTUNITY: '{{ form.amount }}'
      CURRENCY_ID: RUB
      COMPANY_ID: '{{ approve.deal_ok.company_id | default('''') }}'
      COMMENTS: 'Новый клиент. Телефон {{ form.phone }}. Запрос: {{ form.need }}'
  rollback: 'Удалить созданную сделку вручную: Битрикс24 → CRM → Сделки → открыть сделку «{{ form.need
    }} — ИНН {{ form.inn }}» → Удалить.'
- id: invoice
  agent: lead-desk
  prompt: |
    Подготовь черновик счёта и задание бухгалтеру по новому клиенту.

    Запрос клиента: {{ form.need }}
    Телефон: {{ form.phone }}, ИНН: {{ form.inn }}

    Позиции, которые указал менеджер (бери строго их, не добавляй и не меняй цены):
    {{ form.items }}
    Итоговая сумма от менеджера: {{ form.amount }} ₽

    Звонок: {{ steps.call_find.output }}
    CRM: {{ steps.crm_check.output }}
    Создана сделка: {{ steps.deal_create.result | default('не создавалась — сделка уже была') }}
    Реквизиты (DaData): {{ steps.req_dadata.output }}
    Риски (Контур.Фокус): {{ steps.req_focus.output }}

    Ответь в формате:
    1) Покупатель — наименование, ИНН, КПП, ОГРН, адрес, руководитель.
    2) Таблица позиций — №, наименование, кол-во, ед., цена, сумма; строка «Итого».
       Сверь сумму позиций с суммой менеджера; при расхождении выдели его отдельной строкой, сам не исправляй.
    3) Риски — коротко, что стоит знать бухгалтеру и менеджеру (предоплата при высоком риске).
    4) Задание бухгалтеру — выставить счёт в 1С на этого покупателя по позициям выше и отправить через ЭДО;
       номер сделки в Битрикс24, если он известен.
    Последней строкой — «Итог: черновик готов на <сумма> ₽» или «Работа остановлена: <почему>».
- id: invoice_ok
  approve:
    title: Черновик счёта — поставить задачу бухгалтеру?
    text: '{{ steps.invoice.output }}'
    fields:
    - id: comment
      label: Замечания бухгалтеру (необязательно)
    on_timeout: stop
    timeout: PT2H
- id: task_preview
  text: |
    Будет поставлена задача в Битрикс24:
    • Название: Выставить счёт в 1С и отправить через ЭДО — ИНН {{ form.inn }}
    • Ответственный: сотрудник ID {{ form.accountant_id }}
    • Описание: черновик счёта из предыдущего шага
    • Замечания менеджера: {{ approve.invoice_ok.comment | default('нет') }}
- id: task_ok
  approve:
    title: Поставить задачу бухгалтеру?
    text: '{{ steps.task_preview.text }}'
    on_timeout: stop
    timeout: PT2H
- id: task_create
  executor: bitrix
  tool: task_add
  writes: true
  params:
    fields:
      TITLE: Выставить счёт в 1С и отправить через ЭДО — ИНН {{ form.inn }}
      RESPONSIBLE_ID: '{{ form.accountant_id }}'
      DESCRIPTION: |
        {{ steps.invoice.output }}

        Замечания менеджера: {{ approve.invoice_ok.comment | default('нет') }}
        Сделка: {{ steps.deal_create.result | default(steps.crm_check.verdict) }}
  rollback: 'Удалить задачу вручную: Битрикс24 → Задачи → «Выставить счёт в 1С и отправить через ЭДО —
    ИНН {{ form.inn }}» → Удалить.'
- id: summary
  text: |
    Новый клиент: ИНН {{ form.inn }}, тел. {{ form.phone }}
    Запрос: {{ form.need }}

    Звонок: {{ steps.call_find.verdict }}
    CRM: {{ steps.crm_check.verdict }}
    Сделка создана: {{ steps.deal_create.result | default('нет — уже была или не потребовалась') }}
    Реквизиты: {{ steps.req_dadata.verdict }}
    Риски: {{ steps.req_focus.verdict }}

    Счёт: {{ steps.invoice.verdict }}
    Задача бухгалтеру: {{ steps.task_create.result | default('не поставлена') }}
report:
  title: Новый клиент — от звонка до счёта
  from: summary

Утро продавца: дозаказ и реклама на пустых остатках

Для кого: Владелец магазина на маркетплейсах, менеджер по закупкам

Описание, которое получил конструктор:

Каждое утро в 8 смотри продажи и остатки на Ozon и Wildberries за последние 14 дней, остатки на складе и товары в пути в МоёмСкладе и расход рекламы в Яндекс Директе и Метрике. Посчитай, что закончится в ближайшие 7 дней и сколько дозаказать до запаса на 30 дней, и найди рекламу, которая крутится на товары с пустым или почти пустым остатком. Напиши черновик заказа поставщику — отправлю сам. После моего подтверждения поставь в YouGile задачу «дозаказать» в колонку, которую я укажу, и пришли мне сводку: что дозаказать и где остановить рекламу.

Собран с первой попытки; правок человеком не было.

Что собрал конструктор

Схема — та же, что в кабинете; прогон проигрывается в браузере. По шагам:

  1. Одновременно собирает продажи и остатки Ozon и Wildberries, склад и товары в пути из МоегоСклада, расходы Яндекс Директа и Метрики и список колонок YouGile.
  2. Считает, что закончится в ближайшие дни и сколько дозаказать до нужного запаса; находит рекламу на товарах с пустым или почти пустым остатком.
  3. Пишет черновик заказа поставщику — отдельное письмо на каждого поставщика. Ничего не отправляет.
  4. Подтверждение человеком: расчёт, черновик заказа и выбор колонки YouGile.
  5. Задача «Дозаказать» в выбранной колонке YouGile — с расчётом и черновиком заказа.
  6. Утренняя сводка каждый день в 8:00: что дозаказать и где остановить рекламу.

Делает платформа

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

Остаётся человеку

  • выбирает колонку и подтверждает задачу
  • отправляет заказ поставщику
  • останавливает рекламу в кабинете Директа
Полный текст процесса, как его выдал конструктор
process: marketplace_reorder_morning
name: Утренний дозаказ и реклама на пустые остатки
entry: владелец магазина
description: |
  Каждое утро сводит продажи и остатки Ozon и Wildberries, склад и товары в пути из МоегоСклада, расход Директа и Метрики.
  Считает, что закончится за неделю и сколько дозаказать до запаса на 30 дней, находит рекламу на пустые остатки.
  Готовит черновик заказа поставщику, после подтверждения ставит задачу «Дозаказать» в YouGile и присылает сводку.
station: сервер
form:
- id: days
  label: Период продаж, дней
  type: number
  default: 14
  hint: за сколько последних дней считать скорость продаж
- id: horizon
  label: Горизонт «закончится», дней
  type: number
  default: 7
- id: target
  label: Запас после дозаказа, дней
  type: number
  default: 30
- id: low_days
  label: «Почти пусто» — запаса меньше, дней
  type: number
  default: 3
  hint: реклама на товар с таким или меньшим запасом попадёт в список на остановку
steps:
- id: collect
  label: Сбор данных
  parallel:
    ozon:
    - id: ozon_data
      agent: ozon-lookup
      model: fast
      prompt: |
        Магазин на Ozon, последние {{ form.days }} дней.
        По каждому товару, который продавался за период или сейчас есть в остатке, дай:
        offer_id (артикул продавца), SKU Ozon, название, продано штук за период (без отмен и возвратов),
        текущий остаток на складах Ozon (FBO) и на своём складе (FBS) отдельно, штук в пути на склады Ozon (поставки в статусе «в пути», если есть),
        ссылку на карточку товара.
        Ответ — JSON-список объектов с полями offer_id, sku, name, sold, stock_fbo, stock_fbs, in_transit, url, без пояснений вокруг.
        Если часть данных недоступна — так и напиши отдельной строкой после JSON, не выдумывай цифры.
    wb:
    - id: wb_data
      agent: wildberries-lookup
      model: fast
      prompt: |
        Магазин на Wildberries, последние {{ form.days }} дней.
        По каждому товару, который продавался за период или сейчас есть в остатке, дай:
        артикул продавца, nmID, название, продано штук за период (выкупы, без возвратов), текущий остаток на складах WB,
        штук в пути к клиенту и в пути на склады WB, ссылку на карточку.
        Ответ — JSON-список объектов с полями vendor_code, nm_id, name, sold, stock, in_transit, url, без пояснений вокруг.
        Если часть данных недоступна — так и напиши отдельной строкой после JSON, не выдумывай цифры.
    moysklad:
    - id: ms_data
      agent: moysklad-lookup
      model: fast
      prompt: |
        МойСклад, на сегодня.
        По каждому товару дай: артикул, код, название, остаток на всех складах (сумма и по складам),
        ожидание — сколько штук в пути по непринятым заказам поставщикам и с какой ожидаемой датой приёмки,
        основного поставщика (по последней приёмке или карточке товара) и последнюю закупочную цену.
        Ответ — JSON-список объектов с полями article, code, name, stock, stock_by_store, in_transit, in_transit_date, supplier, buy_price, без пояснений вокруг.
        Если часть данных недоступна — так и напиши отдельной строкой после JSON, не выдумывай цифры.
    ads:
    - id: ads_data
      agent: http-lookup
      model: fast
      prompt: |
        Наборы yandex_direct и yandex_metrika, последние {{ form.days }} дней и отдельно вчера.
        Яндекс Директ: по каждому объявлению или группе, которые сейчас показываются (статус «идут показы»),
        дай кампанию, группу, id объявления, ссылку перехода (URL), расход за период и за вчера, клики.
        Яндекс Метрика: по страницам входа с источником «Директ» — URL, визиты и, если настроены, цели или заказы за период.
        Ответ — JSON-список объектов с полями campaign, group, ad_id, url, spend_period, spend_yesterday, clicks, visits, goals.
        Если какой-то набор недоступен — так и напиши отдельной строкой после JSON, не выдумывай цифры.
    yougile:
    - id: yg_columns
      agent: yougile-lookup
      model: fast
      prompt: |
        Перечисли проекты, доски и колонки YouGile с их id — коротко, по строке на колонку:
        «проект / доска / колонка — id». Ничего не меняй.
- id: analysis
  agent: seller-desk
  model: reasoning
  prompt: |
    Посчитай дозаказ и найди рекламу на пустые остатки.

    Данные Ozon за {{ form.days }} дней:
    {{ steps.ozon_data.output }}

    Данные Wildberries за {{ form.days }} дней:
    {{ steps.wb_data.output }}

    Склад и товары в пути из МоегоСклада:
    {{ steps.ms_data.output }}

    Реклама Директа и переходы из Метрики:
    {{ steps.ads_data.output }}

    Правила:
    1. Сведи товары между площадками и МоимСкладом по артикулу продавца (offer_id Ozon, артикул продавца WB, артикул МоегоСклада). Если сопоставить не удалось — вынеси товар в раздел «Не сопоставлено», не угадывай.
    2. Скорость продаж в день = (продано на Ozon + продано на WB) / {{ form.days }}.
    3. Запас = остаток Ozon (FBO + FBS) + остаток WB + остаток МоегоСклада. Товар в пути считай отдельно.
    4. Дней хватит = запас / скорость. «Закончится» — если дней хватит меньше {{ form.horizon }}. Отдельно отметь, если товар в пути придёт позже, чем закончится запас.
    5. Дозаказать = округлить вверх (скорость × {{ form.target }} − запас − в пути), если больше нуля. Товары без продаж за период не дозаказывай.
    6. Реклама впустую — объявление Директа, которое сейчас показывается и ведёт на товар, у которого там, куда ведёт ссылка, остаток 0 или запаса меньше чем на {{ form.low_days }} дня:
       ссылка на карточку Ozon — смотри остаток Ozon, на карточку WB — остаток WB, на свой сайт — остаток МоегоСклада.
       Укажи расход за вчера и за период и визиты из Метрики.
    7. Цифры бери только из данных выше. Если источник не ответил — напиши, какие выводы из-за этого неполные.

    Формат ответа:
    **Дозаказать** — таблица: артикул, название, поставщик, скорость в день, запас, в пути, дней хватит, дозаказать штук, сумма по закупочной цене.
    **Закончится за {{ form.horizon }} дней** — список с датой, когда кончится.
    **Остановить рекламу** — таблица: кампания, объявление, куда ведёт, остаток там, расход вчера, расход за период.
    **Не сопоставлено** — если есть.
    Последней строкой — «Итог: дозаказать N позиций на сумму X ₽, остановить M объявлений» или «Работа остановлена: причина».
- id: order_draft
  agent: seller-desk
  prompt: |
    По расчёту ниже напиши черновик заказа поставщику — только текст, ничего не отправляй.
    Если поставщиков несколько — отдельное письмо на каждого.
    В письме: короткое приветствие, таблица (артикул, название, количество), желаемая дата поставки — как можно раньше, если позиция закончится за {{ form.horizon }} дней,
    просьба подтвердить наличие, цены и срок. Позиции без поставщика вынеси отдельным списком в конце.

    Расчёт:
    {{ steps.analysis.output }}

    Последней строкой — «Итог: N писем, M позиций» или «Работа остановлена: причина».
- id: preview
  text: |
    В YouGile будет создана задача «Дозаказать» в колонке, которую вы укажете.
    В описание задачи войдут расчёт дозаказа и черновик заказа поставщику.

    Черновик заказа (отправляете сами):
    {{ steps.order_draft.output }}
- id: confirm
  approve:
    title: Дозаказ — подтвердите задачу в YouGile
    text: |
      {{ steps.analysis.output }}

      {{ steps.preview.text }}

      Колонки YouGile:
      {{ steps.yg_columns.output }}
    fields:
    - id: column
      label: Id колонки YouGile для задачи «Дозаказать»
    on_timeout: stop
    timeout: PT2H
- id: yg_task
  executor: yougile
  tool: task_add
  writes: true
  params:
    title: Дозаказать
    columnId: '{{ approve.confirm.column }}'
    description: |
      {{ steps.analysis.output }}

      Черновик заказа поставщику:
      {{ steps.order_draft.output }}
  rollback: Удалить или архивировать задачу «Дозаказать» в YouGile вручную — её данные есть в отчёте.
- id: summary
  text: |
    Дозаказ и реклама — утренняя сводка

    {{ steps.analysis.output }}

    Черновик заказа поставщику подготовлен (отправляете сами).
    Задача «Дозаказать» в YouGile: {{ steps.yg_task.result }}
report:
  title: Дозаказ и реклама на пустые остатки
  from: summary
  text: '{{ steps.summary.text }}'
schedule: 0 8 * * *

Как это устроено

Частые вопросы

Можно ли собрать процесс FlowAgents, описав задачу словами?

Да. Конструктор в кабинете получает описание задачи словами и собирает процесс: шаги, агентов, подтверждения человеком и отчёт. Платформа проверяет черновик до запуска, и если что-то не так, конструктор сам исправляет его по замечаниям.

Может ли процесс сам записать что-то в CRM или таск-трекер?

Только после подтверждения человеком. Перед записью процесс показывает, что именно уйдёт, и ждёт решения; если ответа нет, процесс останавливается. Число записей за один запуск ограничено — по умолчанию 20.

Что нужно, чтобы такой процесс заработал в моей компании?

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

Опишите свою задачу

Расскажите, что хотите автоматизировать, — соберём процесс на ваших системах в пилоте.

Обсудить пилот