# Pin City Bowling — Inventory & Improvement Roadmap

*Last updated: 2026-06-04*

This document inventories everything in the project today, then lays out how to grow it toward the experience of apps like **LaneTalk** and **OpenTalk** — full game/score capture, leave-split-spare-strike tracking, a managed ball arsenal with photos and specs, and practice-vs-league context.

---

## 1. What we have today

### Trackers (live HTML apps, run in the browser)
- **laurie-path-to-200.html** — The most developed app. A 3-game league score sheet with real frame-by-frame scoring (strikes, spares, opens auto-detected and scored correctly), a tap-the-pins **pin-leave tracker** with made/missed per game, an end-of-day **10-pin focus**, **spare-conversion %**, a **session history** with a sparkline and CSV export. All data saved on-device.
- **josh-path-to-300.html** — A clone of the above with separate saved data for Josh.
- **pin-city-poker.html** — 10-week poker league tracker; one scorekeeper enters hand winners; most hands over the season wins the $15 pot.
- **southpoint-recap.html** — Team recap sheet: per-game and series totals, sub-totals, **handicap**, and an auto head-to-head between two teams, plus a photo-scan button.

### Supporting files
- **README.md** — Project hub + running season log (bowling + poker).
- **season-log.xlsx** — Structured store with three tabs: **Poker** (raw hands), **Bowling** (per-bowler weekly scores + team scratch), and **Poker Standings** (auto-counted, flags the pot). Formula-driven.
- **setup-cards/** — Two one-time install guides ("host on Netlify + add to home screen") to send teammates.

### Honest assessment of the foundation
The scoring engine in the score sheet is genuinely good and already beats a paper sheet. The biggest *structural* limit across all four apps is that each stores its data in the browser's local storage on one device — nothing syncs, nothing is shared, and a cleared browser wipes history. Every recommendation below is shaped by that reality.

---

## 2. The gap vs. LaneTalk / OpenTalk

Those apps win on five things we don't have yet:

1. **A managed ball arsenal** — your bowling balls as first-class objects, with photos, specs, and per-ball performance.
2. **Shot-level detail** — not just "spare made/missed," but *which* leave, split vs. open, first-ball carry, and where the ball is leaving pins.
3. **Lane & condition context** — oil pattern, house, lane number, and a **practice vs. league vs. tournament** tag on every session.
4. **Trends over time** — average, high game/series, clean games, mark %, strike %, spare % by leave type — charted, not just listed.
5. **One synced profile** — your data follows you across devices and can be shared with the team.

---

## 3. Recommendations

### Priority 1 — Fix the foundation (data & sync)
Everything else compounds on this.

- **Move to one shared data model.** A single JSON schema (or a small hosted database) for `bowlers`, `sessions`, `games`, `frames`, `leaves`, and `balls`, so the score sheet, recap sheet, and season log all read/write the same source instead of four siloed local stores.
- **Add export/import to every app now, sync later.** Short term: a "Backup / Restore (JSON)" button so a wiped phone isn't a lost season. Medium term: a lightweight backend (e.g., a hosted store) so data syncs across phones and teammates see shared standings.
- **Tag every session: Practice / League / Tournament.** One dropdown unlocks filtered stats ("league average" vs. "practice average") across the whole app.

### Priority 2 — The ball arsenal (the marquee feature)
A dedicated **Arsenal** view where each ball is a card:

- **Identity & photo** — brand, model, weight, a photo (and optionally the drilled-layout diagram).
- **Specs** — coverstock, core type, RG / differential, factory finish, your surface (e.g., 2000 abralon), layout/pin distance, and drill date.
- **Per-ball stats** — games thrown, average with this ball, strike %, and spare-conversion % — so you can answer "which ball carries best on this pattern?"
- **Status** — in-bag / spare / retired, plus surface-maintenance log (last resurface, last deep-clean).

Then add a **"ball used" selector per game** in the score sheet so every shot rolls up to the right ball automatically.

### Priority 3 — Richer shot & leave tracking
Build on the pin-leave tracker that already exists:

- **Classify the leave automatically** — single-pin spare, multi-pin spare, **split** (e.g., 7-10, 4-6-7-10), washout — and report conversion % *by category*, not just overall.
- **First-ball stats** — strike %, **carry %** (how often a good pocket hit strikes), and a count of the most common leaves so you know what to practice.
- **Pin-deck heat map** — visualize which pins you leave most often. This is the single most "pro app" upgrade and a natural fit for the data you're already capturing.

### Priority 4 — Stats, trends & visualization
- A **dashboard** per bowler: rolling average, high game / high series, clean-game count, mark %, and trend lines over the season.
- **Charts** (a small chart library, no backend needed): average over time, strike % over time, spare conversion by leave type, per-ball comparison.
- **Personal records** auto-detected ("new high series: 425 → …").

### Priority 5 — League & team management
- Extend `season-log.xlsx` (or its successor) into a **multi-week league sheet**: weekly team scores, points won/lost, standings, and handicap that the recap sheet already knows how to compute.
- **Team head-to-head history** across the season, not just one night.
- **Poker tracker polish** — tie-break rules, a per-week winners list, and a running payout matrix (who owes whom if it ended today) so settling up is instant.

---

## 4. Suggested phasing

**Phase 1 — Don't lose data (1 small session).**
Add Backup/Restore (JSON) to the score sheets; add the Practice/League/Tournament tag; keep `season-log.xlsx` as the structured season store.

**Phase 2 — Arsenal + ball-aware scoring.**
Build the Arsenal view (photos + specs), add the "ball used" selector to games, and start rolling per-ball stats.

**Phase 3 — Shot intelligence.**
Auto-classify leaves/splits, add first-ball/carry stats, and the pin-deck heat map.

**Phase 4 — Dashboard & sync.**
Charts and personal records; then a shared backend so the team sees live standings across devices.

---

## 5. Quick wins I can do right now
- Add a **Backup/Restore (JSON)** button to both score sheets.
- Add a **Practice / League / Tournament** tag to the score sheet's session.
- Build a standalone **Arsenal** page (cards with photo + specs + per-ball stats) that saves like the other apps.
- Add a **"ball used"** picker per game so future sessions attribute shots to a ball.
- Add a **splits vs. spares** breakdown to the existing pin-leave summary.

Tell me which of these to start with and I'll build it without touching the visual design of the current apps.
