Skip to content

Feature Log

Last updated: June 2026 (revised — messaging bugfixes, notification clear-all, sidebar/layout UX, stale file cleanup)


Stage 1 — Discovery (Assessment + Report)

Assessment (StartHerePage.tsx)

  • [x] 45-question psychometric questionnaire with reverse-scoring
  • [x] Adaptive question ordering via smartOrderQuestions()
  • [x] Early-completion signal via isAssessmentStable()
  • [x] Primary and secondary archetype identification
  • [x] Force type derivation (Flow / Catalyst / Anchor)
  • [x] Confidence score + energy orientation (Introvert / Extrovert split)
  • [x] Animated step transitions, 5 questions per page
  • [x] 6-month retake cooldown — users are locked from retaking for 6 months after first submission
  • Lock date and next unlock date shown on a friendly locked screen
  • Manual admin override: edit responses/{uid}.createdAt in MongoDB to 6+ months ago

My Report (MyReportPage.tsx) — 13 Phases

Free vs paid access: Phase 01 (Core Identity) is fully visible to all users. Phases 02–13 are shown as locked teaser cards to free users — each card shows 3–4 lines of preview content with an upgrade prompt. Full access to all 13 phases requires an active Explorer or Coach plan. This is enforced by the isPaid flag in MyReportPage.tsx which calls hasPaidAccess(profile) from journeyGates.ts.

  • [x] Phase 01 — Core Identity: Archetype radar chart, strength bars, clarity gauge, energy split
  • [x] Phase ◈ — Energy Pattern (Force Profile): Core energy, natural strengths, stress response, growth direction
  • [x] Phase ◈ — Natural Life Rhythm: Productivity style, best activities, burnout signals, balance strategy
  • [x] Phase 02 — Social Signature: Emotional style, communication, team role, team synergy, secondary dynamic
  • [x] Phase 03 — Performance Engine: Learning style, work habits, decision strategy, Power Moves
  • [x] Phase ◈ — Learning Mode Distribution: Learning profile, stacked bar chart, retention strategy, growth edge
  • [x] Phase 04 — Growth Roadmap: Blind spots, stress pattern, growth path
  • [x] Phase ◈ — Leadership Readiness Profile: Leadership radar, growth gap chart with baseline marker
  • [x] Phase ◈ — Leadership Signature & Evolution Path: Signature label, decision pattern, development focus, evolution by life stage
  • [x] Phase 05 — Strategic Direction: Future fields, skills to build, mentor guidance, ideal setting
  • [x] Phase 06 — Career Direction & Income Strategy: Financial profile, income style, wealth strategy, financial risk, personalised career context panels
  • [x] Phase 07 — Financial Growth Profile: Three smart money habits with archetype-specific rationale
  • [x] Phase 08 — Skill Development Path: Education direction, investment priority, key skills grid
  • [x] Phase 09 — Future Industry Alignment: High-growth industries, why-it-fits explanation, career alignment signal (0–100 score), emerging AI-era opportunity
  • [x] Phase 10 — Life Stage Financial Guidance: Stage insight, financial focus, key action, money rule (calibrated by age)
  • [x] Phase 11 — Archetype Economic Future Map: Economic role, automation risk badge, AI-era opportunities, future-proof skills
  • [x] Phase 12 — Insight Intelligence: Four personalised insight panels (self, direction, decision, evolution)
  • [x] Phase 13 — Committed Future Path: Static summary of the path chosen in Future Studio (shown when set)
  • [x] PDF export — each section on its own page via html2canvas-pro + jsPDF
  • All responsive Tailwind classes (md:text-*, lg:text-*) mapped to inline styles before capture
  • overflow: hidden removed from all cloned elements before capture to prevent content clipping
  • Encoding fix applied (April 2026): all U+FFFD replacement characters restored to correct Unicode (— – × ’ …)
  • [x] Print support
  • [x] "How to Read This Report" modal — 13-phase guide with tips per section
  • [x] Architecture Breakdown section (technical score view)
  • [x] Future Studio bridge card (context-aware: in-progress vs not-started)

Stage 2a — Know Self (Mind & Body / MindBodyPage.tsx)

