PRACTICALHIT
staging · parably.bunnybag.space

The laser dry-fire scoreboard.

Phone camera, laser cartridge, IPSC zone scoring with per-shot timing. Server-verified results, global leaderboards, and a coach that reads your last ten attempts. No watch, no friend with a stopwatch, no excuses.

5
filter detection trust
3
drills shipped
2
phone multi-device sync
90d
log decay window
// the run

From holster to scoreboard

01
calibrate
02
env check
03
test shot
04
5-4-3-2-1
05
beep · run
06
score · coach
// what's in the box

The whole stack

01

One-tap calibration

SAM-based segmentation auto-finds your IPSC silhouette. Live environment grading (target size, angle, contrast, background flicker) tells you whether the run is going to be trustworthy before you start.

02

5-filter detection trust

ROI · blob size · flash duration · brightness delta · debounce. Every accepted and rejected candidate is logged with its reason — so when a shot is dropped you know why.

03

Coach in your pocket

Rule-based engine (no LLM) reads your last 10 attempts and emits one Primary insight, one optional Secondary, one Action card and a single-line takeaway. Tone shifts with skill tier.

04

Drill library

Bill Drill, El Presidente, FAST. Stop conditions, par beep, drill-aware scoring. Per-drill leaderboards. New drills are JSON entries, not screens.

05

Multi-device sync

Two phones in the same room, one master timer, NTP-style offset, sorted-by-global-time event store, grace window finalisation. Cloud is a relay, not a brain.

06

Server-verified

Every leaderboard entry is re-scored on the server using the saved per-shot coordinates. Hand-crafted JSON without a detection log can't reach the public board.

07

Adaptive coaching

Cohort percentiles per skill tier × drill, miss-cluster heatmap, drill prescription from "shooters like you next drilled X". Trend nudge when your alpha rate slides.

08

Privacy by default

Anonymous device id is the only required identity. Handle + email are opt-in. Detection logs decay to histogram-only at 90 days. GDPR purge is one DELETE call.

Get the app

Android only for staging. Build the APK from github.com/dolfrin/ipsc or grab the latest debug build from your install instructions.