
כל מודל תנוחה ירשום 15 סקוואטים טובים על ברך שקורסת. בניתי את ה־AI שתופס את חזרה 9.
בניתי את הגרסה הראשונה של הדמו הזה כדי להוכיח שמודל תנוחה יכול לספור סקוואטים, ותוך יום הוכחתי את הדבר הלא נכון. האכלתי אותו במטופלת סינתטית לאחר ACL שקראתי לה Maria, בת 62, שמונה שבועות אחרי שחזור ברך, חמישה־עשר סקוואטים במשקל גוף שנרשמו לה. ספריית התנוחה החינמית עשתה בדיוק את מה שספריות תנוחה חינמיות עושות. היא רשמה חמש־עשרה חזרות, ספרה את כולן, והמשיכה הלאה. חמש־עשרה מתוך חמש־עשרה. מפגש נקי.
הבעיה הייתה חזרה 9. בחזרה 9 הברך של Maria קורסת פנימה והיא מאטה כדי לפצות — בדיוק התנועה שפיזיותרפיסט עוקב אחריה אחרי שחזור ACL, כי כך אנשים קורעים מחדש את השתל. מודל התנוחה ראה סקוואט. הוא לא ראה סיכון לפציעה חוזרת, כי לראות את זה אינו מה שמודל תנוחה נועד לעשות. החזרה שהיה צריך לסמן היא החזרה שהוא ספר.
זה היה הרגע שבו המוצר האמיתי התבהר לי. התייחסתי להערכת התנוחה כאל החלק הקשה. זה כבר לא החלק הקשה. זה חינמי.
הערכת תנוחה היא חינמית, אז הפסקתי לנסות להתחרות בה
ביליתי את השבוע הראשון בניסיון לבנות עוקב נקודות מפתח טוב יותר, וזה היה השבוע המבוזבז ביותר בפרויקט. BlazePose ו־MoveNet כבר רצים על טלפון, ב־30 פריימים לשנייה, ונותנים לכם שלד בן 33 נקודות מפתח בחינם. לכל פלטפורמת פיזיותרפיה ולאפליקציית בריאות ארגונית כבר יש את זה, או שהיא יכולה להכניס את זה מחר. להתחרות שם זה להתחרות על לתת בחינם משהו שכבר ניתן בחינם.
מה שאף אחד לא מוסר לכם הוא השכבה שאחרי נקודות המפתח. לקחת זרם תנוחה גולמי ולהפוך אותו למשהו שקלינאי יכול לפעול לפיו ומשלם יחזיר עליו. זו השכבה שהחלטתי ש־Kinetiq תבנה, מקצה לקצה, והתזה שחזרתי אליה שוב ושוב היא זו.
הערכת תנוחה היא חינמית. הערך הוא המוח שמעליה, וההוכחה הניתנת לחיוב.
אז זרקתי את העוקב ובניתי במקומו את מנוע הפרשנות. הוא לוקח את זרם נקודות המפתח (סינתטי עבור שלושה ממטופלי הבדיקה שלי, ועבור רביעי — חילוץ לא־מקוון מקליפ סקוואט אמיתי שצולם, כדי להוכיח שהצינור רץ על צילום אמיתי), מחליק אותו במסנן 1־Euro, מעביר בשער ביטחון, מחלק חזרות לפי דמיון עצמי זמני, ומחשב את המאפיינים שקלינאי באמת מנמק לפיהם: זווית מפרק וטווח תנועה, מדד ולגוס ברך, יחס קצב ירידה־לעלייה, חלקות תנועה כ־Log Dimensionless Jerk, ומדד סימטריה שמאל־ימין. NumPy פשוט עם בדיקות יחידה. אין מודל בנתיב הניקוד. אפשר לבנות את כל הדבר ב־veriprajna.com/he/demos/ai-biomechanics-exercise-verification ולראות אותו מדרג מפגש.
כשהרצתי את Maria שוב דרך המנוע הזה, חזרה 9 חזרה בדיוק כפי שהייתה צריכה בפעם הראשונה.