Positioned between Discovery and Future Studio in both navigation and the Journey Progress Strip.

  • [x] Multi-section wellness inventory
  • [x] Wellness profile saved to MongoDB via API (wellnessProfile field on user doc)
  • [x] wellnessCompleted flag used by Journey Progress Strip and Dashboard NBA
  • [x] Dashboard "Next Best Action" surfaces "Complete Wellness Profile" after first paid sign-in

Stage 2b — Design (Design My Life / DesignMyLifePage.tsx)

6-step wizard: Assessment Status → Future Path → Life Wheel → Guided Ikigai → Life Blueprint → Strategic Audit

Step 1 — Assessment Status

  • [x] Journey gate check with status card
  • [x] Link to report

Step 2 — Future Path

  • [x] Three path cards: Acceleration / Mastery / Contribution
  • [x] Life Path Simulator (interactive archetype × path explorer)
  • [x] Path selection saved via API

Step 3 — Life Wheel (NEW — John 10:10 "Life in Full")

  • [x] 6 standardised life areas (consistent across all modules):
  • Faith & Purpose (violet)
  • Health & Vitality (emerald)
  • Family & Relationships (rose)
  • Career & Impact (blue)
  • Financial Freedom (amber)
  • Growth & Mindset (indigo)
  • [x] Phase 0 — Scoring: Card-by-card 1–10 slider with 380ms auto-advance, progress dot strip
  • [x] Radar chart displayed live in Phases 1, 2, and 3 (Recharts RadarChart)
  • [x] Phase 1 — Most Important: Pick 3 areas most important right now (chip grid)
  • [x] Phase 2 — Most Want to Improve: Pick 3 areas to grow in next 12 months (star marks important ones)
  • [x] Phase 3 — Focus Zone Reveal: Animated cards showing intersection of important ∩ improve
  • [x] Stored as lifeWheel: { scores, important, improve, focusZones } in MongoDB (via API)
  • [x] Focus zones flow into Guided Ikigai (violet context card) and Life Blueprint (⭐ Focus Zone badge on SMART cards)

Step 4 — Guided Ikigai

  • [x] Life Wheel focus zones context card at top (if set)
  • [x] Dark orienter card with "What is Ikigai?" explainer
  • [x] SVG Ikigai Venn diagram — 4 overlapping circles fill with colour as each field is typed
  • [x] Four colour-coded quadrant cards: passion (indigo) / profession (rose) / mission (emerald) / vocation (amber)
  • [x] Each card has "Ask yourself…" starter questions and archetype suggestion with "↺ Use this as my starting point" button
  • [x] Filled / empty badge per quadrant
  • [x] buildIkigaiStatement() — assembles statement from all four circles
  • [x] Ikigai statement builder with "Build Statement from 4 Circles" button
  • [x] Path Manifesto inspiration preview

Step 5 — Life Blueprint

Ikigai → Vision → Mission → SMART Goals chain-of-derivation flow

  • [x] Vision section: Ikigai seed card, 3 guided question chips, buildVisionFromIkigai() auto-fill
  • [x] Mission section: Locked Vision preview card, buildMissionFromVision() derive button
  • [x] Blueprint Strength radar + progress bars (Recharts) — shows 6-area SMART completion before cards
  • [x] SMART Goal builder per Life Area (6 areas):
  • Specific goal textarea (S)
  • Measurable anchor field — "I'll know I'm winning when..." (M)
  • Time-bound deadline field (T)
  • Relevance check linking back to vision language (R/A implicit)
  • SMART badge when all three fields are filled
  • ⭐ Focus Zone badge on areas matching Life Wheel focus zones
  • [x] Ikigai alignment score — computes overlap between vision/mission text and Ikigai answers

Step 6 — Strategic Audit

  • [x] SWOT grid (Strengths + Blind Spots pre-filled from archetype; Opportunities + Threats user-input)
  • [x] Strategic habits — select threat, name habit
  • [x] Capability gap field
  • [x] Save to MongoDB via API

Type Safety

  • [x] IkigaiFormState interface in framework.ts
  • [x] LifeWheelData interface in LifeDesignTypes.ts
  • [x] PillarsData uses 6 keys: faith, health, family, career, finances, growth
  • [x] timeBound + anchors fields on all 6 pillars

