Four decisions that gate the entire migration. Each has a recommended path. Estimated time: 3 minutes.
Interactive form available: We’ve prepared a fillable decision form that captures your responses and posts them to Slack. Takes ~3 minutes.
The 5-tier system has a dead tier, 3 confirmed mismatches, and unnecessary complexity.
Real users blocked from content they paid for, or accessing content they shouldn’t.
Supabase view never emits level-3. It exists in config but not in production.
Paid products with no course context in RAG. Tier refactor simplifies future tagging.
| Course | ChromaDB Tier | Config Tier | Chunks | Impact |
|---|---|---|---|---|
| tnc-hhc | certified | level-2 | 7,821 | level-2 users BLOCKED from content they should access |
| autoimmune | level-1 | level-2 | 915 | level-1 users ACCESS content they shouldn’t |
| 10-steps | level-2 | level-1 | 470 | level-1 users BLOCKED from their content |
All 3 mismatches resolve automatically under the new model. All three courses become Student tier — any paid user can access them.
Member → Student → Certified. Simple, consistent, and immediately actionable.
| New Tier | Replaces | Rule | Products |
|---|---|---|---|
| Member | guest | Free / no purchase | 37 free products |
| Student | level-1 + level-2 + level-3 | Any paid product or bundle | ~66 paid products |
| Certified | certified | Certification product ownership | 2-3 products (pending Amy) |
Key design decision: Collapsing level-1/level-2/level-3 into Student means any paid user sees ALL paid content. This eliminates the source of all 3 existing mismatches and removes the “dead” level-3 tier.
Amy’s decisions flow through 6 system layers. Each layer must update before the next.
v_user_tier_calculation CASE statement → certified / student / memberv_course_tier_access + v_segment_bundle_course_map rebuilt for 3-tiercourse-mapping-v2.json tier definitions, standalone_tier, bundlesThese 4 files must deploy together — partial deployment breaks tier calculation.
| File | Key Change |
|---|---|
tier-service.js | TIERS array → [member, student, certified]; rewrite calculateTier() and getTierDisplayName() |
supabase-sync.js | bundleOfferMap: all level-3 entries → student |
chroma-client.js | queryWithAccess() auto-inherits from tier-service update |
context-builder.js | getMembershipContext() display strings; buildUpsellGuidance() 3-tier checks |
~17,000 chunks need access_tier remapped. Can lag behind code deploy.
| Old Value | New Value | Estimated Chunks |
|---|---|---|
| guest | member | ~4,400 |
| level-1 | student | ~1,800 |
| level-2 | student | ~1,500 |
| level-3 | student | minimal |
| certified | certified (unchanged) | ~10,000 |
~2-3 days of engineering after Amy’s decisions are confirmed. Layers execute sequentially.
Downstream impact: The G-Drive ingestion pipeline (CSA Handoff #2) depends on this refactor completing. New ingested content needs the 3-tier metadata schema to be live before it can be tagged correctly.