Kinetiq · Exercise-Intelligence and RTM Proof Engine
Every PT platform can already run free pose estimation and count reps. Kinetiq is the deterministic layer above the keypoints: it grades each rep against a population-adaptive clinical profile, abstains when a joint is not visible instead of inventing an angle, and exports an RTM-billable, FHIR-shaped session report a clinician can act on. Agents advise, code decides.
100%
Per-rep verdict agreement recovered through injected keypoint noise (35 of 35 reps)
Fixed labeled synthetic set: 25 clear plus 10 borderline
3 / 3
Occluded reps abstained instead of guessing an angle, 0 fabricated angles
Unit-tested honesty invariant on the labeled set
3 of 4
Sessions auto-verified RTM-billable, 1 routed to clinician review, 0 not-billable
3 synthetic patients plus 1 real captured clip
A runnable demo of the mechanism on three synthetic patients and one real captured squat clip. It runs offline with no live camera, no hardware, and no API key; the optional agents are the only part that can use a model.
Volume without verification, and a rep count no payer will reimburse.
Counting reps is the easy part, and it is nearly free. BlazePose and MoveNet run on a phone and will tell you a patient did 15 squats. What they will not tell you is that rep 9 caved medially into a re-injury risk, that the hip dropped out of frame on rep 12 so no honest angle exists, or that the same 80 degree depth is progress for a post-surgical knee and a failure for a healthy athlete. That interpretation is the layer a PT platform actually needs, and it is the layer that ages the worst when it is skipped.
The pain is concrete. Home-exercise adherence in physical therapy sits at 35 percent, and 65 percent of patients abandon within the first month (Veriprajna WP29 research, 2026), while self-report overstates compliance. Clinicians want to bill Remote Therapeutic Monitoring on CPT 98975 to 98981, plus the 2026 codes 98979 and 98985 with the qualifying threshold dropped to as few as 2 days or 10 minutes, but CMS requires device-gathered data tied to treatment decisions, not raw coordinates (Veriprajna WP29 research, 2026). Raw keypoints do not clear that bar.
The stakes for employers are just as concrete. Musculoskeletal conditions cost employers roughly 3,591 dollars per employee per year, 486 dollars direct and 3,105 dollars in productivity, an estimated 36 percent of MSK surgeries are considered unnecessary at a 90 billion dollar scale, and more than 50 percent of employees resist sharing health data on privacy grounds (Veriprajna WP29 research, 2026). And the accuracy ceiling is real: monocular knee-angle error runs at a mean absolute error of 9.3 to 21.9 degrees (Nature Scientific Reports, 2025), which is exactly why a system that claims a clinical-grade angle from one camera is overselling, and one that abstains on a low-visibility rep is being honest.
The trust core is plain, unit-tested code. No LLM sits in the scoring path.
The pipeline per session is direct. A keypoint stream, synthetic or extracted offline from a captured clip, is smoothed with a 1-Euro filter, gated on keypoint confidence so a rep abstains when a joint is not visible, segmented into reps with class-agnostic temporal self-similarity, turned into per-rep biomechanical features, graded against a population-adaptive rule engine, run through a deterministic RTM policy gate, and written to a FHIR-shaped session report that renders on a canvas dashboard. Every verdict is plain NumPy a clinician can interrogate.
The trust core, entirely outside any language model. A 1-Euro filter smooths the 33-keypoint BlazePose-style stream, a confidence gate abstains below the visibility threshold, class-agnostic segmentation finds reps by temporal self-similarity, and each rep yields joint angle and ROM, a knee-valgus index, a descent to ascent tempo ratio, Log Dimensionless Jerk smoothness, and an L or R symmetry index. Plain, unit-tested code, so a clinician can see exactly why a rep was flagged.
Outside the model, plain code decides per session: rtm_billable, needs_clinician_review, or insufficient_device_data, mapped to the CMS RTM family CPT 98975 to 98981 plus the 2026 codes 98979 and 98985. The report is FHIR-shaped JSON mirroring the Observation and DocumentReference field shapes, with per-rep observations, the session rollup, the RTM determination, and the documentation CMS expects. FHIR-shaped, not FHIR-validated: Kinetiq emits the record, it does not POST to a live EHR.
| Signal | What it catches | Basis |
|---|---|---|
| Joint angle and ROM | Whether peak flexion clears the profile target, for example 75 degrees post-ACL versus 95 degrees for a wellness athlete. | deterministic |
| Knee-valgus index | Medial knee collapse, a re-injury risk on a rehab knee, thresholded per profile (for example 0.03 post-ACL). | deterministic |
| Descent to ascent tempo ratio | Compensatory slowing or rushing through part of the movement (for example tempo above 1.25). | deterministic |
| LDLJ smoothness and L or R symmetry | Jerky or asymmetric movement quality that a rep count alone hides. | deterministic |
| Confidence gate | A joint below the visibility threshold, so the rep is not scored rather than assigned a fabricated angle. | deterministic, abstains |
On top of the deterministic core, two optional provider-swappable agents interpret and communicate the numbers: a Longitudinal Monitor that drafts a proactive clinician escalation when a trend declines, and a Clinical Scribe that drafts the RTM note. Each is grounding-checked against the deterministic evidence, so any figure an agent introduces that is not already in the evidence is rejected and the deterministic template is shown instead. Both abstain with no API key. The adapter defaults to Claude claude-opus-4-8 and swaps to OpenAI or Gemini, but the scoring gate never changes hands: agents advise, code decides.
Four honestly-labeled patients: three are synthetic (Maria, Jordan, Eleanor) and one (Aisha) is a real captured squat clip. No live camera, no real patient identity, no medical record.
Aisha is a real bodyweight-squat video whose keypoints were extracted offline with MediaPipe, then scored by the same engine unchanged, so the very first thing you see is the pipeline running on real footage, honestly labeled. The 33-point skeleton overlays the actual clip while the panel grades each rep against the wellness-screen profile. The session gate returns rtm_billable, with 1 verified, 2 flagged, and an average quality of 8.3.
Maria is a synthetic post-ACL patient doing 15 prescribed squats. A raw pose library would log all 15 as reps. Kinetiq grades them, and on rep 9 it returns KNEE VALGUS: the knee-valgus index reads 0.054, at or above the 0.03 threshold, peak flexion is 78.6 degrees, and tempo is 1.4, above the 1.25 limit, a re-injury-risk alert rather than a good rep. That is the whole thesis in one row: the value is not counting the rep, it is catching the one that matters.
Population-adaptive judgement is not a slogan; it flips a verdict. Switch the profile from Maria (post-ACL, target 75 degrees) to Jordan, a corporate-wellness athlete (target 95 degrees), and a squat at roughly 80 degrees depth that scored good for Maria is scored SHALLOW for Jordan. The same motion earns a different verdict because the thresholds are keyed to the patient. In the full Jordan session the gate still returns rtm_billable even with reps flagged, an honest nuance: billable does not mean every rep was good.
Maria's session rolls up to 13 verified reps, 1 flagged (rep 9), and 1 abstained on occlusion, at an average quality of 9.6 out of 10. The RTM determination reads needs_clinician_review, mapped to CPT 98975 to 98981 plus the 2026 codes 98979 and 98985: the session is billing-eligible, but the valgus alert routes it to a clinician before any auto-billing, and that clinician alert itself documents a treatment-plan decision. From here the FHIR-shaped report exports as the auditable evidence a clinician documents RTM on.
Running the fixed labeled set surfaces the durable result. Per-rep verdict agreement against planted ground truth is 100 percent on 25 clear cases and 100 percent on 10 borderline cases within about one sigma of a threshold, with per-class agreement all at 1.00. Ground truth is the planted physical parameters versus the profile thresholds, computed independently of the engine, and measurement noise is injected after the labels are fixed, so the engine must recover the verdict through the noise. The honesty invariant is separate and unit-tested: of 3 occluded reps, 3 abstained, with 0 fabricated angles. These are task accuracy, throughput, and honesty on a fixed labeled synthetic set, not an open-world guarantee.
It runs after the keypoints, on top of whatever pose model you already use. It builds the interpretation-and-proof layer; it does not compete with the pose estimator.
| Concern | Raw pose estimation and rep counting | Kinetiq |
|---|---|---|
| A knee caving on rep 9 | Counted as a rep | Flagged as a knee-valgus re-injury risk, with the threshold shown |
| A joint out of frame | An angle inferred anyway | Abstains, rep not scored, no fabricated angle |
| Same depth, different patient | One fixed threshold for everyone | Population-adaptive verdict keyed to the patient profile |
| Billing evidence | Raw coordinates CMS will not reimburse | RTM-billable, FHIR-shaped session report mapped to the CPT family |
| Who decides billability | Not addressed | A deterministic policy gate outside any model |
| Durability as pose models improve | The whole value is the sensor, which commoditizes | The value is the brain and the proof above the sensor |
Pose estimation and rep counting are the commoditized part. A raw pose library will happily log 15 good squats on a patient whose knee caves on rep 9. Kinetiq is the layer above the keypoints: it grades each rep against a population-adaptive clinical profile, abstains when a joint is not visible, and exports an RTM-billable, FHIR-shaped session report a clinician can act on. That interpretation-and-proof layer is what a PT platform actually bills and a clinician acts on, and it survives every pose-model upgrade rather than aging out with it.
We do not claim clinical-grade goniometry, and we say so on screen. Monocular knee-angle error runs at a mean absolute error of 9.3 to 21.9 degrees (Nature Scientific Reports, 2025), so a degree-accurate angle claim from a single camera is a trap. Kinetiq works at the granularity RTM actually requires, verified completion plus approximate quality plus trend, and it abstains on low-visibility reps rather than inventing a precise angle. The billing evidence is the verified, protocol-mapped session record, not a claimed exact joint angle.
It is FHIR-shaped, not FHIR-validated. The session report is structured JSON that mirrors the FHIR Observation and DocumentReference field shapes, carrying per-rep observations, the session rollup, the RTM determination and CPT family, and the documentation fields CMS expects. The EHR or FHIR write is a mock adapter in this demo, so Kinetiq emits the record, it does not POST to a live server. That keeps the artifact honest: it is the evidence a clinician documents on, shaped for a downstream FHIR integration you would build, not a certified EHR write.
CMS reimburses Remote Therapeutic Monitoring on the CPT 98975 to 98981 family, plus the 2026 codes 98979 and 98985, and it requires device-gathered data tied to treatment decisions rather than raw coordinates. Kinetiq is designed to produce exactly that evidence: a deterministic policy gate returns rtm_billable, needs_clinician_review, or insufficient_device_data, and the FHIR-shaped report documents the device-gathered data and the treatment-decision link. The CPT mapping is a framing to help you document RTM, not a billing certification or a reimbursement guarantee, and a flagged session routes to a clinician before auto-billing.
The trust core is deterministic and has no LLM in the scoring path. Every per-rep verdict and the RTM billability determination are plain, unit-tested NumPy code, so a clinician can interrogate exactly why a rep was flagged, for example rep 9 flagged because valgus index 0.054 is at or above 0.03 and tempo 1.4 is above 1.25. Agents advise, code decides: the two optional agents only interpret and communicate the deterministic evidence, and any number an agent introduces that is not in the evidence is rejected and the deterministic template is shown instead. That auditability is the point for a firm whose brand is truth.
There is no live camera and no on-device inference in this demo. The keypoint stream is either synthetically generated for three scenarios or extracted offline with MediaPipe from one real captured squat clip, a stubbed sensor in both cases. The mobile capture SDK and any edge deployment are deferred. What runs today is the real interpretation-and-proof logic: the 1-Euro smoothing, the confidence gate, the class-agnostic rep segmentation, the per-rep biomechanics, the population-adaptive rules, the RTM policy gate, and the FHIR-shaped export, all keyless on a laptop.
No, and we are careful to scope them. The 100 percent verdict agreement is on a fixed labeled synthetic set of 35 reps, 25 clear and 10 borderline within about one sigma of a threshold, where ground truth is the planted physical parameters versus the profile thresholds, computed independently of the engine, and the engine must recover the verdict through measurement noise injected after the labels are fixed. The borderline cases are a discrimination stress test, so this is genuine discrimination rather than recall of an extreme, but it is not an open-world guarantee. The durable measures are task accuracy, automation throughput, and honesty, including 3 of 3 occluded reps abstained with 0 fabricated angles, which hold as pose estimation improves.
The research behind this demo — the architecture, the verification design, and the enterprise blueprint.
Verified, population-adaptive exercise data with a billable receipt.
If your product and clinical teams are working out how to turn a raw pose stream into verified, RTM-billable exercise data without overclaiming a clinical-grade angle, we would genuinely like to hear how you are thinking about it. The problem is industry-wide and the answers will be too.