SnapStrike app icon

SnapStrike — User Manual

Complete reference for all features.

Covers v1.0 through v1.2 — all current features

1. Getting Started — Profiles

A profile represents a bowler. Every saved game is attached to one profile, so you need at least one before you can record games.

Create a profile

  1. Open the Profiles tab (rightmost tab).
  2. Tap + in the top-right corner.
  3. Enter a name and tap Add.

Rename a profile

  1. Tap the profile in the list to open its detail page.
  2. Tap the pencil icon in the top-right corner.
  3. The existing name is pre-selected — start typing to replace it, or use the cursor to make minor edits.
  4. Tap Save.

Delete a profile

On the Profiles list, swipe left on a profile and tap Delete. This also deletes all games associated with that profile.

2. Snap Tab — Import from a Photo

The Snap tab uses your camera (or photo library) to read a bowling center scoreboard and extract per-player scores automatically.

Step 1 — Choose a scan mode

At the top of the Snap screen is a Standard / AI Enhanced picker:

  • Standard — free, runs entirely on-device using Apple's Vision framework. Works offline. Accuracy varies by bowling center display type and photo quality.
  • AI Enhanced — uses Claude Vision (Anthropic's AI) for significantly more accurate extraction, including split indicators, unusual layouts, and difficult lighting. Requires an Anthropic API key (see Settings). Costs approximately $0.01 per scan billed directly to your Anthropic account.

If AI Enhanced is selected but no API key is configured, an orange banner appears with a Set Up button that takes you directly to Settings.

Step 2 — Capture the scoreboard

  • Take Photo — opens the camera. Frame the entire scoreboard and tap the shutter button.
  • Choose from Library — pick an existing photo from your photo library.

After you provide a photo, a processing overlay appears. Standard Scan tries up to 27 preprocessing strategies and may take 10–15 seconds. AI Enhanced sends the photo to Claude and typically responds in 3–5 seconds.

Step 3 — Review Scores

The Review Scores screen shows one row per player detected on the scoreboard.

Each player row shows:

  • The player name detected by OCR (used as a hint only — you will assign the real profile below).
  • A toggle (on by default) — turn it off to exclude that player from saving.
  • A full 10-frame scorecard showing the extracted rolls and running cumulative scores.
  • An "Assign to" picker — select an existing profile or leave it as New Profile to create one automatically using the detected name. When the detected name exactly matches a profile's name or any of its aliases (case-insensitive), that profile is pre-selected automatically. A teal "Matched by name or alias" label confirms the auto-selection; you can still change it before saving.
  • An orange "Score discrepancy" warning if the cumulative totals on the scoreboard don't match what the scoring engine calculates from the extracted rolls. This is a signal to review that player's frames.

If no players are detected, you will see a "No Players Detected" message. Try a clearer photo with better lighting and the full scoreboard visible.

Low-confidence result: An orange warning banner appears at the bottom if the OCR pipeline wasn't confident about the extraction. Review all frames carefully.

Game Info

Below the player rows is a Game Info section where you can optionally record context about this session before saving:

  • Bowling Alley — select which alley this game was bowled at. Alleys are managed in Settings › Bowling Alleys. Tap "Add Alley" if the list is empty.
  • Lane Condition — select Fresh, Transition, or Burn (or leave untracked).
  • Oil Pattern — classify the shot as House or Sport / Challenge, with an optional pattern name (e.g. "Main Street", "Cheetah").
  • Note — optionally type a short note about this session (league night, tournament, personal milestone, etc.).

All of these fields can also be set or edited later via Game Detail › ⋯ › Edit Game Details.

Step 4 — Correct errors

Tap any frame cell on a player's scorecard to open the frame editor.

Frame editor:

  • Frames 1–9 show 2 roll chips at the top; frame 10 shows 3 roll chips.
  • The active chip (highlighted in blue) is the roll you are editing.
  • Use the pin keypad (buttons 0–10) to set the pin count in one tap. Buttons that would produce an impossible result are grayed out automatically.
  • Tap any roll chip to jump back to an earlier roll and correct it.
  • After tapping a button the editor automatically advances to the next roll chip.
  • The notation display below the chips updates live, showing X for strike, / for spare, – for zero, and digits for all other values.
  • Tap Done to apply and return to the review screen.

After editing, the scorecard and discrepancy indicator update immediately.

Inserting a missing frame

Bowling scoreboards sometimes display a circle around a pin count to indicate a split. The OCR pipeline may skip that frame entirely, leaving a player with fewer than 10 frames detected.

When this happens, an orange warning appears below the player's scorecard:

"N of 10 frames detected" [Insert Frame]

Tap Insert Frame to open the insertion sheet:

  1. The sheet lists all currently detected frames in order, showing each frame's roll notation (X, /, digits).
  2. Between every pair of frames — and before the first and after the last — there is a blue "+ Insert …" row.
  3. Tap the position where the skipped frame belongs. A blank frame [0, 0] is inserted there and all subsequent frames shift right by one.
  4. The sheet closes automatically and the new blank frame appears in the scorecard. Tap it to edit its rolls using the pin keypad.

You can repeat this process if more than one frame was skipped. The orange banner disappears once all 10 frames are present.

Step 5 — Save

Tap Save (top-right) to save all kept players as games. Each player's game is linked to its assigned profile. If a player was set to New Profile, a new profile is created automatically using the detected name. You can rename it later in the Profiles tab.

The original photo (compressed) is saved alongside each game and will appear as a thumbnail in the game's detail view.

Tapping Cancel discards all detected data and returns to the Snap tab.

Grid Inspector (advanced / debugging)

Tap the grid circle icon (⊞) in the toolbar on the Review Scores screen to open the Grid Inspector. This diagnostic tool shows four sections:

  1. Preprocessing Passes — up to 27 preprocessing strategies (A–S, varying gamma, contrast, sharpening, minimum text height, image upscaling, binarization, and .fast recognition level) with the exact-match count for each. A green checkmark marks the winner. A "FUSED" entry appears when the selective fusion of top-performing passes produced the best result. If every pass shows 0 exact matches, the missing cells are below Vision's detection floor for that photo — a clearer photo is needed.
  2. Raw Vision Observations (pre-cluster) — every text region Vision detected, sorted top-to-bottom, before any row grouping. Observations in orange show alternative OCR candidates that were considered but not selected. Comparing this list across passes tells you whether preprocessing is the bottleneck or Vision itself.
  3. Raw Vision Grid (post-cluster) — the same observations after SpatialGridAnalyzer groups them into player rows. Each row shows its cells with X/Y positions.
  4. Parsed Players — frame-by-frame rolls with computed vs. detected cumulative scores. Mismatches are shown in orange.

Use the Export button in the Grid Inspector toolbar to share all four sections as plain text — helpful for diagnosing stubborn OCR errors.

3. AI-Enhanced Scan

AI-Enhanced Scan uses Anthropic's Claude Vision API to extract scores from your scoreboard photo. It handles split indicators (circled numbers like ⑧), unusual scoreboard layouts, low-contrast backgrounds, and difficult lighting that the Standard Vision pipeline may struggle with.

Requirements

  • An Anthropic account at console.anthropic.com
  • An API key added in SnapStrike Settings (gear icon on the Home screen)
  • A small credit balance on your Anthropic account (~$5 covers hundreds of scans)

Your API key is stored securely in the iOS Keychain and is sent only to Anthropic's servers — it never passes through any SnapStrike backend.

How it works

  1. Select AI Enhanced in the scan mode picker on the Snap screen.
  2. Take or choose a photo as normal.
  3. The photo is sent directly from your device to Anthropic's API.
  4. Claude reads all players, all 10 frames, roll notation, and cumulative scores.
  5. The result is handed to the same Review Scores screen you use with Standard Scan — all the same editing and correction tools apply.

Cost

Each scan costs approximately $0.01 (one cent), billed directly to your Anthropic account. SnapStrike does not charge anything additional for this feature.

When to use each mode

SituationRecommended mode
Good photo, clear display, Brunswick/standard layoutEither — Standard is free
Split indicators (circled pin counts) presentAI Enhanced
Dark or animated background (QubicaAMF, Bowlero)AI Enhanced
No internet connectionStandard only
Unusual or unfamiliar scoreboard layoutAI Enhanced

4. Manual Tab — Enter Scores by Hand

The manual entry flow is accessed from the Home tab by tapping + in the top-right corner.

Set up bowlers

  1. Tap Add Bowlers.
  2. Tap each profile in turn order — a circled number appears showing their position in the rotation. Tap again to remove.
  3. Tap Done.

You must create profiles in the Profiles tab before they appear here.

Bowling alley (optional)

A picker beneath the scorecards lets you select which bowling alley the game is being bowled at. Only alleys you have added in Settings › Bowling Alleys appear here. Tap the gear icon next to the picker to open Bowling Alleys and add a new entry.

Lane condition (optional)

Below the alley picker, a Lane Condition picker records the state of the oil at the time you bowled:

  • No condition — not tracked (default).
  • Fresh — lanes were recently oiled; ball motion is predictable and clean.
  • Transition — the oil has moved and broken down mid-session; carry-down is in effect.
  • Burn — oil is depleted; the lane plays very direct with minimal hook.

Oil pattern (optional)

Below the lane condition picker, an Oil Pattern picker lets you classify the shot type:

  • No oil pattern — field left untracked (default).
  • House — a typical house shot designed to funnel the ball toward the pocket.
  • Sport / Challenge — a flatter, more demanding pattern (USBC Sport, PBA Regional, Kegel, etc.).

When a type is selected, a Pattern name field appears for you to optionally enter the specific pattern name (e.g. "Main Street", "Stone Street", "Challenge").

Note (optional)

An optional text field lets you attach a short note to the game (league night, tournament, equipment change, etc.). The note applies to all bowlers in this session.

Entering rolls

A pin pad appears at the bottom of the screen showing the rolls available for the current bowler and frame. The active bowler is indicated by a blue dot next to their name.

  • For frames 1–9: tap the number of pins knocked down on each roll. If the first roll is a strike, the frame advances automatically.
  • For frame 10: up to 3 rolls may be available depending on whether you bowl a strike or spare.
  • Buttons are automatically disabled when they would result in an impossible total (e.g. you can't knock down 7 pins on roll 2 if you only left 6 standing).

The scorecards for all bowlers update in real time. Cumulative scores appear as soon as enough future-frame data exists for the engine to calculate them.

Correcting a frame

Tap any already-filled frame cell on any bowler's scorecard. That frame is cleared and the entry cursor jumps back to it. Frames after the corrected one remain saved and the engine skips over them automatically once the corrected frame is re-entered.

Mid-game lineup changes

Once scoring has started, tap Edit Lineup (pencil icon above the scorecards) to:

  • Reorder bowlers (drag handles on the left).
  • Remove a bowler (swipe left to delete).
  • Add a bowler who wasn't in the original lineup (tap Add Bowler in the toolbar).

Removed bowlers' partially-entered frames are discarded. Added bowlers start with empty frames and are placed at the end of the rotation.

Game complete

When all bowlers have finished all 10 frames, a Game Complete screen appears showing final scores. Tap Save in the toolbar to persist the game. Tap Cancel to discard (a confirmation prompt appears if any rolls have been entered).

5. Home Tab

The Home tab shows your most recent games (up to 10).

  • Profile filter strip — if you have multiple profiles, a horizontal chip strip appears at the top. Tap a name to filter the list to that profile. Tap All to see everyone's games.
  • Tap any game row to open its Game Detail view.
  • Tap + in the top-right corner to start a new manual game.

6. History Tab

The History tab shows all saved games, newest first.

  • Profile filter — same chip strip as Home. Tap a name to filter.
  • Tap any game row to open the Game Detail view.
  • Delete a game — tap Edit (top-left), then tap the red delete button, or swipe left on a game row.

Game Detail

Tapping a game shows:

  • Player name, date, time, and bowling alley (if recorded).
  • Alley equipment (lane type and pinsetter type, if recorded on the alley).
  • Ball used (if tagged).
  • Oil pattern (type and name, if tracked).
  • Lane condition (Fresh, Transition, or Burn, if tracked).
  • Note (if recorded).
  • An Incomplete game warning (orange) if the game didn't reach a final score.
  • Source photo thumbnail for OCR-imported games.
  • A scrollable 10-frame scorecard (strikes highlighted red, spares highlighted blue).
  • Final score colored by performance (blue ≥ 150, green ≥ 200, gold ≥ 270).
  • A Frame Breakdown grid showing each frame's individual score and rolls.

Actions menu (⋯ button)

Tap the button (top-right toolbar) to access:

  • Assign to Profile — reassign the game to a different profile, or remove the profile assignment entirely.
  • Edit Game Details — opens a sheet to update the bowling alley, ball used, lane condition, oil pattern, and note for this game.

Editing game details

The Game Details sheet lets you:

  1. Bowling Alley — pick from your saved alleys (or leave unset).
  2. Ball Used — pick from the active balls in the game's profile's arsenal (if any are saved).
  3. Lane Condition — select Fresh, Transition, or Burn (or leave untracked).
  4. Oil Pattern — select House / Sport · Challenge, plus an optional pattern name.
  5. Note — edit or add a free-text note.

Tap Save to apply changes.

7. Stats Tab

The Stats tab shows analytics for one profile at a time.

If you have more than one profile, a profile chip strip appears at the top. The stats update immediately when you switch profiles.

Alley filter

When you have recorded games at more than one alley, an alley filter row (blue) appears below the profile chips. Tap an alley name to restrict all stats to games bowled at that location. Tap All Alleys to return to the full view. The filter resets when you switch profiles.

Ball filter

When you have tagged games with more than one ball, a ball filter row (green) appears below the alley filter. Tap a ball to restrict all stats to games where that ball was used. Tap All Balls to clear the filter. The filter resets when you switch profiles.

Oil pattern filter

When you have recorded games with at least one oil pattern type tagged, an oil pattern filter row (orange) appears below the ball filter. Tap House or Sport / Challenge to restrict all stats to games played on that pattern type. Tap All Patterns to clear the filter.

Pinsetter filter

When you have games at alleys with a pinsetter type recorded, a pinsetter filter row (purple) appears below the oil pattern filter. Tap Freefall or String to restrict all stats to games bowled on that pinsetter type. Tap All Pinsetters to clear the filter.

Summary cards

StatDescription
Avg (All-Time)Mean final score across all complete games (matching active filters)
Avg (Last 10)Mean final score for the 10 most recent complete games (matching filters)
High GameHighest single-game score
High SeriesBest three-consecutive-game total

Incomplete games are excluded from all calculations.

Score History chart

A line chart of final scores over time, with a dashed horizontal line showing the all-time average. Appears when there are at least 2 complete games.

Strike Rate by Frame

A bar chart showing what percentage of rolls resulted in a strike for each of frames 1–9. Useful for identifying which frames consistently give you trouble.

Spare Conversion

The percentage of non-strike leave frames that were converted to spares. Excludes frame 10 bonus rolls.

By Alley

When All Alleys is selected and you have games at multiple alleys, a By Alley table appears showing your average score and game count at each location.

By Ball

When All Balls is selected and you have games tagged with multiple balls, a By Ball table appears showing your average score and game count with each ball.

Export CSV

Tap Export CSV to share a spreadsheet of all complete games for the selected profile. The export includes date, location, final score, and frame-by-frame detail.

8. Profiles Tab

The Profiles tab is where you manage all bowler profiles.

  • Create — tap + (top-right).
  • Delete — swipe left on a profile, or tap Edit (top-left) to enter edit mode.
  • Tap a profile to open its detail page.

Profile detail page

Shows:

  • Summary section: average score, high game, and total games recorded.
  • Aliases section: alternate scoreboard names that map to this profile for OCR auto-matching (e.g. "M", "SMB", "Julio"). Swipe to delete an alias; tap Add to add a new one.
  • Arsenal section: navigate to this profile's bowling ball arsenal.
  • Games section: full history of that profile's games, sorted newest first. Tap any game to open Game Detail.
  • Rename — tap the pencil icon (top-right). The existing name is pre-selected; start typing to replace it entirely or reposition the cursor to edit part of it. Duplicate profile names (case-insensitive) are not allowed.

Arsenal

The Arsenal screen (Profile Detail › Arsenal › Manage Arsenal) stores the bowling balls in a profile's bag.

Add a ball:

  1. Tap + (top-right).
  2. Enter Manufacturer (e.g. Storm) and Model (e.g. Phaze II). Year and Notes are optional.
  3. The Active toggle is on by default — mark a ball as inactive when it is no longer in your bag so it stops appearing as the primary option in game records.
  4. Tap Save.

Edit a ball: tap its row to reopen the edit sheet.

Delete a ball: swipe left on its row and tap Delete.

Once balls are in the arsenal, they appear in the Ball Used picker in Manual Entry, Snap Review, and Game Detail.

9. Settings

Tap the gear icon (⚙) in the top-left of the Home screen to open Settings.

Claude AI — API Key

This section manages your Anthropic API key for AI-Enhanced Scan.

To add a key:

  1. Get an API key from console.anthropic.com → API Keys.
  2. Make sure your account has a credit balance (Settings → Billing → Buy credits).
  3. In SnapStrike Settings, paste your key into the sk-ant-api03-… field.
  4. Tap Save & Validate Key — SnapStrike makes a quick test call to confirm the key works and has credits.
  5. On success, the field is replaced by a masked display (e.g. sk-ant-…6294).

To remove a key:
Tap Remove Key and confirm. AI-Enhanced Scan will be unavailable until a new key is added.

Your key is stored in the iOS Keychain — it is never stored in plain text and never leaves your device except when making direct API calls to Anthropic.

Bowling Alleys

Tap Manage Bowling Alleys to open the alley directory — a global list of bowling centers you can attach to any game.

Add an alley:

  1. Tap + (top-right).
  2. Enter the Name (e.g. Bowlero Northgate) and City / State (e.g. Seattle, WA).
  3. Optionally set Lane Type (Wood or Synthetic) and Pinsetter Type (Freefall or String). These feed the pinsetter filter in Stats.
  4. Tap Save.

Edit an alley: tap its row.

Delete an alley: swipe left. Existing games that referenced the deleted alley retain the alley name for display, but the structured link is removed.

Alleys can also be reached from the Manual entry screen (gear icon next to the alley picker) or from the Game Info section of the Snap Review screen.

10. Tips for Better Scan Results

These tips apply to both Standard and AI-Enhanced scan modes. Good photo quality helps both.

Standard Scan tips

  • Fill the frame with the scoreboard. The less wasted space around the scoreboard, the better Vision can resolve individual frame cells.
  • Avoid extreme angles. Shoot as straight-on as possible. Slight angles are corrected automatically, but severe skew reduces accuracy.
  • Steady the phone. Motion blur is the most common cause of misread characters, especially X (strike), / (spare), and single digits.
  • Adequate lighting. Bowling alleys are often dim. If the display is backlit, that's usually fine — avoid shooting against strong overhead glare that washes out the screen.
  • Both dark and light scoreboards are supported. The app tries up to 27 preprocessing strategies including image inversion, gamma adjustment, 2× upscaling, binarization, and varying sharpness levels. It then selectively fuses the best-performing passes and picks whichever result produces the best score alignment. No manual setting is needed.
  • Include the full scoreboard, not just one lane. Cropping out player names or cumulative score rows can confuse the row-pairing logic.
  • Check the discrepancy warning. An orange "Score discrepancy detected" label on a player row means the cumulative totals on the board don't match what the engine calculated. Tap individual frame cells to find and correct the misread.
  • Use the Grid Inspector when something looks wrong but you can't figure out why. The raw Vision observations show you exactly what text the phone saw and where, before any parsing logic ran.

AI Enhanced tips

  • AI Enhanced handles most difficult cases automatically — split indicators, unusual layouts, and dark backgrounds that trip up Standard Scan are handled well by Claude Vision.
  • Photo quality still matters. Even with AI, a blurry or heavily obscured photo may produce errors. The same framing and steadiness tips above apply.
  • Internet required. AI Enhanced sends the photo to Anthropic's servers. If you're in a bowling alley with poor connectivity, Standard mode is your fallback.

Common OCR misreads and how to fix them

MisreadActualFix
0 showing as a spare or wrong valueWas O or 0 confusedTap the frame cell, correct with the pin keypad
Frame shows 1 – instead of XX read as I or 1Tap the frame cell, set roll 1 to 10
Player has fewer than 10 framesOCR skipped a circled-split frameTap Insert Frame in the orange banner; pick the position; edit the new blank frame
Extra player row appearsTwo scoreboard rows merged, a header row detected, or a ball-name display row ("House Ball") picked upToggle that player slot off before saving
Cumulative scores off but rolls look rightOCR picked up wrong number from adjacent columnIgnore — the engine recalculates from rolls; detected scores are display-only