← poker-tutor
# The free tier: 100 hands, one habit, one drill
Ken, 2026-09-11: "a user can play 100 hands and get only their most common leak. Not the most
expensive, the most common. And then blur out all of the others, so that they can see that there
are other leaks to their game, but not what they are. And give them access only to the drill that
addresses that one leak." Applies to all four apps (this file is identical in both repos).
## The rule
- **Allowance: 100 hands, and the assessment's 40 count.** `FreeTrial.freeHands = 100`,
`FreeTrial.counts` returns true for every hand. Reason: "play 100 hands" is what he said; with
the assessment exempt the trial would be 140 and the assessment is itself 40 hands of the
product. The assessment is what produces the one habit, so a free user's natural path is: 40
assessment hands → their habit named → 60 more hands of table, drill or re-check → the paywall.
(Poker Tutor's earlier reasoning for 300 — the rating settles at 200 — is superseded: the free
product is no longer "a settled rating", it is "your most common habit".)
- **What a free user sees on the scorecard: exactly one row in full — the most common habit.**
"Most common" = the nameable habit with the most counted instances (`Tally.times`) among those
whose standing is `.costing` (i.e. it has cleared its own `minimumSample`, happens more than
`acceptableRate`, and at least 3 times). Not cost. Ties: the higher rate. If no habit has
cleared its floor yet, the row shows the most common habit under `.watching` **labelled as not
yet proved**, exactly as today's "where to look first" tier does — the naming rule does not
bend for the free tier.
- **Every other row is blurred**: present, same height, name and numbers unreadable (a blur +
redaction, not a hidden row), with one line above them: "N more habits are in your game. See
them all with a subscription." Tapping a blurred row opens the paywall.
- **Drills: only the drill for that one habit is enabled.** The Drills screen lists the others
locked (name blurred as on the scorecard, lock glyph); the re-check for the free habit works.
The Practice/Basics lesson linked to the free habit is open; other lessons stay readable (they
are a course, not a habit reveal) but their "practise" button is locked.
- **The assessment report**: same treatment — the one habit in full; "what is already clear" and
"where to look first" beyond it blurred with the count.
- **Home**: "What to work on" names the free habit; the rating card is unchanged (the rating is
not a habit reveal); the allowance notice says "N of your 100 free hands left".
- **Hands / replay / My game statistics**: unchanged and never gated (history is never gated —
standing rule). Per-hand reviews at the table keep working during the 100 hands; after the
allowance runs out no new hands are dealt (as now).
- **Paid**: everything, as now. The free habit is chosen live, so it can change as hands are
played; that is fine and honest.
## Mechanism
`PokerSession.FreeView` (pure, testable): given a `LeakScorecard` and an `Entitlement`, returns
`visibleLeakID: String?`, `hiddenCount: Int`, `isBlurred(leakID:) -> Bool`,
`mayDrill(leakID:) -> Bool`. Everything in PokerUI asks it; nothing else decides. A subscriber
gets `isBlurred == false` everywhere. Tests: most-common-not-most-expensive (a fixture with a
cheap habit seen 40 times and an expensive one seen 6 times picks the cheap one); a habit under
its floor is never the visible one while another has cleared its floor; the watching fallback is
labelled; blurred rows still count; drill gating; nothing gated for a subscriber; the tally
counts assessment hands now (and the test that asserted it did not is inverted).
Copy in Copy.swift (swept); the blur is a `.redacted(reason: .placeholder)` + `.blur` overlay
with an accessibility label "hidden until you subscribe" (screen readers must not read the name).
## Screenshots / listing
The store description already says the free allowance; `listing.md`/`listing-cash.md` and the
web pages say 300 — change to 100 and describe the one-habit free tier truthfully (the reviewer
notes too: the paywall is reachable from the blurred rows as well as Settings).