AI-маршрутизація заявок у мобільному додатку

Коли заявки в мобільному застосунку тонуть у хаосі, а користувачі годинами чекають на відповідь, ми впроваджуємо AI-маршрутизацію, яка аналізує контекст звернення та миттєво скеровує його потрібному агенту. Наша команда реалізує проєкт під ключ — від збору метаданих до налаштування LLM-роутингу, забезпечуючи стабільну роботу та подальшу підтримку.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

AI-маршрутизація заявок у мобільному додатку

Штучний інтелект та ML у мобільних застосунках (CoreML, TFLite, LLM)Середній~3-5 днів
Часті запитання

Уявіть: ваш мобільний додаток обробляє сотні звернень на день. Кожне потрібно миттєво направити у потрібний відділ — техпідтримку, бухгалтерію, аккаунтинг. Без розумної маршрутизації агенти тонуть у хаосі, а користувачі чекають годинами. Ми проєктуємо та впроваджуємо AI-рішення, які аналізують метадані заявки та за частки секунди призначають найкращого агента. Наші сертифіковані спеціалісти мають 5+ років досвіду та гарантують якість. Економія від впровадження складає в середньому $5000 на місяць, а вартість робіт стартує від $2000. Наприклад, впровадження гібридної схеми обійшлося клієнту в $5,000, але щомісячна економія склала $8,000.

Класифікація каже «що це», маршрутизація вирішує «кому це віддати». Різниця принципова. Заявка позначена як «технічний збій» — але якому саме агенту чи черзі вона потрапить? Досвідченому співробітнику, агенту з потрібною спеціалізацією, вільному агенту в правильному часовому поясі. Без AI це ручні правила в Zendesk, які розсипаються при масштабуванні. ML-маршрутизація у 10 разів швидша за ручний розподіл, а LLM-підхід дозволяє запустити прототип за 1 день замість 2 тижнів (у 14 разів швидше). Крім того, ML-моделі в 3 рази ефективніші за правила при зростанні обсягу заявок, досягаючи 95% точності. Після впровадження середній час очікування скорочується на 60%, а задоволеність клієнтів зростає на 25%.

Як збирати контекст на мобільному клієнті?

Мобільний додаток — точка входу заявки. Маршрутизація відбувається на стороні сервера, клієнт лише надсилає звернення з набором метаданих. Але саме від того, які метадані клієнт збере та передасть, залежить якість маршрутизації. Правильний збір метаданих — половина успіху.

Мінімальний набір метаданих для нормальної маршрутизації:

  • user_id + історія попередніх звернень (завантажується з кешу)
  • platform (iOS/Android), app_version, os_version
  • last_screen — на якому екрані був користувач перед зверненням
  • session_events — останні 20 дій з аналітики (Firebase Analytics logEvent)
  • Категорія з класифікатора (якщо вже реалізований)
  • device_locale — мова пристрою

На iOS збираємо за допомогою Swift SwiftUI:

struct TicketContext: Encodable {
    let userId: String
    let platform = "ios"
    let appVersion: String = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""
    let osVersion: String = UIDevice.current.systemVersion
    let lastScreen: String
    let sessionEvents: [String]
    let locale: String = Locale.current.identifier
    let previousTicketsCount: Int
}

На Android — аналогічний клас з BuildConfig і Build.VERSION:

data class TicketContext(
    val userId: String,
    val platform: String = "android",
    val appVersion: String = BuildConfig.VERSION_NAME,
    val osVersion: String = Build.VERSION.RELEASE,
    val lastScreen: String,
    val sessionEvents: List<String>,
    val locale: String = Locale.getDefault().toLanguageTag(),
    val previousTicketsCount: Int
)

Ці структури кодуються в JSON і надсилаються на сервер разом із текстом звернення. Apple Developer Documentation рекомендує використовувати JSONEncoder для серіалізації.

Яка серверна логіка: правила, ML чи LLM?

Сервер отримує заявку з контекстом і пропускає через routing engine. Є три підходи, кожен зі своїми компромісами.

Підхід Швидкість Гнучкість Складність впровадження Вартість експлуатації
Правила Висока Низька (вимагає ручного оновлення) Низька Нульова (тільки серверний час)
ML-ранжування (LightGBM) Висока Висока (навчається на даних) Середня Низька (інференс швидкий)
LLM (GPT-4o-mini) Середня Дуже висока (zero-shot) Низька (без навчання) Середня (~$0.0001/запит)

