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.

Models and Rules
cards, hands, shoes, the table’s configuration
Round
one round with splits, surrender and peek
Strategy
decoded from Wizard of Odds charts
Counting
Hi-Lo running and true count, drills
Edge
Wizard of Odds table, one rule at a time
Explain
why a play is correct
Strategy trainer
learn, test, speed and weak-spot modes, graded decisions, the Why sheet, saved sessions
Counting and Edge
card-value, running-count and true-count drills; the house edge with its breakdown
Progress
session history, a strategy heat map, session detail
Shoe simulation
a dealt shoe played hand by hand, every decision graded, running- and true-count checks along the way
Launch prep
accessibility pass, App Store metadata, TestFlight
in progress, not on main
Fig. 1 What is on main. The package modules are built and tested, and every screen above them is built; launch prep is the last step.Drawn from BJSCore/Sources/BJSCore, BJS/Features and the README on main at df1854c, 7 November 2026.

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.

At a glance
Rule variants
H17/S17 · DAS · RSA · surrender · decks
Edge baseline
0.45% (8-deck S17 DAS 3:2)
Third-party deps
0
Tests
292 engine · 264 app · 7 UI
Rebuild
7 of 8 steps
Released
not yet