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.
From holster to scoreboard
The whole stack
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.
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.
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.
Drill library
Bill Drill, El Presidente, FAST. Stop conditions, par beep, drill-aware scoring. Per-drill leaderboards. New drills are JSON entries, not screens.
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.
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.
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.
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.