Practitionist/familiarise_web
[Feature] Enterprise Recording Library - B2B Marketplace Expansion
开放
#367 创建于 2026年1月21日
Enterpriseappointmentsenhancementhelp wantedlaunch: scalepriority: highquestionstream
仓库指标
- 星标
- (4 个星标)
- PR 合并指标
- (PR 指标待抓取)
描述
Problem Statement
- Platform currently targets only B2C (individual consultees)
- Companies want to provide learning resources to employees at scale
- No team/organization management features
- Missing enterprise billing (invoicing, PO, GST compliance)
- No way to track team learning progress
Proposed Solution: Enterprise Recording Library
Core Concept: Companies pay monthly subscription for team access to curated consultant recordings.
Pricing Tiers
| Plan | Seats | Price/Month | Features |
|---|---|---|---|
| Team | 10 | ₹9,999 | Basic library access, member management |
| Business | 50 | ₹39,999 | + Admin dashboard, analytics, collections |
| Enterprise | Unlimited | Custom | + SSO, API, dedicated support, custom branding |
Technical Implementation Plan
1. New Data Models
model Organization {
id String @id @default(cuid())
name String
slug String @unique
logoUrl String?
industry String?
size OrgSize
billingEmail String
// Subscription
plan EnterprisePlan @default(TEAM)
seatsTotal Int
seatsUsed Int @default(0)
billingCycle BillingCycle @default(MONTHLY)
// Relations
members OrgMember[]
collections RecordingCollection[]
invoices OrgInvoice[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum OrgSize {
SMALL // 1-50 employees
MEDIUM // 51-200
LARGE // 201-1000
ENTERPRISE // 1000+
}
enum EnterprisePlan {
TEAM
BUSINESS
ENTERPRISE
}
enum BillingCycle {
MONTHLY
QUARTERLY
ANNUAL
}
model OrgMember {
id String @id @default(cuid())
organizationId String
userId String
role OrgMemberRole @default(MEMBER)
invitedAt DateTime @default(now())
joinedAt DateTime?
organization Organization @relation(...)
user User @relation(...)
progress MemberProgress[]
@@unique([organizationId, userId])
}
enum OrgMemberRole {
MEMBER // Can view recordings
MANAGER // Can view + see team analytics
ADMIN // Can manage members + collections
OWNER // Full access including billing
}
model RecordingCollection {
id String @id @default(cuid())
organizationId String
name String
description String?
isPublic Boolean @default(false)
organization Organization @relation(...)
recordings RecordingCollectionItem[]
createdAt DateTime @default(now())
}
model RecordingCollectionItem {
id String @id @default(cuid())
collectionId String
recordingId String
order Int @default(0)
collection RecordingCollection @relation(...)
recording Recording @relation(...)
}
model MemberProgress {
id String @id @default(cuid())
memberId String
recordingId String
watchedSeconds Int @default(0)
totalSeconds Int
completedAt DateTime?
lastWatchedAt DateTime @default(now())
member OrgMember @relation(...)
recording Recording @relation(...)
@@unique([memberId, recordingId])
}
model OrgInvoice {
id String @id @default(cuid())
organizationId String
invoiceNumber String @unique // Format: INV-ORG-YYYYMM-XXXXX
amount Int
currency String @default("INR")
status InvoiceStatus
dueDate DateTime
paidAt DateTime?
pdfUrl String?
// Tax compliance for Indian enterprises
gstNumber String?
panNumber String?
hsnCode String? // SAC 999293 for educational services
organization Organization @relation(...)
}
enum InvoiceStatus {
DRAFT
SENT
PAID
OVERDUE
CANCELLED
}
2. New API Routes
/api/organizations
POST - Create organization (owner becomes OWNER)
GET - List user's organizations
/api/organizations/[orgId]
GET - Get organization details
PATCH - Update organization (ADMIN+)
DELETE - Delete organization (OWNER only)
/api/organizations/[orgId]/members
GET - List members (all roles)
POST - Invite member (ADMIN+)
PATCH - Update member role (ADMIN+)
DELETE - Remove member (ADMIN+)
/api/organizations/[orgId]/collections
GET - List collections
POST - Create collection (ADMIN+)
/api/organizations/[orgId]/collections/[collectionId]
GET - Get collection with recordings
PATCH - Update collection (ADMIN+)
DELETE - Delete collection (ADMIN+)
/api/organizations/[orgId]/analytics
GET - Team learning analytics (MANAGER+)
/api/organizations/[orgId]/billing
GET - Billing info and invoices (OWNER only)
POST - Update billing details (OWNER only)
/api/enterprise/recordings
GET - Browse available recordings for enterprise purchase
POST - Add recording to organization library
3. New Pages/Components
Public Pages:
/enterprise - Enterprise landing page
/enterprise/pricing - B2B pricing comparison
/enterprise/demo - Request demo form
/enterprise/contact - Sales contact
Organization Dashboard:
/dashboard/org/[orgId] - Organization overview
/dashboard/org/[orgId]/members - Member management
/dashboard/org/[orgId]/members/invite - Invite flow
/dashboard/org/[orgId]/library - Recording library browser
/dashboard/org/[orgId]/collections - Curated collections
/dashboard/org/[orgId]/analytics - Learning analytics
/dashboard/org/[orgId]/billing - Invoices & billing
/dashboard/org/[orgId]/settings - Organization settings
Member View:
/dashboard/org/[orgId]/learn - Member's learning dashboard
/dashboard/org/[orgId]/learn/[recordingId] - Watch recording with progress
4. Key Features by Plan
| Feature | Team | Business | Enterprise |
|---|---|---|---|
| Recording library access | ✅ | ✅ | ✅ |
| Member management | ✅ | ✅ | ✅ |
| Custom collections | - | ✅ | ✅ |
| Progress tracking | - | ✅ | ✅ |
| Team analytics | - | ✅ | ✅ |
| Learning paths | - | ✅ | ✅ |
| SSO (SAML/OAuth) | - | - | ✅ |
| API access | - | - | ✅ |
| Custom branding | - | - | ✅ |
| Dedicated support | - | - | ✅ |
| PO-based billing | - | - | ✅ |
Implementation Phases
Phase 1: Foundation (4-6 weeks)
- Create Organization model and migration
- Create OrgMember model with roles
- Build organization creation flow
- Build member invitation flow (email-based)
- Create basic org dashboard layout
- Implement recording library access control
- Build member management UI
Phase 2: Collections & Progress (3-4 weeks)
- Create RecordingCollection model
- Create MemberProgress model
- Build collection creation/management UI
- Implement progress tracking (video position, completion)
- Build basic analytics dashboard
- Create member learning dashboard
Phase 3: Enterprise Features (4-6 weeks)
- SSO integration (SAML 2.0, OAuth)
- Advanced analytics (engagement, completion rates, trends)
- API for LMS integration
- Custom branding (logo, colors)
- Learning paths (ordered collections with prerequisites)
- Certificates on completion
Phase 4: Billing & Compliance (2-3 weeks)
- Stripe subscription billing integration
- Razorpay subscription for Indian payments
- GST-compliant invoice generation
- PO-based payment flow for large enterprises
- Seat usage tracking and alerts
- Plan upgrade/downgrade flows
Analytics Metrics to Track
Organization Level:
- Total members vs active members
- Seat utilization rate
- Total recordings accessed
- Average completion rate
Member Level:
- Recordings started vs completed
- Total watch time
- Completion streaks
- Most watched topics
Content Level:
- Most popular recordings
- Average watch percentage
- Drop-off points
- Re-watch rate
Revenue Model
Assumptions:
- Target: 100 organizations in Year 1
- Mix: 60% Team, 30% Business, 10% Enterprise
- Average revenue per org: ₹25,000/month
Year 1 Projection:
- 60 Team × ₹9,999 = ₹5,99,940/month
- 30 Business × ₹39,999 = ₹11,99,970/month
- 10 Enterprise × ₹75,000 avg = ₹7,50,000/month
- Total MRR: ₹24,49,910 (~$29,000)
Open Questions
-
How do we source recordings for enterprise library?
- Consultants opt-in their recordings?
- Platform licenses specific content?
- Revenue share model with consultants?
-
Should organizations be able to request custom recordings/sessions?
-
Do we need a separate "Enterprise Consultant" tier for consultants who want to sell to B2B?
-
How do we handle recordings that span multiple topics/domains?
Success Metrics
- Organizations onboarded (target: 10 in first 3 months)
- Seat utilization rate (target: >70%)
- Recording completion rate (target: >40%)
- Net Promoter Score from L&D managers (target: >50)
- Expansion revenue (upgrades + seat additions)
Labels: feature, B2B, enterprise, marketplace