המנוע לא רק אומר "חזרה רעה." הוא כותב את הסעיף שבדק: ולגוס 0.054 בסף 0.03 או מעליו, קצב 1.4 מעל 1.25. קלינאי יכול לחקור את זה בחקירה נגדית. אי אפשר לחקור בחקירה נגדית קופסה שחורה, ואחרי ניתוח ACL מאוד רוצים לעשות זאת.
החזרה שהתפתיתי לזייף
אני זוכר בדיוק איפה הפכתי לחמדן, וזה היה בחזרה 12. בחזרה 12 של מפגש Maria נקודת המפתח של הירך יורדת מתחת לשער הנראות. ביטחון העוקב במפרק הזה נופל נמוך מדי מכדי לסמוך עליו. לכמה פריימים המנוע פשוט לא יודע היכן הירך שלה.
המהלך המפתה, זה שגורם לבנצ'מרק שלכם להיראות טוב יותר, הוא לבצע אינטרפולציה. לנחש את מיקום הירך מהפריימים סביבו, לחשב זווית בכל זאת, לדרג את החזרה, לשמור על המספר נקי. כתבתי את האינטרפולציה הזו. היא עבדה. ואז קראתי את הספרות על דיוק מונוקולרי ומחקתי אותה.
שגיאת זווית ברך במצלמה יחידה נעה בשגיאה מוחלטת ממוצעת של 9.3 עד 21.9 מעלות (Nature Scientific Reports, 2025). זהו התקרה הכנה לסוג המדידה הזה. אם אני ממציא מיקום ירך בפריים בעל ביטחון נמוך ואז מדווח זווית מפרק ממנו, אני לא מודד ברך — אני מייצר מספר שנראה סביר וקורא לו קליני. לחברה בשם Veriprajna, שמשמעותה חוכמה אמיתית, זו לא הייתה החלטה קרובה.

אז המנוע נמנע. הוא אומר, על המסך, "חזרה לא דורגה, ירך לא נראית." הוא מאפיר את השלד. הוא לא מעמיד פנים.
אנחנו אף פעם לא מנחשים זוויות מפרק מנקודות מפתח בעלות ביטחון נמוך.
שמתי את המשפט הזה על המסך כי רציתי שהמשמעת תהיה גלויה, לא קבורה בקובץ תצורה. על פני החזרות המוסתרות בסט המתויג שלי, שלוש מתוך שלוש נמנעו ואפס זוויות הומצאו, וזו אינה טענה שאני טוען — זה אינווריאנט עם בדיקות יחידה. חזרה מוסתרת שקיבלה ציון בכל זאת הייתה, בהגדרה, זווית מומצאת. הבדיקה הייתה תופסת אותה. סירוב לענות הוא תכונה שנאלצתי להילחם באינסטינקטים שלי עצמם כדי לשמור עליה.
למה אותו סקוואט עובר למטופל אחד ונכשל אצל הבא?
כמעט שלחתי סף גלובלי יחיד, ופיזיותרפיסטית שהראיתי לה בנייה מוקדמת דיברה אותי מזה תוך כשלושים שניות. הנקודה שלה הייתה פשוטה. סקוואט של 80 מעלות מאישה שמונה שבועות לאחר ACL הוא התקדמות טובה. אותו סקוואט של 80 מעלות מלקוח בריאות בן 30 בריא הוא חזרה עצלנית. אם המנוע שלכם מדרג אותם באותו אופן, הוא לא מבין שיקום — הוא מבין גיאומטריה.
אז מנוע הכללים הפך למותאם־אוכלוסייה. הספים מקושרים לפרופיל המטופל: טווח גיל, מצב, שבוע החלמה. Maria, לאחר ACL בשבוע 8, מקבלת יעד כיפוף של 75 מעלות. Jordan, ספורטאי בריאות ארגונית בן 30 עם ברכיים בריאות, מקבל 95. בניתי פקד בדמו כדי להפוך את הנקודה לבלתי ניתנת להכחשה: מחליפים את תפריט הפרופיל, שומרים על אותה תנועה בדיוק, ורואים את פסק הדין משתנה.

