המלצות בריאות מבוססות בינה מלאכותית על פי נתוני בריאות ממובייל
רוב אפליקציות הבריאות מציגות למשתמשים מספרים—והם סוגרים את האפליקציה מבלי לשנות הרגלים. אנחנו משנים את התסריט: במקום "הנה הנתונים שלך" אנחנו נותנים "הנה מה שהנתונים האלה אומרים עליך היום." לפי HealthKit, הפעילות היומית הממוצעת של המשתמש היא 5,423 צעדים, שינה—7.1 שעות. בהתבסס על נתונים אלה, מנוע החוקים שלנו מייצר 12–20 המלצות מועמדות ביום, ודירוג ה-ML בוחר 3–5 מהרלוונטיות ביותר. לדוגמה, אם קצב הלב במנוחה הוא מעל 80 פעימות לדקה והשינה מתחת ל-6.5 שעות, ההמלצה היא להפחית את עוצמת האימון.
במאמר זה, אנו מסבירים כיצד אנו בונים מערכת המלצות: מאיסוף נתונים ועד שליחת התראות push. תלמדו מדוע מנוע חוקים אינו שריד אלא בסיס, וכיצד ML מוסיף התאמה אישית מבלי לאבד שקיפות. פיתחנו 15+ אפליקציות בריאות ויש לנו ניסיון רב; אחד הפרויקטים שלנו הגיע ל-500,000+ התקנות. אם אתם צריכים מערכת דומה, צרו איתנו קשר—נעזור לתכנן וליישם אותה.
מדוע מנוע חוקים הוא הבסיס להמלצות מותאמות אישית
הגישה מבוססת החוקים אינה מיושנת—היא פרקטית. חוקים הם שקופים, ניתנים לבדיקה, ואינם דורשים מערך נתונים לאימון. ML על גבי חוקים מוסיף התאמה אישית בדירוג. תנאים משולבים חשובים: קצב לב במנוחה של 85 פעימות לדקה לבדו עשוי להיות תקין, אך בשילוב עם חוסר שינה, הוא סמן לאימון יתר.
ארכיטקטורת מערכת ההמלצות
המלצות בריאות מותאמות אישית הן צינור עם מספר שכבות, לא אלגוריתם יחיד. הטבלה שלהלן מתארת את המרכיבים העיקריים.
| שכבה | מטרה | טכנולוגיה לדוגמה |
|---|---|---|
| איסוף נתונים | רכישת מדדים גולמיים | HealthKit, Health Connect, Core Bluetooth |
| פרופיל משתמש | גיל, מטרות, דפוסי התנהגות | Realm / Core Data |
| הנדסת תכונות | צבירה למדדים משמעותיים | Swift Combine / Kotlin Flow |
| מנוע חוקים | תנאים שקופים עם עדיפויות | Custom Swift/Kotlin |
| דירוג ML | התאמה אישית של מועמדים | Gradient boosting (XGBoost) |
| משלוח | באפליקציה / push עם תזמון אופטימלי | UNNotification / FCM |
נתונים: 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
)
}
}באנדרואיד, אנו משתמשים ב-Health Connect SDK עם 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 ) } } כדי לשאול צעדים לתקופה. אנו גם מחברים מכשירי צד שלישי דרך Core Bluetooth ב-iOS ו-BLE באנדרואיד כדי לקבל נתונים ממשקלים, מדי לחץ דם ורצועות כושר.
כיצד ML משפר התאמה אישית
מנוע החוקים מייצר רשימת מועמדים להמלצות. מודל ה-ML מדרג אותם לפי ההסתברות שהמשתמש יבצע פעולה. אנו משתמשים ב-gradient boosting על תכונות: CTR היסטורי, דפוס יום בשבוע, היצמדות לרצף. אנו מתאמנים על משוב מרומז: הוצג → נפתח → הושלם (נתונים מ-HealthKit).
כיצד נקבע תזמון התראות 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)
}HealthConnectClient.readRecords(StepsRecord::class) מנתח דפוסי משתמש: זמן פתיחת האפליקציה, שינה, אימונים. קישור להקשר: אם 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) } מראה שהמשתמש הולך, אל תציג המלצת פעילות.
עקרונות להמלצות אפקטיביות
המלצה ספציפית אחת ביום מנצחת חמש כלליות. "לך 2,000 צעדים נוספים עד 18:00, אתה עומד על 1,200 עכשיו" עובד. "זוז יותר" לא. מודעות להקשר והתאמה אישית הם המניעים המרכזיים למעורבות. אנו משתמשים בבדיקות A/B כדי לבחור את הפורמטים והתוכן היעילים ביותר.
תהליך עבודה להמלצות
- ניתוח מקורות נתונים ועיצוב סכמת HealthKit/Health Connect.
- פיתוח 20–50 חוקים בהתבסס על פרוטוקולים רפואיים ותרחישים טיפוסיים.
- יישום דירוג ML באמצעות נתונים סינתטיים לאימון.
- בניית מערכת משלוח: ווידג'טים באפליקציה + push עם תזמון אופטימלי.
- הרצת בדיקות A/B למשך שבועיים לפחות.
- תיעוד API והכשרת צוות הלקוח בניהול חוקים.
מה כלול בעבודה שלנו
- תיעוד API לשילוב וניהול חוקים.
- הכשרת צוות הלקוח בניהול והתאמה אישית של המלצות.
- תמיכה לאחר ההשקה למשך 3 חודשים.
- אחריות קוד: תיקון באגים במסגרת הארכיטקטורה שצוינה.
הערכות לוחות זמנים
| שלב | משך |
|---|---|
| MVP מבוסס חוקים עם המלצות בסיסיות | 1–2 שבועות |
| מערכת מלאה עם דירוג ML ותזמון | 3–5 שבועות |
| בדיקות A/B ושיפור | +2 שבועות |
ההערכה המדויקת תלויה במורכבות האינטגרציה ובמספר מקורות הנתונים. צרו איתנו קשר לייעוץ—ננתח את הפרויקט שלכם תוך יום אחד. קבלו הצעה אישית.







