NeGD · MeitY · MYAS — National Hackathon

The SAI fitness battery, measured by on-device AI.

NAAP turns any phone into a fitness assessor for the Sports Authority of India's ten Battery Tests. Computer vision runs entirely on the device — offline, private, and honest by construction. No athlete video ever leaves the phone.

REC Sit-ups: 0
AI · on-device pose
Sit-Ups · trunk-angle count
Apple Vision → keypoint track → measurement
Live pose skeleton — rendered in this page
0SAI battery tests
0platforms, lockstep
0videos to the cloud
0automated tests
0on-device
The pipeline

From a phone video to a number you can trust.

Every AI measurement travels the same path — and it never ends in a bare number. Two independent estimators must agree, or the app asks for a re-record.

🎥
Capture
on-device, encrypted
🦴
Pose
17 body joints / frame
🧹
Clean
de-noise, de-spike
📐
Scale
pixels → cm (homography)
Measure ×2
two estimators
Result
value + confidence
The problem

A national fitness assessment can't depend on the cloud.

The SAI Battery — height, weight, sit & reach, vertical jump, broad jump, medicine-ball throw, 30 m sprint, 4×10 m shuttle, sit-ups and the endurance run — is administered to millions of school children across India, most far from reliable connectivity, on the cheapest hardware available.

Manual measurement is slow, inconsistent between assessors, and hard to audit. Cloud video analysis is a non-starter: it needs bandwidth that isn't there, and it sends children's video to servers it shouldn't.

Our answer

  • Measure on the device. Pose estimation and the geometry that turns pixels into centimetres both run locally.
  • Work fully offline. Register, consent, capture, measure and report in aeroplane mode.
  • Send no athlete video anywhere. Clips are encrypted at rest and sync as ciphertext the server cannot open.
  • Be honest by construction. The app never shows a number it cannot stand behind.
Full coverage

Every test in the battery, measured the way the protocol defines it.

Distance and timing tests are scaled to real-world units by geometry, not guesswork; the rest are captured with an evidence photo and the assessor's reading. Nothing is a bare number — every result carries its method, confidence and evidence.

#TestHow NAAP measures itMethod
1HeightHead-vertex to floor, scaled by a wall marker; reported as an interval — the crown & floor allowances are honest uncertaintyAI · CV
2WeightScale reading via OCR, confirmed by the assessor, with a photo of the displayOCR + assessor
3Sit & ReachAssessor reading of the box scale, with an evidence photoAssessor
4Vertical JumpTouch minus reach on the wall plane (homography), cross-checked by a ballistic parabola fit of the flight arcAI · CV
5Standing Broad JumpRearmost landing contact to the take-off line on the ground plane; a toe over the line is detected as a foulAI · CV
6Medicine Ball ThrowLanding-mark photo and assessor reading (AI tracking is experimental)Assessor
730 m SprintStart at first movement, finish at the line crossing on the ground plane; sub-frame interpolated timingAI · CV
84×10 m ShuttleAssessor timing with bib-bound identity for multi-athlete captureAssessor
9Sit-UpsTrunk-angle state machine over the pose track; fouls (incomplete rise, no return, hands unclasped) nullify a repAI · CV
10Endurance RunAuto start/finish detection with assessor lap confirmationAuto + assessor
The intelligence

On-device pose is the foundation — everything else is geometry.

RTMPose · COCO-17 · on-device

🦴 17 joints, every frame

A human-body pose model marks the athlete's joints on the phone. iOS uses Apple Vision today; the cross-platform path is ONNX Runtime with RTMPose. The measurement never learns which model produced the joints — it only sees the track.

📐 Pixels become centimetres

Printed markers of known size, placed in the plane of the movement, let a planar homography convert pixels into real-world centimetres. Pure geometry — so 30 fps and 120 fps give the same answer.

Built for a crowded, shaky, sunlit field

Real grounds are noisy. So the pipeline cleans what it sees before it measures.

Low-confidence joints are dropped, single-frame keypoint “teleports” are removed with a Hampel filter, and short drop-outs are interpolated — while long gaps are left honestly absent so a bad capture is caught, not hidden. Subject selection picks the athlete under test out of a crowd rather than tracking a bystander.

Why a committee can trust it

