Ade Yusuf Rahardian
Built at Meta Global AI Developer Hackathon · Oct 26, 2026 · Remote

I built Jaga for my parents in Indonesia. Jaga means "to guard" in Indonesian. My parents are usually home together. The risk window is when one of them is out and the other is home alone. "If one of them falls while the other is out, the risk is not only the fall. The risk is that nobody knows for hours." Jaga is a fall-event verifier. It looks for a fall-like event, checks the evidence, and routes the event to a person through a tiered alert ladder. I entered the Build for Your World theme in the Indie Dev track as a solo builder. I am a senior software engineer and I build production edge-AI systems. Jaga itself is a research prototype. It has not been deployed or installed in a home, and it protects nobody yet. Every number below is a benchmark result on public datasets. I read those numbers as evidence of feasibility. They do not show real-world performance. Why the waiting time matters In a cohort of New Haven residents aged 72 and older who could walk unassisted, 148 of 313 non-injured fallers (47%) reported being unable to get up without help after at least one fall (Tinetti et al., JAMA 1993). If nobody knows, that wait can last for hours. Jaga is aimed at that gap between a fall and another person knowing about it. How it works 1. A cheap local motion gate, frame differencing, selects candidate segments. 2. Candidate keyframes are segmented with Meta's SAM 3.1 using the "person" prompt. I reduce each mask to measurements: bounding-box aspect and elongation, axis tilt, centroid path, floor proximity, and post-event stillness. 3. Descent timing is measured locally from the motion signal on a fixed 30 fps analysis series. Timing is never derived from the segmentation keyframes. 4. A frozen rules state machine (upright, rapid descent, horizontal, stillness) issues the verdict. A safeguard in the rules escalates ambiguous evidence to a person instead of clearing it. 5. Verdicts map to a tiered alert ladder: urgent, check now, or no immediate alert. The ladder carries a 900-second acknowledgement window, with escalation if nobody responds. There is no pose estimation anywhere in the system. The honest label is person segmentation plus mask kinematics. The design relies on SAM 3.1: the rules decide from measurements that come from SAM's masks, while timing comes from a separate local signal. By design the shipped system keeps verdicts, traces, and measurements. It does not keep footage. There is no video archive. Only public dataset clips were ever processed. In the confirmation run SAM 3.1 processed 1,524 keyframes, of which 1,489 were fresh API calls billed at about $3.72. The Muse Spark adjudicator experiment, and why I removed it An earlier design gave a Muse Spark adjudicator the final word over exactly the segments the rules had already flagged. Before running it I fixed a gate on the dev split (215 clips, 191 events). The gate required: no additional missed falls against the rules-only arm; hard-negative false alarms cut by at least 40% relative and at least 3 absolute; and usable verdicts at least 95% of the time. It failed. The safety veto passed with 0 additional missed falls. Usable verdicts passed at 141 of 142 (99.3%). The false-alarm reduction was 0.0% relative (4 to 4) and 0 absolute. The verdict was FAIL. The pivot to the rules-primary system was executed on that verdict. The shipped disposition path contains SAM 3.1 and no adjudicator. A post-hoc audit complicated the story. The four counted "false alarms" were real falls whose everyday-activity labels had been inferred from room layout. The source archives for those rooms ship no annotation files: Le2i Coffee_room_01 ships 48 annotation files and Home_01 ships 30, while Lecture and Office ship none. So the FAIL is procedurally genuine but substantively indeterminate on the deciding criterion. Its consequence is retained anyway, because Spark showed no measured benefit on any axis. On the dev split both arms routed 71 of 99 dev fall events to a human. Spark alone confirmed 49 of 99 falls with 7 false alarms. A crude aspect-ratio baseline called 87 of 92 everyday activities a fall, which is part of why a single mask measurement is never trusted on its own. I also ran a post-hoc dev diagnostic on SAM's contribution. Removing the SAM-derived evidence bundle took falls confirmed from 26 of 99 to 0 of 99 under every stillness reading tried, and the shipped joint operating point was unreachable under every motion-only reading tried. I treat that as supplementary diagnostics. It is separate from the confirmation result. Confirmation results (separate from all dev figures above) I ran the shipped configuration once, with no tuning, on a frozen test split that was never used in development: 68 clips, 44 events, drawn from UP-Fall Subject 2 plus the Le2i Coffee_room_02 holdout. Every scored run stamps the frozen configuration hash 6d7c03257b12ab00. Falls routed to a human (confirmed or escalated): 19 of 27, 0.704, 95% CI 0.515 to 0.841. The 27 fall events split as 7 confirmed, 12 escalated, 8 cleared, and 0 lost at the motion gate. Gate recall was 42 of 42 fall clips, 95% CI 0.916 to 1.000. Reported by dataset rather than pooled: UP-Fall Subject 2 routed 11 of 15 falls to a human with 0 confirmed false alarms in 9 events; Le2i Coffee_room_02 routed 8 of 12 falls to a human with 0 confirmed false alarms in 8 events. Everyday-activity events: 0 confirmed false alarms across 17 events. The 17 events split as 0 confirmed, 12 escalated, 4 cleared, and 1 missed at the motion gate. In rate terms that is 0 definitive false-positive confirmations in 0.18 h of ADL clips, exact Poisson 95% CI 0 to 20.5/h. The exposure is far too short to estimate an operational rate, and I do not present it as one. Definitive-alert precision was 7 of 7, 95% CI 0.646 to 1.000. The escalation cost is part of the result: 24 of 44 events (54.5%, 95% CI 0.401 to 0.683) escalated to a human check. That is the deliberate price of never clearing ambiguous evidence. Limitations Dataset falls are staged, performed by young actors in lab rooms. The confirmation covers one UP-Fall subject and one Le2i room. Everyday-activity depth is thin at 3 events per category per split. Stumble-and-recover is not a labelled category in either headline dataset. Processing took a median of about 46 seconds per clip in the offline evaluation environment. A fall the motion gate never selects produces no segment and no alert. What the demo shows The demo video is at https://youtu.be/l450QbwOGeA and runs about 3 minutes. It walks the risk window, runs the five stages on a real scored event with the SAM mask evidence and timing trace, fires the alert ladder in a demo harness, shows the failed adjudicator gate, and presents the confirmation results with their full disposition. That disposition includes the 8 of 27 falls the rules cleared and the 24 of 44 events escalated to a human check. No dataset footage is published in the demo. Its visuals are the system's own overlay renders, traces, and charts. Technical depth and reproducibility The evaluation protocol was frozen before results existed: a dev split for iteration, a frozen test split receiving exactly one confirmation run, event-level scoring where UP-Fall's two camera views of one trial count as one event, Wilson intervals on every proportion, and per-dataset strata never pooled into a single headline. The regression suite runs 77 checks. A sealed replication set, UP-Fall Subjects 3 to 5, was assembled and never inspected. It will be run once after the hackathon final and published whatever the outcome. An offline pinned example lets a reader run the downstream pipeline stages on one real scored clip with no API key. Repository: https://github.com/adeyura/jaga-fall-verifier The path into a real home (a plan only; none of this is built or installed) Two fixed cameras, one in the family room and one in the corridor by the bathroom door, with the bathroom interior permanently excluded. A small fanless edge box running the same code and the same rules. Cloud SAM 3.1 retained. A short rolling buffer that is working memory and never an archive. A heartbeat so a silently dead system reports itself. Alerts over WhatsApp, ordered by who can physically reach the door first. One to two weeks of shadow-mode calibration in the house before any alert reaches the family, because floor life, including prayer prostration five times a day, breaks dataset threshold assumptions. Full verification armed only when exactly one person is home alone. Roughly $500 to install and roughly $100 a month to run. Success criteria (urgent false alarms, check-now burden, uptime, staged-simulation capture, alert latency, and cameras covered or unplugged counted as results) would be fixed in writing before any pilot starts. Datasets and citations UP-Fall: Martinez-Villasenor et al., Sensors 19(9), 1988, 2019, DOI 10.3390/s19091988. Le2i: dataUBFC record, creators J. Dubois and J. Miteran, DOI 10.25666/DATAUBFC-2024-04-09, CC BY-NC-SA; original description Charfi et al. 2013. UR Fall was used for per-view diagnostics only and never pooled: Kwolek and Kepski, 2014, CC BY-NC-SA 4.0. Tinetti, M. E., Liu, W. L., and Claus, E. B., "Predictors and prognosis of inability to get up after falls among elderly persons," JAMA 269(1), 65-70 (1993). Dataset media is not redistributed in the repository. Code licence Apache-2.0. What I am not claiming No deployment. No installation in any home. Nothing was filmed at their home. No medical claims: Jaga verifies fall-like events and alerts people; it does not diagnose, treat, or guarantee a response. The consent layer in the design materials is a labelled mock, designed and not implemented. The no-archive tradeoff is that a disputed alert can never be reviewed after the fact. Dataset results are feasibility evidence only.