Stage 3 — Do (Daily Growth / DailyGrowthPage.tsx)

  • [x] 3 guided open questions + alignment score slider
  • [x] Saved to growthLoop.weeklyReflections[] in MongoDB (via API)

Habit Tracker Tab

  • [x] 7-day completion grid for each active habit
  • [x] 7-Day Consistency bar chart (Recharts BarChart) — colour-coded: green ≥ 80%, indigo ≥ 50%, grey > 0%
  • [x] Trophy button to mark habits mastered (archived with timestamp)
  • [x] Mastered habits archive section
  • [x] Ad-hoc habit addition alongside strategic habits from Future Studio

Cycle Reviews Tab (90-Day Sprint)

  • [x] Day 30 — Habit Check-in: 1–5 rating per strategic habit
  • [x] Day 60 — Capability Review: deeper progress assessment
  • [x] Day 90 — Alignment Audit: threat-mitigation effectiveness review
  • [x] SMART Goal Milestones tracker using the 6 standardised life areas
  • [x] Phase saves independently to MongoDB via API

Stage 4 — Fund (Money Plan / MoneyPlanPage.tsx)

5-step financial intelligence wizard: Money Personality → Financial Snapshot → Budget Blueprint → Financial Goals → Health Score

  • [x] Money Personality auto-generated from archetype
  • [x] Financial Snapshot (income, expenses, assets, liabilities, net worth, savings rate)
  • [x] Budget Blueprint with archetype-aligned budget rule + category editor
  • [x] Financial Goals with required monthly saving calculation
  • [x] Financial Health Score (composite: savings rate + debt ratio + emergency fund + investment presence)
  • [x] AI guidance (amber accent) with personality-aligned financial tips
  • [x] Step-by-step "How this works" inline guide text

Supplementary: Self Mastery (SelfMasteryPage.tsx)

Menu name: Self Mastery — Explorer-only, gated by canAccessSelfInquiry (Discovery completed + paid plan).

A structured 5-phase self-coaching session that guides users from raw observation to committed action. AI-assisted at every phase. Past sessions stored for continuity context on subsequent runs.

Phases

  • [x] Phase 1 — Data: Observe your own results — what surprised you from your personality data, and which habit you most want to stop avoiding
  • [x] Phase 2 — Reactions: Identify a real situation that triggered a strong reaction, what drained your energy, and explore an alternative response
  • [x] Phase 3 — Patterns: Select one of six recurring patterns (SIX_PATTERNS), describe a specific situation where it shows up, and articulate who you want to be instead
  • [x] Phase 4 — Reality: Name the gap, trace it back to the pattern, and test what becomes possible if you act differently
  • [x] Phase 5 — Action: Commit to two concrete micro-actions and select a guiding principle from PERSONAL_PRINCIPLES

AI Guidance

  • [x] AiGuide component present at every phase — prompts informed by buildSelfInquirySystemPrompt() + phase-specific context builders
  • [x] Full user personality profile (archetype, force, scores, blind spots) passed as system context
  • [x] buildDataPhaseContext() and buildRealityPhaseContext() inject report data into AI prompts
  • [x] buildActionSystemPrompt() used for Phase 5 AI coach

Session Storage

  • [x] Completed sessions saved via saveSelfInquirySession()PUT /api/users/me (selfInquirySessions[] field)
  • [x] Past sessions (most recent first) injected into subsequent session prompts for continuity
  • [x] Session history displayed in expandable list with date, pattern selected, and action commitments

Services

  • [x] src/services/selfInquiryService.tsPHASES, PHASE_META, SIX_PATTERNS, PERSONAL_PRINCIPLES, all prompt builders

Supplementary: People Blueprint (PeopleBlueprintPage.tsx)

Menu name: People Blueprint — Explorer-only, gated by canAccessCorporate (Discovery + Life Design completed + paid plan).

Users map their workplace relationships by archetype and relationship type, then receive personalised compatibility guides and access to an AI team coach that understands their entire org chart.