Never a bare number.

  • Provenance travels with every result. Value, unit, method, capture tier, confidence and its components, and the evidence keyframes — stored together.
  • Confidence is explainable. The score is a product of named factors — keypoint clarity, coverage, estimator agreement, calibration quality — shown as a labelled band, not a raw decimal.
  • “Re-record” is a first-class outcome. A result with no value is legitimate and structurally distinct — the database itself forbids claiming a value it doesn't have.
  • Plausibility, not fabrication. A physically impossible reading lowers confidence and warns; it is never silently “corrected”.
  • We never invent accuracy. Design targets are stated as targets; achieved accuracy is reported from validation, honestly — including the limits of a 30 fps floor device.

Consent before anything records

A capture cannot be created for an athlete without a valid, current guardian consent — enforced by the database, not merely the UI. Consent, registration and every override are written to an append-only audit log.

Made for the assessor, not the demo

Large touch targets, a maximum-contrast “sunlight” theme for a dim screen at noon, and Hindi + English throughout — the operator is a PE teacher managing thirty children on a dusty ground, not admiring a dashboard.

Privacy · security · offline

The constitution we build against.

🔒 Video never leaves

Clips are encrypted with AES-256-GCM under a per-device key in the platform keystore; the plaintext is deleted the instant it is encrypted. Files sync as ciphertext the server cannot decrypt.

Offline first

The whole flow — register, consent, capture, measure, report — works in aeroplane mode. Sync drains automatically when a connection returns: results first, video last.

No Play Services

Runs on devices with no Google Play Services and no ML Kit. Every dependency is a permissive licence (Apache / MIT / BSD); disqualifying ones are banned in our own build rules.

The application

What the assessor sees.

A deliberately simple flow — a modern interface that stays legible outdoors. The session runner, on-device capture, and the result screen with its confidence and provenance.

9:41▮▮▮ ▽
Run session
12 of 30 recorded40%
Athlete-wise
Priya Sharma
Vertical Jump
▶ Record video
or enter reading
Save
Session runner — athlete & test queue
9:41▮▮▮ ▽
● REC 00:08
Sit-Ups · 30 s window
Keep the athlete fully in frame
On-device capture — VisionCamera
9:41▮▮▮ ▽
Sit-Ups
AI measured
24 reps
High confidence Tier B
Body-point clarity92%
Movement seen88%
Accept result
Result — value, confidence, provenance

Interface rendered from the application's own design system — WCAG-tested contrast, Hindi + English. बैटरी फ़िटनेस मूल्यांकन

Under the hood

Built to be handed to a production team.

Expo React Native appAndroid + iOS, one codebase
▲ ▼
measurementpure TS · golden-tested
databaseSQLCipher
domain rulesconsent · capture
test definitions
i18n · UI
▲ ▼
poseVision / ONNX RTMPose
video-cryptoAES-256-GCM
arucoOpenCV calibration
▲ ▼
Django + DRF sync backendoffline queue · ciphertext only

A pnpm + Turborepo monorepo. Shared pure-TypeScript packages feed two apps and lockstep Kotlin + Swift native modules. The measurement mathematics is proven on synthetic pose tracks with seeded noise — accuracy verifiable in CI with no device.

  • 365 automated tests passing, across seven packages.
  • Golden tests assert frame-rate independence and sub-target error.
  • Drift guards keep schema, migrations and norms honest against their source.

Stack

Expo · React NativeTypeScript (strict)SQLCipherApple VisionONNX Runtime · RTMPoseOpenCV (ArUco)Django · DRFValkeynode:test
Where we are — stated plainly

Status & roadmap.

Working today

  • End-to-end app on both platforms: registration, guardian consent, sessions, capture, results.
  • On-device AI pose on iOS (Apple Vision) — live capture → pose → measurement → result.
  • Sit-ups measured fully by AI on device, no calibration needed.
  • Encrypted video at rest; consent-gated capture; offline flow.
  • Complete measurement engine for all five CV tests, golden-tested.

In progress

  • Marker calibration (ArUco / OpenCV) — unlocks jump, sprint and height AI on device. next
  • Android pose backend (ONNX Runtime + RTMPose) to match iOS. next
  • Report-card PDF (Hindi + English), integrity checks, signed declaration.
  • Backend dashboards and a field-validation study against manual measurement.

Until calibration ships, the distance and height tests honestly ask the operator to add the markers rather than return an unverified number — the same discipline that runs through the whole system.

The people

Team Voldebug

Two engineers building for the field, not the demo.

MB
Meet Bisht
Engineering · Team Voldebug
SB
Sumit Bist
Engineering · Team Voldebug