Реалізація AI-рекомендацій щодо здоров'я на основі даних у мобільному застосунку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація AI-рекомендацій щодо здоров'я на основі даних у мобільному застосунку
Середній
~1-2 тижні
Часті запитання

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

AI-Рекомендації по здоров'ю на основі даних мобільного додатку

Більшість health-додатків показують дані. Користувач бачить 7 340 кроків і закриває додаток. Рекомендаційна система змінює цей сценарій: замість "ось ваші дані"—"ось що це означає для вас сьогодні".

Архітектура системи рекомендацій

Персоналізовані рекомендації по здоров'ю—це не один ML-алгоритм. Це конвеєр з кількох шарів:

  1. Збір даних—активність (кроки, тренування), сон, харчування, біометрика (ЧСС, SpO2, вага)
  2. Профіль користувача—вік, цілі, вихідні показатели, паттерни поведінки
  3. Feature engineering—агрегація в осмислені метрики
  4. Модель рекомендацій—rule engine + ML ranking
  5. Відображення—конкретне, релевантне, в нужний момент

Дані: HealthKit як єдина точка на iOS

class HealthDataAggregator {
    private let store = HKHealthStore()

    func weeklyStats() async throws -> HealthWeekSnapshot {
        async let steps = fetchSum(.stepCount, days: 7)
        async let sleepHours = fetchCategorySamples(.sleepAnalysis, days: 7)
        async let restingHR = fetchAverage(.restingHeartRate, days: 7)
        async let activeEnergy = fetchSum(.activeEnergyBurned, days: 7)

        return try await HealthWeekSnapshot(
            avgDailySteps: steps / 7,
            avgSleepHours: sleepHours,
            avgRestingHR: restingHR,
            totalActiveKcal: activeEnergy
        )
    }
}

На Android—Health Connect SDK (HealthConnectClient) з аналогічним набором типів даних. HealthConnectClient.readRecords(StepsRecord::class)—запит кроків за період.

Rule Engine як основа рекомендацій

Rule-based підхід—не застаріий, а практичний. Правила прозорі, тестуємі, не потребують великого датасету для обучення. ML поверх правил додає персоналізацію в ранжируванні.

Приклад структури правил:

struct HealthRule {
    let id: String
    let condition: (HealthWeekSnapshot) -> Bool
    let recommendation: Recommendation
    let priority: Int
}

let rules: [HealthRule] = [
    HealthRule(
        id: "low_sleep",
        condition: { $0.avgSleepHours < 6.5 },
        recommendation: Recommendation(
            title: "Недосип знижує восстановлення",
            body: "Середний сон за тиждень—\($0.avgSleepHours.formatted(.number.precision(.fractionLength(1)))) ч. Спробуйте лягти на 30 хв раніше 3 дні підряд.",
            category: .sleep,
            urgency: .medium
        ),
        priority: 8
    ),
    HealthRule(
        id: "elevated_resting_hr",
        condition: { snapshot in
            guard let hr = snapshot.avgRestingHR else { return false }
            return hr > 80 && snapshot.avgSleepHours < 7
        },
        recommendation: ...,
        priority: 9
    )
]

Комбіновані умови важливі: "пульс у спокої 85 bpm" саме по собі може бути нормою для конкретної людини, але в сполученні з недосипом—маркер перетренованості або стресу.

ML-слой: ранжирование та персоналізація

Rule engine генерує список кандидатів—рекомендацій, умови яких виконані. Дальше ML-модель ранжирує їх за вероятностью виконання конкретним користувачем.

Для ранжирования використовуємо collaborative filtering або простой gradient boosting на фічах користувача + рекомендації:

  • Історичний CTR рекомендацій цього типу для користувача
  • Паттерн дня тижня (користувач більше гуляє по вихідним—рекомендації активності релевантніше в п'ятницю)
  • Streak: користувач 5 днів виконував рекомендацію—підвищити пріоритет наступної

Обучаємо на implicit feedback: рекомендація показана→користувач відкрив→виконав (є дані з HealthKit) / проігнорував.

Timing та push-сповіщення

Правильний момент для рекомендації важливіше правильного вмісту. "Ложітесь спати пораніше" о 20:00 працює. О 23:30—ні.

func scheduleRecommendation(_ rec: Recommendation) {
    let content = UNMutableNotificationContent()
    content.title = rec.title
    content.body = rec.shortBody
    content.sound = .default

    let bestTime = optimalDeliveryTime(for: rec, userSchedule: userProfile.typicalSchedule)
    let trigger = UNCalendarNotificationTrigger(
        dateMatching: Calendar.current.dateComponents([.hour, .minute], from: bestTime),
        repeats: false
    )
    let request = UNNotificationRequest(identifier: rec.id, content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request)
}

optimalDeliveryTime—логіка на основі паттернів користувача: коли він зазвичай відкриває додаток, коли лягає спати (з HealthKit sleep data), коли робить тренування.

Що робить рекомендації рабочими

Одна конкретна рекомендація в день краще п'яти загальних. "Пройдіть 2 000 кроків сьогодні до 18:00, у вас зараз 1 200"—працює. "Більше рухайтесь"—ні.

Привязка до контексту реального часу: якщо CMMotionActivityManager показує, що користувач зараз гуляє—рекомендацію по активності не показуємо. Не дратуємо.

Процес розробки

Визначення джерел даних та schema моделі користувача. Розробка правил (15–30 для початкового набору). Реалізація pipeline агрегації з HealthKit / Health Connect. Обучение моделі ранжирования (потрібні дані—або синтетичні, або з pre-launch beta). Система доставки: in-app та push-сповіщення з оптимальним тайминго. A/B тестування ефективності.

Орієнтири за часом

Rule-based система з базовим набором рекомендацій та HealthKit інтеграцією—1–2 тижні. Повна персоналізована система з ML-ранжируванням та оптимальним тайминго—3–5 тижнів.