Relationship Management

  • [x] Add relationships by name, archetype (from CORPORATE_ARCHETYPES), and type (manager / peer / subordinate)
  • [x] Edit and delete existing relationships
  • [x] Direction indicator (⬆ Manager / ➡ Peer / ⬇ Report) with colour-coded pills

Per-Relationship Guide (computeCorporateGuide)

  • [x] Overall compatibility score (0–100) with colour-coded badge
  • [x] Dimension bars: expandable score + explanation per dimension
  • [x] Strengths, challenges, collaboration playbook, friction points, quick wins
  • [x] CorporateGuideResult shape: { overallScore, dimensions[], strengths[], challenges[], collaborationPlaybook, frictionPoints[], quickWins[] }

Group / Team Intelligence (computeTeamIntelligence)

  • [x] Team cohesion score across all relationships
  • [x] Archetype spread visualisation
  • [x] generateTeamNarrative() — prose summary of the full org chart for AI context
  • [x] GroupCompatibilityResult shape: { cohesionScore, archetypeSpread, narrative }

AI Team Coach

  • [x] AiGuide component with buildTeamCoachSystemPrompt() — aware of user's archetype + all relationships
  • [x] buildTeamSuggestedQuestions() — generates context-aware starter questions per relationship set
  • [x] buildSharedFromUserProfile() — constructs shared context object from UserProfile for AI system prompt

Data Persistence

  • [x] saveCorporateData()PUT /api/users/me (corporateRelationships[] field)
  • [x] Share link: getShareLink()GET /api/share-links/:token

Corporate Services

  • [x] src/services/corporateEngine.tscomputeCorporateGuide, computeTeamIntelligence, generateTeamNarrative, buildTeamCoachSystemPrompt, buildTeamSuggestedQuestions, buildSharedFromUserProfile, CORPORATE_ARCHETYPES, ARCHETYPE_DESCRIPTIONS

Cross-Module: Gamification System

An additive XP + levelling + badge layer built on top of the 5-stage journey. All data is stored on the user's MongoDB doc. Awards are fire-and-forget — if an XP write fails, the core save already succeeded.

Levels

Level Threshold Colour
✨ Stardust 0 XP slate
☄️ Comet 500 XP indigo
💫 Nova 1,200 XP violet
🌟 Supernova 2,100 XP amber

XP Rewards

Action XP
Complete assessment +500
Complete Future Studio +400
Complete Financial Plan +300
Complete Wellness Profile +200
Save a weekly reflection +100
Hit a streak milestone (7/14/21/30/60/90 days) +150
Complete weekly challenge +75

Badges (9 total)

Badge Earned when
🔓 Blueprint Unlocked Assessment completed (discoveryCompleted = true)
🧘 Self Aware Wellness Profile completed
🏗️ Life Designer Future Studio completed (lifeDesignCompleted = true)
⚔️ Week 1 Warrior First weekly reflection saved
🔥 Habit Builder 7-day habit streak reached
🏆 30-Day Champion First 30-day cycle review saved
🌈 Full Spectrum All 5 journey stages completed
📤 Sharer Report exported (PDF download)
🚀 Trailblazer Early adopter (account created before a fixed launch cutoff date)

Streak System

  • streakCount — current consecutive days with at least one habit completion
  • lastStreakDate — ISO date yyyy-MM-dd of last habit toggle
  • streakFreezes — 0 or 1 tokens; earned by saving a weekly reflection; consumed automatically if a day is missed

Weekly Challenges

  • Archetype-specific action sentence served each week from src/data/weeklyChallenges.json
  • Week is derived via getISOWeek() seeded by weekNumber % challenges[archetype].length — deterministic, no backend call
  • Completion stores growthLoop.weeklyChallenge: { weekKey, completed } on the user doc and awards +75 XP

Retroactive Backfill

  • On first load for existing users (xp === undefined), computeBackfill(profile) in UserProfileContext calculates XP, level, badges, and streak from completed stages, then writes them in a single API update — no re-login required

Admin Controls

  • Award XP modal — Zap button per user in AdminDashboard → Users tab; quick-select +100/250/500/1000 or custom amount; updates MongoDB and recomputes level
  • Award Badge modal — Gift button per user; admin picks from all 9 badges; skips duplicates
  • Overview stat cards — Total XP Awarded, Nova+Supernova count, Total Badges, Top Streak

