Snapshot Scoring

NEWEquipment validation · classifier tracking · per-org alias · offline volunteer grants · NFC tap-to-transfer

The fastest way to score an action shooting match.

One app. Every major action discipline. Every match-day touchpoint — from QR pre-registration to stage-scoped volunteer scoring to locked results — handled on a phone. Plus a full competitor side that keeps shooters engaged between matches, a director-side analytics layer for the people running matches, and a free WordPress plugin that moves your results from phone to club site the second a match locks. Six independent offline mechanisms keep every device current — no internet required.

Snapshot Scoring match list with upcoming and completed matches
// Scoring matches across
SASS USPSA IDPA 3-Gun Steel Challenge
Built for the line

One app. Every hat you wear.

Most people at a shooting match wear more than one hat. The same shooter who ran the timer last month is competing this month and directing the annual next month. Snapshot Scoring doesn’t make you pick — the same account does all of it, with a capability-based permission model that adapts to whatever you’re doing right now.

🎯

Compete

Follow home clubs, see upcoming matches in a feed, track career stats and classifier progression linked to your SASS / USPSA / IDPA membership numbers (with per-org aliases) on one profile, log practice drills against goals.

Score

Sport-specific UIs (A/C/D zones for USPSA, Points Down for IDPA, 5-string drop-worst for Steel). BLE timer sync with auto-reconnect, haptics, undo, and staleness guard. Permission scoped per-club — or per-stage for volunteers, even offline.

🧭

Manage

Create matches with league + ruleset picker, set per-match requirements (alias, age, equipment, membership), publish QR codes, build squads, invite volunteer scorers, lock + publish. Match Analytics + Operations Dashboard + Score Audit screens give directors a full view.

🙋

Volunteer

Helping score a match at a friend’s club? Director hands you a QR. Scan it. You have scoring access to exactly the stages you’re assigned to — and nothing else. Permissions cache on device so you can score remote bays with no signal. Access auto-expires at match end.

The permission model is capability-based: 12 discrete permissions, 3 system roles (Owner / Match Director / Scorekeeper), plus stage-scoped grants for temporary volunteers. No account sharing. No permanent-member overhead for one-off helpers. Every action is auditable.

Match day, end to end

Every touchpoint, one app.

From the email that announces the match to the leaderboard that ends it, every step runs through Snapshot Scoring — no paper, no Excel, no “wait, who’s handling registrations this time?”

Score a stage in under a minute.

Quick-jump shooter pills. Sport-specific form (A/C/D zones, Points Down, Steel strings). BLE timer flows times straight in — with auto-reconnect when the radio drops and undo for the last shot. Status badges tell you who’s scored, who’s up, and whose score you’re editing — no guessing, no double-entry.

Live stage scoring with shooter pills, BLE-synced time, and miss steppers
📣

Announce

Create the match in 30 seconds — pick league + ruleset from the wizard, set requirements (alias, age, equipment), and it lands in the Events feed of every shooter following your club and on your public club profile.

📱

Pre-register (QR)