בפעם הראשונה שהחלפתי את התפריט מול מישהו וכל עמודת פסקי הדין השתנתה תחת תנועה שלא השתנתה, ראיתי אותם מבינים. אותה תנועה מקבלת פסק דין שונה לפי פרופיל, וזו שיפוט קליני, לא באג. זה גם החלק בתזה שלא מתיישן. כשהערכת תנוחה תהיה מושלמת, והיא תהיה, החיישן עדיין לא יכול לומר לכם ש־80 מעלות משמעותן דבר אחד לברך מתרפאת ודבר אחר לברך בריאה. ההבנה הזו חיה בשכבה שמעל.
סוכנים מייעצים, קוד מחליט
כן נתתי לסוכן AI להביך אותי פעם אחת, וזו הסיבה שהארכיטקטורה נראית כפי שהיא נראית. כל מי שהצגתי לו רצה את היכולת שבטרנד: סוכן שקורא את המפגש וכותב את ההערה הקלינית, סוכן שצופה במגמה ומסלים. בסדר. חיברתי Clinical Scribe ו־Longitudinal Monitor מעל מטופלת נוספת, Eleanor, בת 70, לאחר החלפת ברך, שטווח התנועה שלה יורד בשקט לאורך היסטוריית המפגשים שלה.
הטיוטה הראשונה שהסופר כתב הייתה שוטפת ובטוחה בעצמה והכילה נתון טווח תנועה שלא היה בראיות. הוא עיגל, או החליק, או פשוט המציא מספר שנשמע טוב. אילו בטחתי בו, הייתי משלח הערה קלינית עם מדידה מומצאת בתוכה. זהו כל מצב הכשל של הכנסת מודל שפה ללולאה רפואית, וראיתי את זה קורה על המסך שלי עצמי.
התיקון היה להפוך את הסוכנים לבלתי מסוגלים לכך מבחינה מבנית. כל נתון שסוכן מציג נבדק מול הראיות הדטרמיניסטיות. כל מספר שאינו בפלט המנוע נדחה, ובמקומו מוצג התבנית הדטרמיניסטית. שני הסוכנים נמנעים לחלוטין כשאין מפתח API. הם מפרשים והם מתקשרים. הם לא מחליטים.

סוכנים מייעצים, קוד מחליט.
המשפט הזה הוא החלטת העיצוב נושאת העומס של כל הדמו. ליבת האמון, כל פסק דין לחזרה והקביעה לחיוב, היא קוד פשוט עם בדיקות יחידה ללא מודל שפה בשום מקום לידו. הסוכנים יושבים מעליו, מוגבלים ונבדקים בעיגון, ועושים את הדבר האחד שהם באמת טובים בו — להפוך מספרים מאומתים לפרוזה מוכנה לקלינאי. ברגע שלסוכן יש קול בפסק הדין, איבדתם את יכולת הביקורת שהייתה כל הנקודה.
מה שמשלם באמת מחזיר הוא קבלה, לא ספירת חזרות
הסיבה המסחרית שבניתי בכלל את זה היא דבר שלמדתי בקריאת כללי חיוב של CMS, וזה לא איך שציפיתי לבלות חודש. קלינאים יכולים לחייב Remote Therapeutic Monitoring תחת CPT 98975-98981, בתוספת קודי 2026 98979 ו־98985, וסף הזכאות ל־2026 ירד עד ל־2 ימים ו־10 דקות של נתונים בלבד (מחקר Veriprajna WP29, 2026). אבל CMS לא מחזיר על קואורדינטות גולמיות. הוא דורש נתונים שנאספו במכשיר וקשורים להחלטת טיפול. ערמת נקודות מפתח אינה ניתנת לחיוב. קביעה מתועדת וניתנת לביקורת — כן.
הפער הזה אינו קטן, כי הבעיה הבסיסית אינה קטנה. היענות לתרגילי בית בפיזיותרפיה עומדת סביב 35 אחוז, ו־65 אחוז מהמטופלים נוטשים את התוכנית תוך החודש הראשון (מחקר Veriprajna WP29, 2026). דיווח עצמי מגזים ציות, כך שהקלינאי לעיתים קרובות מחייב ומטפל על נתונים שאינו יכול לבטוח בהם. בצד המעסיק, מצבי שלד־שריר עולים כ־3,591 דולר לעובד לשנה, כ־36 אחוז מניתוחי MSK נחשבים מיותרים (90 מיליארד דולר), ויותר ממחצית העובדים מתנגדים לשיתוף נתוני בריאות מטעמי פרטיות (מחקר Veriprajna WP29, 2026). נתוני תרגיל מאומתים, בטוחים לפרטיות וניתנים לחיוב הם הדבר שחסר לכל אחד בשרשרת הזו.
אז הדבר האחרון שהמנוע עושה לכל מפגש הוא להחליט: ניתן לחיוב, דורש סקירת קלינאי, או נתוני מכשיר לא מספקים, והוא מייצא דוח מפגש בצורת FHIR. תצפיות לכל חזרה, סעיף הסף שנבדק לכל אחת, סיכום המפגש, קביעת RTM, ושדות התיעוד ש־CMS מבקש. אני אומר בצורת FHIR, לעולם לא מאומת־FHIR, כי זה JSON מובנה שמשקף את צורות השדות של Observation ו־DocumentReference, לא מטען שנשלח ל־EHR חי. אני פולט אותו. אני לא מעמיד פנים שאני עושה POST.
מפגש Maria, עם דגל הוולגוס בחזרה 9, לא מחייב אוטומטית. הוא מנותב קודם לקלינאי, כי אות פציעה חוזרת צריך להיראות על ידי אדם לפני שהוא הופך לחיוב. זה הניואנס הכנה שעליו התעקשתי: ניתן לחיוב אינו אומר שהכול טוב, אלא מתועד מספיק טוב כדי לעמוד מאחוריו.