Where Gamification Is Surfaced

Location What's shown
Landing page "Every Step Counts" section — levels, 9 badge grid, XP table
Dashboard XP progress bar + level + next-level target + badge strip + level legend
Profile Full "Achievements" badge grid (all 9, locked ones dimmed)
DailyGrowthPage › Overview Streak banner + weekly challenge card (marks complete, awards XP)
Report Share Identity button → PNG download (earns Sharer badge)
ArchetypeReveal Animated reveal screen post-assessment before redirecting to report

Cross-Module: Standardised Life Areas

All modules use the same 6 keys and labels everywhere:

Key Label Colour
faith Faith & Purpose Violet
health Health & Vitality Emerald
family Family & Relationships Rose
career Career & Impact Blue
finances Financial Freedom Amber
growth Growth & Mindset Indigo

Used consistently in: Life Wheel, Life Blueprint SMART goals, Growth Loop Cycle Reviews, Coach Portal, Shared View.


Cross-Module: Journey Progress Strip

5-stage horizontal strip shown on all main pages:

Stage Label Trigger
1 Discover discoveryCompleted (assessment taken)
2 Know Self wellnessCompleted (wellnessProfile exists)
3 Design lifeDesignCompleted flag
4 Do growthLoopActive (reflections or habits exist)
5 Fund financialPlanStarted (financialPlan exists)

Messaging (Messages.tsx)

  • [x] Polling-based real-time messaging between coach and client (conversations every 5 s, messages every 3 s)
  • [x] Left-panel conversation list; clicking a conversation opens the thread
  • [x] Active conversation set from ?conv=<uuid> URL param; auto-selects the first conversation if no param is present
  • [x] Conversation _id values are string UUIDs (server uses randomUUID()) — not MongoDB ObjectIds
  • [x] toDbId() helper on server handles both string and ObjectId formats for backward compatibility
  • [x] Notifications for new messages embed ?conv=<uuid> in the link to deep-link to the correct thread
  • [x] getOrCreateConversation() awaited before creating any coaching-related notification (prevents dead notification links)

Notifications (Layout)

  • [x] Bell icon in sidebar and top bar with unread count badge
  • [x] Fixed-position dropdown panel (avoids overflow/clipping on inner pages)
  • [x] "Mark all read" — marks every notification read server-side, clears badge
  • [x] "Clear all" button — calls DELETE /api/notifications, removes all notifications for the user, empties local state and closes panel
  • [x] Notification links for coaching events include ?conv=<uuid> for direct deep-link to the conversation thread

Layout & Navigation

  • [x] Collapsible sidebar on inner pages — toggle button collapses the sidebar to gain horizontal reading space
  • [x] Desktop header hidden on authenticated inner pages — top header bar shown on mobile/tablet only (avoids double navigation chrome)
  • [x] Layout.tsx is the single source for both the fixed sidebar notification panel and the top-bar notification dropdown
  • [x] Navigation sidebar groups (April 2026):
  • My Assessment (emerald): Start Here (/questionnaire), My Report (/report)
  • My Journey (indigo): Dashboard, Design My Life, Daily Growth
  • Your Wellbeing (teal): Mind & Body, Money Plan
  • Grow Deeper (violet): Self Mastery, People Blueprint, Relationship Lens, Team Report
  • Account, Coaching, Organisation, Platform Admin groups also present
  • [x] All nav display labels use plain everyday language — no product/technical terminology
  • [x] GROUP_DISPLAY map in Layout.tsx translates internal group keys to human-readable headings

