🃏 Poker Camera Trainer SaaS prototype

Scope: practice & physical-card training and hand review — point the camera at real cards in front of it, or upload a photo. Not a second-computer screen-scanning tool for live online real-money play.

1 · Camera & calibration zones

Accuracy strategy: cards go in the fixed zones below (hole cards bottom, board across the middle), camera top-down with even light. Each zone is read by its top-left corner crop (rank+suit corner) — that is what real recognizers read. Drag-free zones = no search problem, far fewer misreads.

Recognizer status: pluggable hook, manual-confirm implementation shipped. No ML model is bundled — nothing is auto-read until a recognizer (template matcher / on-device model / AI tier) is plugged into window.PokerRecognizer.recognize(). Sampling without one leaves slots uncertain (by design — we do not fake reads). The Simulate button feeds the demo hand through the voting machine so you can see acceptance work end-to-end (clearly a simulation, not ML).

1b · Auto-calibration Phase 2

One tap analyses the live frame: a quality gate from real pixels (blur / glare / brightness, each PASS/FAIL with guidance), and a CV zone proposal — bright-blob segmentation filtered by poker-card aspect ratio (1.30–1.50). AI proposes, CV verifies: the AI scene-proposal is a documented hook (disabled/mock, no key wired); the CV proposal below is fully local geometry. Accepting saves a scene profile (zones + scene fingerprint) that auto-loads next visit; if the scene drifts, you'll be told to recalibrate.

Quality gate: run Auto-Calibrate (it also refreshes live every ~2s while a source is on).
No proposal yet.

2 · Card slots — crops, corner zoom, threshold preview, confirmation

Tap a slot to select it, then set its card. Statuses: accepted uncertain manual empty. A recognizer reading is only accepted after the same card wins the required votes above the confidence bar.

2b · Self-learning deck Phase 2

The template recognizer only reads cards it has learned — from a card's corner (rank+suit) signature, stored in this browser. Two ways to teach it: enrollment below (show one card in the learn zone, confirm it, 5 frames are averaged into its template), and passive learning — every card you confirm/correct in a slot above is captured automatically. If two slots ever read the same card, the lower-confidence copy is flagged back to uncertain with a warning.

0 / 52 cards learned

3 · Money & decision

Set both hole cards (board optional: 0, 3, 4 or 5 cards), then calculate. Math runs in a Web Worker — the camera/UI never freezes.

4 · AI review tier disabled by default · mock mode

On demand only — sends the restored state JSON + per-slot corner crops (never raw video), and only when the state changed or a slot is low-confidence. Mock mode returns a structured mock review locally; wiring a real vision endpoint (e.g. Gemini via a key-holding proxy) is a separate approved step. See ai_review.js.


  

5 · This device — what the browser can actually use

Running diagnostics…

Short version: for this workload the browser is not the bottleneck — WebGPU + multi-threaded WASM reach most of the machine's GPU/CPU. Real limits and the native escape hatch are in the README.