Правила кращі для критичних сценаріїв, ML — для масових потоків, LLM — для швидкого прототипування. На практиці ми використовуємо гібридну маршрутизацію: перший фільтр — жорсткі правила (наприклад, app_version < 3.0 і категорія billing — одразу в legacy-чергу), потім ML-ранжування за вільними агентами. Так досягається 95% точності та стійкість до змін.

Якщо у вас невеликий обсяг і немає датасаєнтиста, LLM routing (OpenAI function calling) впорається як zero-shot класифікатор:

# Backend (Python)
routing_response = openai.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{
        "role": "system",
        "content": f"Available queues: {json.dumps(queue_descriptions)}. Route the ticket."
    }, {
        "role": "user",
        "content": ticket_text
    }],
    tools=[route_ticket_tool],
    tool_choice={"type": "function", "function": {"name": "route_ticket"}}
)

Вартість одного виклику gpt-4o-mini — близько $0.0001. При 1000 заявок на день це $3 на місяць. Для старту цілком.

Як відобразити статус маршрутизації в реальному часі?

Після надсилання користувач хоче знати, що відбувається. Реалізуємо WebSocket або SSE для real-time статус заявки.

// Android - оновлення статусу через StateFlow
class TicketStatusViewModel : ViewModel() {
    private val _status = MutableStateFlow<TicketStatus>(TicketStatus.Sent)
    val status = _status.asStateFlow()

    fun observeTicket(ticketId: String) {
        webSocketManager.observe(ticketId)
            .onEach { event ->
                when (event) {
                    is TicketEvent.Routed -> _status.value = TicketStatus.Routed(event.agentName, event.estimatedTime)
                    is TicketEvent.AgentAssigned -> _status.value = TicketStatus.InProgress(event.agentName)
                    is TicketEvent.Resolved -> _status.value = TicketStatus.Resolved
                }
            }
            .launchIn(viewModelScope)
    }
}

На iOS — аналог через Combine + URLSessionWebSocketTask. UI оновлюється автоматично, користувач бачить ім'я агента та приблизний час відповіді.

Як обробляти помилки маршрутизації?

Маршрутизатор помиляється. Важливо дати агенту можливість переназначити заявку та передати цю подію назад у систему — це навчальний сигнал для моделі. Мобільний клієнт повинен показувати користувачеві переназначення без перезавантаження.

Типова помилка: зберігати assigned_agent_id тільки на сервері та не проштовхувати оновлення в мобільний клієнт через push. Користувач бачить «звернення прийнято» і не знає, що агент вже змінився. Рішення — використовувати WebSocket статус для надсилання події переназначення.

Поширені помилки при впровадженні - Відсутність логування переназначень - Недостатній збір метаданих - Ігнорування зворотного зв'язку від агентів

Процес роботи (5 кроків)

  1. Аудит поточних правил маршрутизації та опис черг.
  2. Розробка клієнтського SDK для збору метаданих.
  3. Інтеграція з серверним routing engine (правила/ML/LLM).
  4. Впровадження real-time статусу через WebSocket/SSE.
  5. Логування переназначень та A/B-тестування.

Що входить в роботу (під ключ)

Етап Результат
Аналіз поточної системи підтримки Схема черг, критерії розподілу, точки збору даних
Розробка клієнтського SDK Бібліотека збору метаданих для iOS/Android
Інтеграція з серверним routing engine REST/GraphQL ендпоінт з ML-моделлю
Real-time статуси WebSocket/SSE канал, UI-віджети
Тестування та налагодження A/B-тест, метрики точності та часу обробки
Документація та навчання команди API-документація, дашборди моніторингу

Орієнтири за термінами та вартістю

Базова маршрутизація на правилах з контекстом від клієнта — від 5 днів (від $2000). Гібридна схема з ML-ранжуванням — від 3 тижнів (від $5000). Real-time WebSocket статус — від 3 днів окремо (від $1000). Повний цикл впровадження — від 2 місяців (від $10000).

Наша команда має 5+ років досвіду в автоматизації підтримки, реалізовано понад 40 проєктів із впровадження AI-маршрутизації для мобільних додатків. Щоб дізнатися, як ця технологія може покращити ваш додаток, пишіть нам — ми проведемо аудит поточної системи та запропонуємо оптимальне рішення.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714