Admin

  • [x] 10-tab AdminDashboard: Overview · Analytics · Engagement · Users · Profiles · Coaches · Workshops · Promo Codes · Feedback · Organisations
  • [x] User list and search
  • [x] Archetype distribution analytics (doughnut + bar charts)
  • [x] Assessment completion tracking
  • [x] Admin-initiated cooldown reset (LockOpen button per user, shows days-remaining badge)

  • [x] Phase 01 — Core Identity: Archetype radar chart, strength bars, clarity gauge, energy split

  • [x] Phase ◈ — Energy Pattern (Force Profile): Core energy, natural strengths, stress response, growth direction
  • [x] Phase ◈ — Natural Life Rhythm: Productivity style, best activities, burnout signals, balance strategy
  • [x] Phase 02 — Social Signature: Emotional style, communication, team role, team synergy, secondary dynamic
  • [x] Phase 03 — Performance Engine: Learning style, work habits, decision strategy, Power Moves
  • [x] Phase ◈ — Learning Mode Distribution: Learning profile, stacked bar chart, retention strategy, growth edge
  • [x] Phase 04 — Growth Roadmap: Blind spots, stress pattern, growth path
  • [x] Phase ◈ — Leadership Readiness Profile: Leadership radar, growth gap chart with baseline marker
  • [x] Phase ◈ — Leadership Signature & Evolution Path: Signature label, decision pattern, development focus, evolution by life stage
  • [x] Phase 05 — Strategic Direction: Future fields, skills to build, mentor guidance, ideal setting
  • [x] Phase 06 — Career Direction & Income Strategy: Financial profile, income style, wealth strategy, financial risk, personalised career context panels
  • [x] Phase 07 — Financial Growth Profile: Three smart money habits with archetype-specific rationale
  • [x] Phase 08 — Skill Development Path: Education direction, investment priority, key skills grid
  • [x] Phase 09 — Future Industry Alignment: High-growth industries, why-it-fits explanation, career alignment signal (0–100 score), emerging AI-era opportunity
  • [x] Phase 10 — Life Stage Financial Guidance: Stage insight, financial focus, key action, money rule (calibrated by age)
  • [x] Phase 11 — Archetype Economic Future Map: Economic role, automation risk badge, AI-era opportunities, future-proof skills
  • [x] Phase 12 — Insight Intelligence: Four personalised insight panels (self, direction, decision, evolution)
  • [x] Phase 13 — Committed Future Path: Static summary of the path chosen in Future Studio (shown when set)
  • [x] PDF export — each section on its own page via html2canvas-pro + jsPDF
  • All responsive Tailwind classes (md:text-*, lg:text-*) mapped to inline styles before capture
  • overflow: hidden removed from all cloned elements before capture to prevent content clipping
  • Encoding fix applied (April 2026): all U+FFFD replacement characters restored to correct Unicode (— – × ’ …)
  • [x] Print support
  • [x] "How to Read This Report" modal — 13-phase guide with tips per section
  • [x] Architecture Breakdown section (technical score view)
  • [x] Future Studio bridge card (context-aware: in-progress vs not-started)

Stage 2 — Design (Design My Life / DesignMyLifePage.tsx)

5-step wizard: Assessment Status → Future Path → Guided Ikigai → Life Blueprint → Strategic Audit

Design Step 1 — Assessment Status

  • [x] Journey gate check with status card
  • [x] Link to report

Design Step 2 — Future Path

  • [x] Three path cards: Acceleration / Mastery / Contribution
  • [x] Life Path Simulator (interactive archetype × path explorer)
  • [x] Path selection saved via API

Design Step 3 — Guided Ikigai

  • [x] Dark orienter card with "What is Ikigai?" explainer + live 4/4 circles counter
  • [x] Four colour-coded quadrant cards: passion (indigo) / profession (rose) / mission (emerald) / vocation (amber)
  • [x] Each card has "Ask yourself…" starter questions and archetype suggestion with "↺ Use this as my starting point" button
  • [x] Filled / empty badge per quadrant
  • [x] buildIkigaiStatement() — assembles statement from all four circles
  • [x] Ikigai statement builder with "Build Statement from 4 Circles" button
  • [x] Path Manifesto inspiration preview

Design Step 4 — Life Blueprint

Ikigai → Vision → Mission → SMART Goals chain-of-derivation flow

  • [x] Vision section: Ikigai seed card, 3 guided question chips, buildVisionFromIkigai() auto-fill
  • [x] Mission section: Locked Vision preview card, buildMissionFromVision() derive button
  • [x] SMART Goal builder per Life Pillar (5 pillars):
  • Specific goal textarea (S)
  • Measurable anchor field — "I'll know I'm winning when..." (M)
  • Time-bound deadline field (T)
  • Relevance check linking back to vision language (R/A implicit)
  • SMART badge when all three fields are filled

