B2C Study Plan Gate + Coming-Soon Placeholder (superseded)¶
Status: superseded LNO: N. Historical record only. The gate this doc described no longer exists in the code. Owners: @bhanu49 Last updated: 2026-07-13 Roles affected: none (the described behavior is gone) Primary routes: none. The route this doc named,
/study-plan, never matched the shipped app; the real surface is/studyplan. Source of the ask: originally a freemium-monetization hypothesis (@bhanu49, 2026-06-22). Retired 2026-07-13. Related: Practice Hub & Study Plan: Freemium Gate, Study Plan
Superseded. Do not build against this doc.
Read Practice Hub & Study Plan: Freemium Gate for the current freemium model and Study Plan for the current surface.
What this doc described, and why it is gone¶
For a few weeks in mid-2026, the Study/Lesson Plan sidebar entry was the marquee Pro-gated artifact for B2C. A free learner who clicked it got a PaywallModal on the nav item and never reached a page; a Pro learner landed on a deliberate coming-soon placeholder, because the generative feature behind the entry was still unbuilt. The gate was implemented as a study_plan_pro_gate platform feature flag, a require_pro_plan FastAPI dependency in apps/backend/src/api/v1/b2c_deps.py, and a PLAN_UPSELL_HREF sentinel in the web nav constants (added in PR #1204).
All three are deleted. PR #1267 (b76c2bf3, "feat(b2c): freemium gating for study plan and practice hub") removed b2c_deps.py and the nav sentinel and moved gating inline plus into the backend. PR #1295 (5022111a) went further and removed the Pro lock on plan generation altogether: study_plan came out of B2C_PRO_LOCKED_FEATURES, and free learners now get one real active plan (FREE_MAX_ACTIVE_STUDY_PLANS = 1). A follow-up migration (ab01671bc34a) deletes the orphaned study_plan_pro_gate feature-flag rows. Verified: grep -rn "study_plan_pro_gate\|require_pro_plan\|PLAN_UPSELL_HREF" apps/backend/src apps/web/src returns nothing.
The placeholder page is gone too, along with the /study-plan path this doc named. The shipped route is /studyplan, and it renders the learner's real plans list.
Why the model was abandoned: a paywall on the nav item had to sell an artifact the learner had never seen. Giving a free learner one real, working plan sells the upgrade on volume (a second and third plan) instead of on an abstraction.
Note on PR refs: #1204, #1267 and #1295 are confirmed in git log. An earlier draft of this retirement cited #1268; no such commit exists in this repo's history, so treat that reference as unverified.