המספרים בלוח הזה הם אלה שאכפת לי מהם, ואני רוצה להיות מדויק לגבי היקפם. אמת הקרקע כאן היא פסק הדין הנגזר מהפרמטרים הפיזיקליים שנשתלו מול ספי הפרופיל, מחושב באופן עצמאי מהמנוע, ואז החזרות מומרות לנקודות מפתח עם רעש מדידה שנוסף אחרי שהתוויות קבועות, כך שהמנוע חייב לשחזר את פסק הדין דרך הרעש. על הסט הזה ההסכמה היא 100 אחוז על 25 מקרים ברורים ו־100 אחוז על 10 מקרים גבוליים שיושבים בתוך כסטיית תקן אחת מסף. זו תוצאת הבחנה על סט סינתטי מתויג, לא הבטחה לעולם פתוח, והמקרים הגבוליים הם אלה שהיו מתהפכים תחת ספי־סף נאיביים, וזו בדיוק הסיבה שאני מדווח עליהם בנפרד. אלה מדדים עמידים: דיוק משימה, תפוקת אוטומציה, וכנות. הם לא מתיישנים כשמודל התנוחה משתפר, כי אף אחד מהם אינו שיעור שגיאה של מודל תנוחה.
השאלה שנשארתי איתה
נכנסתי לזה כשחשבתי שאני בונה מוצר ראייה ממוחשבת, ואני מסיים משוכנע שבניתי מוצר אחריותיות שקורה שמתחיל במצלמה. העבודה המעניינת מעולם לא הייתה להשיג את נקודות המפתח. היא הייתה להחליט מה המערכת רשאית לטעון, מתי עליה להימנע, של מי הספים חלים, ומה קלינאי יכול לעמוד מאחוריו עם הרישיון שלו. אם תרצו לראות את המנוע מדרג ברך קורסת, מסרב לחזרה מוסתרת, ומייצא את הקבלה, הוא רץ ללא מפתח ב־veriprajna.com/he/demos/ai-biomechanics-exercise-verification.
ואם תעדיפו לצפות בזה מאשר לקרוא אותי מתאר, הנה כל הדבר רץ מקצה לקצה.
השאלה שאני ממשיך להפוך בה, וזו שאני באמת רוצה שבונים אחרים יתווכחו איתי עליה, היא זו. ככל שהחיישנים שואפים לשלמות, הפיתוי יהיה לתת למודל להחליט יותר, כי הוא יהיה כה לעיתים רחוקות שגוי. אבל לעיתים־רחוקות־שגוי הוא בדיוק התנאי שבו מספר מומצא גורם לנזק הגדול ביותר, כי הפסקתם לבדוק. אז איפה, במערכות שלכם עצמכם, הקו שאתם מסרבים לתת למודל לחצות, והאם אתם יכולים להצביע על הקוד שאוכף אותו?


