BJS is a native iOS trainer for players who want to get seriously better at blackjack: basic strategy drills, Hi-Lo counting, house-edge analysis, and a full card-counting simulation. It is an educational tool, not a casino, and its credibility rests on one thing: the numbers must be right.
Why it exists
Every other trainer I tried either taught generic strategy that was wrong for the table you were actually sitting at, or hid the math behind cartoons. BJS is rule-aware. You configure the exact rules of the casino you are playing (dealer hits or stands on soft 17, doubling after a split, resplitting aces, surrender, deck count, penetration) and strategy and edge calculations adjust to match.
The engine
All of the math lives in a pure Swift package with no UI dependency, so it is tested in isolation and can be reused by any front end. Strategy is decoded from Wizard of Odds' published basic-strategy charts and matches them cell for cell across 48 rule combinations, so the play shown is the one for the configured table, not one generic chart. Randomness is injectable, so shoe shuffles are reproducible in tests.
The edge calculator looks the configured rules up in Wizard of Odds' house-edge table for basic strategy dealt with a cut card. Two rules the table doesn't offer are derived: a 2:1 payout exactly, from the 3:2 and 6:5 figures, and early surrender from Wizard of Odds' rule-variation figures. The breakdown starts from the 8-deck baseline game, 0.45% for stand on soft 17, double after split and 3:2, and changes one rule at a time in a fixed order, so each rule's step is a real difference between two table entries and the steps add up to the total. It replaced an earlier model that added a fixed delta per rule, which was off by up to 0.4 percentage points; 38 reference cases from the Wizard of Odds calculator now check it, each to within 0.00001.
Status
The original app layer was discarded on 23 September 2026 and is being rebuilt on the package, in eight steps: engine completion, a design system, the strategy trainer, counting, the edge calculator, progress, shoe simulation, and launch prep with a TestFlight build last. The first seven are merged to main on GitHub. The engine gained a round engine with splits, surrender and peek, property tests over a hundred thousand seeded rounds, and strategy decoded from Wizard of Odds; the Felt design system has tokens with tested contrast pairs, shared components and a debug catalogue; the strategy trainer, the counting drills, the edge calculator and progress work end to end. The shoe simulator deals a shoe at a chosen penetration, 60 to 85 per cent, self-paced or at a dealer's pace of 0.5 to 2 seconds a card, grades every decision, and stops to check the running and true count. Launch prep is in progress on its own branch. As of Step 7 there are 292 engine tests, 264 app tests and 7 UI tests, with no third-party dependencies. Nothing has been released, on TestFlight or the App Store, and there are no screenshots here until the app is worth capturing.