Each match gets its own QR code. Post it in the club email, on your site, at the clubhouse. Shooters scan, fill a mobile form (alias, SASS#, category, notes), and land in your registration queue — ineligible registrations bounce against the match’s requirements.

🚶

Walk-up registration

New shooter shows up on match day? Manager taps the walk-up button on the check-in screen. Alias + SASS# + category goes in — auto-approved in one step for managers.

Check-in desk

Live count at the top (“12/45 checked in”), searchable roster, one-tap toggle per shooter. Only checked-in shooters show up in posse setup and scoring — no phantom no-shows.

👥

Squad & rotate

Auto-balance divides your roster across squads evenly. Auto-rotate assigns each squad its starting stage and computes the rotation schedule. Tweak by hand if you’re particular.

🎟

Invite volunteer scorers

Need help scoring one stage? Generate a QR grant scoped to exactly the stages that volunteer will work. They scan, authenticate, and are ready to score — nothing else unlocked. Grants cache on device so they keep working at remote bays with no signal.

🎯

Score live

Sport-specific scoring forms: USPSA hit factor with A/C/D zones, IDPA Points Down + FTDR, Steel best-4-of-5 strings with drop/cap badges. BLE timer flows times directly in.

🔒

Lock

One tap freezes the match — or bulk-lock all stages atomically. Scores can’t be edited after — audit integrity. Managers can unlock for legitimate corrections; every change is timestamped with an actor and visible on the Score Audit screen.

📤

Publish & email

Overall + per-category leaderboards to WordPress. Awards certificates, PDF, CSV, full audit log export, PractiScore .psc file — everything in one tap. Per-shooter result emails with stage breakdowns sent automatically.

For competitors

Your shooting, on one screen.

Snapshot Scoring isn’t just a tool for the director. The competitor side is a first-class product — your schedule, your scores, your stats, your classifier rank, all linked by every membership number you hold (and every alias). Reasons to open the app between matches.

Settings screen with profile, My QR Code, clubs, and WordPress pairing

One profile. Every membership. Every alias. Your QR on hand.

Hold a SASS number, a USPSA number, and an IDPA number on the same profile — with per-org aliases (your SASS handle is different from your USPSA name, and the app knows that). Scores from each discipline auto-link to the right ID and the right alias. Your Profile Card QR is the fastest way to check in at any club. Clubs you own and follow live in the same place. When you’re ready to publish results to your WordPress site, the pairing code is right there too.

📊

Career stats

Total matches, total stages, clean-match rate, best + average match totals, best stage time. Every number is derived live from your scored matches.

🏅

Classifier tracking

Watch your classifier rank progress across seasons. Pulled live from scored matches; no manual entry. See trajectory by sport — your USPSA classification + IDPA class + SASS skill level on one screen.

🗓

Events feed

Matches from clubs you follow land in a feed, sorted by date. Register inline — fields pre-fill from your profile, membership numbers, and category preferences.

🔎

Club discovery

Search public clubs by name or location. See member count, follower count, upcoming matches. One tap to follow; new matches join your feed.

📈

Match history

Every match you’ve shot — auto-linked by the right SASS / USPSA / IDPA number per discipline. Rank, category placement, raw time, misses, clean/MDQ flags, per-stage times. Filter by club, sport, season, or category.

Drill log + goals

Track practice: draws, transitions, reloads, sweeps, stage runs, dry-fire. Set target time + accuracy goals per drill type; the trajectory chart shows progress. Stats card breaks down best + average per drill type, by firearm.

🛠

Equipment slots

Per-shooter slots for firearm, holster, ammo, optics on your profile. Match registration validates your equipment against the match’s requirements before it lets you sign up — no “wait, that’s not legal in this division” on match morning.

🏆

Season standings

Year-to-date leaderboards per club and category, aggregating every match in the season. See how you’re stacking up against your division.

Profile Card QR

Settings → My QR Code. Show it at any club’s check-in desk and they scan you straight onto the squad. Travel matches at a club you’ve never been to? Same flow, no extra registration forms.

For directors

The match-day analytics layer.

Six dedicated director screens that turn match-day data into action — not just a CSV. From the moment a match locks, you have the breakdowns you used to compute by hand, plus the audit trail to defend any score change.

📈

Match Analytics

Stage-by-stage breakdowns, per-entry analytics, group analytics, performance trends, segmented standings. See where the time went and which stages broke the field.

🛰

Operations Dashboard

Live match-day view: check-in pace, stage progress, scorer assignments, audit alerts. The director’s air-traffic-control screen.

🧾

Score Audit

Every score edit, every actor, every before/after delta — on one page per match. Filter by shooter, stage, or actor. Defend any score change with one screenshot.

📋

Match duplication

Clone last weekend’s match (stages, requirements, sport, settings) in one tap; new date, same setup. Monthly cadences stop being weekly setup.

🚫

DQ analysis + sport summary

Match participant demographics, structured DQ reasons, sport-data summary across the season. The numbers you bring to a club board meeting.

📤

Audit log + .psc export

Full audit log CSV export for season records, insurance, or sanctioning bodies. Direct PractiScore .psc export so you can hand off to PractiScore.com without leaving Snapshot Scoring.

The loop

Two sides. One flywheel.

The app gets shooters into the door for more reasons than match day. Daily-active competitors drive discoverability for clubs. Easier match-day operations mean clubs can run more matches. More matches means more reasons to open the app.

Daily

Shooters stay active

Between matches, competitors log drill sessions against goals, check classifier progression, browse clubs they haven’t shot yet, and compare career stats across the seasons.

Weekly

Matches land in feeds

Your match drops into the feed of every shooter following your club. Inline pre-fill registration means “interested” turns into “registered” in two taps — and equipment validation catches problems before match day.

Match day

Ready by the time they park

Registered shooters hit the check-in screen. Walk-ups get a one-tap flow. Volunteer scorers scan their QR grant. Director runs squads, scorekeepers run stages. Results published before the awards.

Disciplines

Every action sport. Five engines. Eight composable modules.

Not a generic stopwatch bolted onto a rule set — each sport has its own scoring engine, divisions, penalty rules, built-in rulebook, and its own scoring form built around the way that sport actually scores. Underneath, eight reusable modules compose every engine, so a new league or a house variant is a config row, not a code change.

SASSTime Plus
USPSAHit Factor
IDPAPoints Down
3-GunTime Plus
SteelRaw Time

Results publish the same way for every sport — per-category leaderboards, awards certificates, CSV, PractiScore .psc, and a one-tap push to your WordPress site.

Match results screen with category leaders and publish actions
Clubs running
Shooters registered
Matches on the books
5Sports live
iOS · AndroidPlatforms

— matches scored · — upcoming on the calendar · live from the backend, refreshed every 15 min

In the field

Six offline mechanisms. No internet required.

Match-day networks are a mess. Snapshot Scoring assumes that and ships an offline-first sync stack with six independent mechanisms — every device stays current whether you have full LTE, the bay’s flaky Wi-Fi, or nothing at all.

14-day local mutation queue

Every score, registration, and check-in saves to device storage first. 5,000-operation capacity, sized for a 200-entry × 10-stage match × 2 ops/score. Payloads obfuscated at rest with a key in the device Keychain (iOS) / Keystore (Android). Mutex-protected against concurrent writes. Survives 14 days of offline scoring.

Local-network HTTP peer sync

Multiple phones at the same match exchange scores over the bay’s Wi-Fi without going to the server. Port 8847, QR-bootstrap session (snapshot://sync/<ip>:<port>/<token>), 30-minute timeout. Director phone, four scoring phones — all current with each other regardless of internet.

Delta sync

Only changed scores transit. ETag-based HTTP caching plus per-entity modifiedSince timestamps across nine entity types (matches, shooters, scores, stages, groups, entries, organizations, rulesets, check-ins). Phone joins mid-day on a slow tether? Catches up in seconds, not minutes.

Background sync

Auto-syncs when the app returns to foreground. Configurable: foreground interval, WiFi-only mode, low-battery skip, pause/resume. Default 5-minute foreground interval, 30-second floor between syncs, exponential retry up to 5 minutes. Pause for the awards ceremony if you want.

NFC tap-to-transfer

NDEF tags up to 8 KB, private MIME type so other apps don’t intercept. Five payload types: shooter, match, stage, club, scores. Tap a phone to a programmed tag and the right action runs — check in, follow a club, claim a stage, ingest a score bundle.

QR transfer codec

12 transfer types via compact QR (~2.9 KB chunked, JSON-with-version-prefix): SCORE / SHOOTER / SHOOTERS / MATCH / STAGE / STAGES / ENTRY / ENTRIES / GROUP / GROUPS / CLUB / BUNDLE. Transfer a full match, a single stage, a roster, or a single shooter — chunked automatically when the payload exceeds one QR.

Embedded scoring defaults

Sport rules cached on device at install time. A freshly-installed phone can score offline immediately — no first-load round-trip, no “please connect to download rulesets.”

Offline volunteer grants

Volunteers’ permission grants cache on device. Scan a grant QR with signal at sign-in, walk to a remote bay with no signal, keep scoring. A persistent banner reminds you you’re on cached perms.

BLE shot timers

Pairs with AMG Commander, Shooters Global SG Timer, and Special Pie M1A2 — with auto-reconnect when the radio drops, haptic feedback on shot detection, undo for the last shot, and a staleness guard. Stage times flow straight into the scoring screen.

Built by competitors

Stop running matches on a clipboard.

Free for clubs. Pair your site, run a warm-up match this weekend, and decide for yourself. iOS TestFlight + Android Play Store submissions in review — join the beta list and we’ll send install codes the moment each store goes live.