Design Step 5 — Strategic Audit

  • [x] SWOT opportunities + threats
  • [x] Strategic habits selection
  • [x] Capability gap field
  • [x] Save to MongoDB via API

Type Safety (Life Design Data)

  • [x] IkigaiFormState interface in framework.ts
  • Maps form field names (passion/profession/mission/vocation) to engine names (love/goodAt/worldNeed/paidFor)
  • [x] timeBound field added to pillars in UserProfile type

Stage 3 — Do (Growth Loop)

  • [x] Habit tracking with completion dates
  • [x] Weekly reflections
  • [x] Monthly reviews (30 / 60 / 90 day cycles)
  • [x] Per-habit progress rating (1–5 scale)
  • [x] Capability gap status tracking
  • [x] Trend indicator (upward / stable / downward)

Admin Dashboard

  • [x] 10-tab AdminDashboard: Overview · Analytics · Engagement · Users · Profiles · Coaches · Workshops · Promo Codes · Feedback · Organisations
  • [x] User list and search
  • [x] Archetype distribution analytics (doughnut + bar charts)
  • [x] Assessment completion tracking
  • [x] Admin-initiated cooldown reset (LockOpen button per user, shows days-remaining badge)
  • [x] Admin plan manager (inline dropdown to switch any user between Free / Explorer / Coach)
  • Promoting to coach: calls upsertCoachFromUser to create/reactivate coaches doc + refreshes Active Coaches list
  • Demoting from coach: calls deactivateCoach + removes from Active Coaches list
  • [x] Complimentary access grant — sets plan: 'explorer' with no planExpiresAt (permanent, no Stripe required)
  • [x] Admin report viewer — opens any assessed user's full paid-tier report in a new tab, with amber "Admin view" banner and ← Back to Admin link; PDF export works from admin view
  • [x] Coach applications management — full lifecycle: Pre-Approve / Reject / Delete Application; "Activate Coach" button appears only when status === 'payment_received'
  • [x] Active coaches roster with referral links, client counts, Grant/Revoke portal access per coach
  • [x] Workshop CRUD (create, edit, delete workshop events)
  • [x] Promo Codes tab — create free-access / percent-off / fixed-off codes; toggle active/inactive; delete
  • [x] Feedback tab — view all post-report feedback submissions with summary cards (% per rating), filter by rating, written note + UID + timestamp per entry
  • [x] Organisations tab — create orgs, assign invite codes, activate/deactivate org plans

Organisation Management

  • [x] Organisation data model — inviteCode, coachIds, plan, planExpiresAt, seatLimit
  • [x] createOrganisation(name) — generates unique 8-char invite code
  • [x] getOrganisationByInviteCode(code) — used at registration to auto-assign orgId + orgRole: 'member'
  • [x] updateOrgCoaches(orgId, coachIds[]) — whitelist which coaches serve this org
  • [x] activateOrgPlan(orgId, expiresAt?) — sets plan: 'explorer' on org doc + batch-updates all member user docs (Explorer access, covered by org subscription)
  • [x] deactivateOrgPlan(orgId) — clears org plan + batch-reverts all members to plan: 'free'
  • [x] assignMemberToCoach(memberUid, coachId) — Org Admin assigns a member to a specific coach
  • [ ] Org Admin dashboard UI (manage members, assign coaches, view reports)
  • [ ] Org invite link UI (show/copy link in AdminDashboard)
  • [ ] Auto-assign plan: 'explorer' to members who join an org that already has an active plan

Payments (Stripe)

  • [x] Stripe Checkout integration via VPS endpoint (POST /api/stripe/create-checkout-session)
  • [x] Explorer plan (RM 99, 1-year access) — yearly recurring Stripe subscription
  • [x] Coach plan (RM 599 year 1, RM 199/year renewal) — Stripe Subscription Schedule (two-phase: first year at RM 599, then RM 199 recurring)
  • [x] Post-payment plan activation via Stripe webhook (VPS /api/stripe/webhook)
  • [x] planExpiresAt field on UserProfile — payment gates check expiry
  • [x] Annual renewal extension via invoice.payment_succeeded webhook (subscription_cycle)
  • [x] Subscription cancellation handling via customer.subscription.deleted webhook — reverts to plan: 'free', clears coachAppStatus, deactivates coaches doc
  • [x] Promo code support: free-access bypass (skips Stripe), percent/fixed discount (Stripe coupon created on-the-fly)
  • [x] Coach referral code field on checkout — links new client to coach
  • [x] /payment/success confirmation page

