B2C Post-Signup Workspace: Chat-first freemium¶
The post-signup home for b2c_user: the chat workspace, with a persistent quota pill and the freemium limits wired visibly into the chat shell so a returning user always lands on a live surface instead of a blank dashboard. Generated artifacts preview at full fidelity; only the download is gated.
Superseded by
student-guided-ux.md:/learn(a Brainly-style intent grid) is now the post-login default for learners, and chat is reached via intents rather than as the front door. The quota-pill and paywall mechanics below still apply to the chat surface, which still exists at/chat.
How it works¶
/dashboard conditionally renders <AITutorPage variant="b2c" seedTopic={user.signup_topic}> for b2c_user instead of redirecting. No second route change, so bookmarks survive a refresh and the signup-intent seed is passed as a prop consumed once. Other roles get the unchanged <DashboardPage />.
AITutorPage accepts variant?: 'b2b' | 'b2c' (default 'b2b') plus seedTopic / seedMode. B2C chrome (<QuotaPill>, <PaywallModal>, download-lock icons, the library-CTA sidebar tab) renders behind variant === 'b2c' guards; B2B surfaces (PublishModal, class-publish dropdown) render behind variant === 'b2b'. The page-refactor landing (0034b922) already cut AITutorPage to a ~295-line orchestrator, so the variant prop reuses those seams instead of a full <ChatWorkspace> extraction.
Surface behavior:
/dashboard (role === 'b2c_user')
โ <AITutorPage variant="b2c">
Persona empty state (from signup_topic/mode, falls back to user_type)
Mode chips (lock icon if Pro-only for this role)
Inline artifact cards โ "Download PPTX ๐" โ <PaywallModal>
Quota pill in header (colour-coded green/amber/red)
Right sidebar: [Chats] (recent 10) ยท [Library ๐] โ upgrade CTA card
Key rules:
- No B2C screen renders blank: every surface either generates value or makes the upgrade path legible.
- Full preview, gated export only. Artifacts render at 100% fidelity; only the download/export control is gated. No watermark, no blur.
- The Library tab is paid-only. Free users see a single upgrade-CTA card (it doesn't 404 or hide the tab); paid users see the artifact grid. Free users still get the
[Chats]tab (conversation history is a product necessity, not a library). - Payment is link-out-only here:
<PaywallModal>links to/pricing. Razorpay checkout is a later phase (see b2c-payments.md). - The quota pill and download-lock icons refetch on
auth.user.planchange, so an upgrade mid-session re-renders without a reload.
Where it lives¶
apps/web/src/pages/DashboardPage/index.tsx: conditional B2C render.apps/web/src/pages/shared/AITutorPage/:variantprop + B2C guards.apps/web/src/components/b2c/(orpackages/ui/):<QuotaPill>,<PaywallModal>, download-lock wrapper.apps/web/src/i18n/locales/en/b2c.json: all B2C chrome copy.