Coaching & Community

  • [x] Verified coach network (/coaching) — browse coaches, filter by module, request to work together
  • Platform directory removed — page shows only "Our Coaches" network directly
  • Pricing badge on each coach card ($min–$max/session) when coach has set a price range
  • Personalised matching banner when coach's archetypes match the user's archetype
  • [x] Coach application form (/coach-apply) — requires auth + Discovery + Explorer/Coach plan (coaches must have personally completed the assessment and hold a paid plan before applying)
  • [x] Full coach onboarding payment gate — 5-step managed flow:
  • Coach applies via /coach-applycoachApplications doc created (status: 'pending')
  • Admin pre-approves → coachAppStatus: 'approved_pending_payment' set on user doc; "Coach Portal" nav link appears
  • Coach pays RM 599 via Stripe Checkout (shown as gate screen in /coach-portal)
  • Stripe webhook sets coachAppStatus: 'payment_received'; CoachPortal shows "Payment Confirmed!" screen; admin sees "Activate Coach" button
  • Admin activates → coaches doc created, plan: 'coach' set, coachAppStatus cleared; full portal unlocked
  • [x] coachAppStatus field on UserProfile ('approved_pending_payment' | 'payment_received') — cleared when portal is activated or access revoked
  • [x] Coach portal (/coach-portal) — payment gate screens + full tabbed interface when active
  • Payment gate screen (when coachAppStatus === 'approved_pending_payment'): Stripe checkout + promo code redemption
  • Payment confirmed screen (when coachAppStatus === 'payment_received'): teal confirmation with "what happens next" steps
  • Activating screen (when plan === 'coach' but no coaches doc yet): loading fallback
  • Full portal (when coaches doc exists): Clients / Requests / Team / Cohorts / My Profile tabs
  • My Profile tab: editable bio, title, archetypes, modules, location, session type, price range (min/max)
  • Requests tab: incoming client requests; send proposals with price, format, payment details; confirm payment received
  • Annual renewal reminder banner above tab bar: amber if within 30 days of anniversary, red if overdue, hidden otherwise (based on coach.createdAt)
  • [x] Coach referral system — unique referral code per coach; /register?ref=CODE auto-links new user
  • [x] Admin Active Coaches "Grant Portal Access" — creates coaches doc via upsertCoachFromUser + sets plan: 'coach'; refreshes coaches state
  • [x] Admin Active Coaches "Revoke Portal Access" — deactivates coaches doc via deactivateCoach + sets plan: 'explorer'; filters coaches from UI state
  • [x] Team reports (/team) — create/join a team, compare archetype distributions
  • [x] Workshops page (/workshops) — browse and register for events (gated behind paid plan)
  • [x] Read-only share link (/share/:token) — for mentors, parents, or employers
  • [x] "Find a Coach" and "Workshops" CTAs in Report — locked for free users with an "Upgrade" prompt

Post-Report Feedback

  • [x] Feedback widget at bottom of Report page (hidden in print/PDF, hidden for free users and admin view)
  • [x] Three rating options: 😄 Very helpful · 🙂 Somewhat helpful · 😕 Not helpful
  • [x] Optional free-text note field
  • [x] Saves to reportFeedback/{uid} — one doc per user, re-submitting overwrites
  • [x] Pre-loads existing feedback on mount (shows current rating if already submitted)
  • [x] Green confirmation shown after submit
  • [x] Viewable in AdminDashboard → Feedback tab with summary stats and filter

All user-facing text follows these rules:

  • Readable at age 15+
  • No psychology jargon, no corporate speak
  • Short sentences, everyday words
  • Strength/growth fields in framework.json are complete standalone sentences — not fragments for wrappers
  • No repetition between report phases
  • Professional but simple tone