{
  "id": "2026-05-06-b2bea-org-production-readiness-gap-register-e725ae08a1",
  "scope": "redkey",
  "source_of_truth": "repo",
  "source_path": "docs/specs/2026-05-06-b2bea-org-production-readiness-gap-register.md",
  "source_kind": "markdown",
  "visibility": "internal",
  "renderer_id": "design_doc.dreamborn-forge.generated.v1",
  "design_system": "dreamborn-design-system:forge",
  "generated_at": "2026-05-09T13:00:55.714Z",
  "artifact_type": "design_doc",
  "schema_version": "design_doc.generated.v1",
  "title": "B2BEA.org V1 Production Readiness Gap Register",
  "summary": "B2BEA.org V1 Production Readiness Gap Register Source of record: RedKey Supabase Studio artifact. Project: B2BEA.org Rebuild Project ID: a820dd0c 6cef 4133 bfbd d802fd806e44 Artifact: production readiness gap register Artifact ID: 80328220 3deb 4cf9 a68f d440b41a38da Version: 3 Status: draft Updated: 2026 05 06T20:00:09.174+00:00 Scope Policy V1 means produc...",
  "format_source": "markdown",
  "sections": [
    {
      "title": "B2BEA.org V1 Production Readiness Gap Register",
      "level": 1,
      "body": "Source of record: RedKey Supabase Studio artifact.\n\n- Project: `B2BEA.org Rebuild`\n- Project ID: `a820dd0c-6cef-4133-bfbd-d802fd806e44`\n- Artifact: `production-readiness-gap-register`\n- Artifact ID: `80328220-3deb-4cf9-a68f-d440b41a38da`\n- Version: `3`\n- Status: `draft`\n- Updated: `2026-05-06T20:00:09.174+00:00`"
    },
    {
      "title": "Scope Policy",
      "level": 2,
      "body": "V1 means production-ready. Core production capability groups are in scope unless explicitly removed during review.\n\nThe internal admin model can stay light because core site changes are handled by Brett, Sarah, and Justin. The site still needs strong production controls around public publishing, external self-service, entitlements, billing, surveys, jobs, learning access, vendor data, company workspaces, auditability, and rollback."
    },
    {
      "title": "Decisions",
      "level": 2,
      "body": "| ID | Topic | Decision |\n|---|---|---|\n| `DEC-001` | Public practitioner company profiles | Exclude from V1. Company workspace is private only; vendor profiles remain public. |\n| `DEC-002` | Company-created jobs | Require B2BEA admin review before public publishing in V1. |\n| `DEC-003` | Sanity versus Supabase source of truth | Sanity owns editorial/public content. B2BEA Supabase owns application and operational data, including people, company, vendor, membership, course, survey, job, event, analytics, and notification records. |\n| `DEC-004` | Notifications | V1 is email-first with an internal notification event log. In-app notifications are designed for later unless a surface explicitly needs them. |\n| `DEC-005` | CRM source of truth | HubSpot is the primary CRM for leads, pipeline, sales activity, and renewals. B2BEA Supabase owns website profiles and operational entities. |\n| `DEC-006` | Vendor and company analytics exports | V1 allows bounded own-account exports only. No raw platform-wide data, cross-account comparisons, or sensitive user-level data unless explicitly consented and permitted. |"
    },
    {
      "title": "Severity Legend",
      "level": 2,
      "body": "- `P0`: Blocks production launch or creates unacceptable public, security, or data risk.\n- `P1`: Required for V1 quality; launchable only with a deliberate temporary workaround.\n- `P2`: Important polish or operational maturity after core production flows are stable."
    },
    {
      "title": "Gap Register",
      "level": 2,
      "body": "| ID | Domain | Severity | Current State | Production Requirement | Next Artifact |\n|---|---|---:|---|---|---|\n| `GAP-001` | Design System And UI Contracts | P0 | Lovable-system styles exist as an overlay, but page families still need a hardened reusable contract. | Shared tokens, typography scale, page headers, fields, tables, pills, buttons, cards, states, and responsive rules. | `design-system-spec` |\n| `GAP-002` | Publishing Model | P0 | Publishing spans Eleventy, Sanity, static pages, and custom landing/resource needs without one documented lifecycle. | Two explicit paths: custom HTML import and Sanity standard page creation, each with owner, preview, publish, archive/rollback, analytics, SEO, and URL behavior. | `publishing-model-spec` |\n| `GAP-003` | Auth, External Authorization, And Entitlements | P0 | Auth exists and role checks are present, but critical authorization and entitlement behavior needs a target server-side model. | Members, vendors, company admins, employees, and anonymous users have explicit access rules enforced server-side. | `permission-lifecycle-matrix` |\n| `GAP-004` | Data Ownership And Lifecycle States | P0 | Data is spread across Supabase, Sanity, and static JSON with inconsistent lifecycle states. | Every production record has owner, source of truth, status lifecycle, timestamps, edit rules, visibility rules, and archive/delete behavior. | `data-model-spec` |\n| `GAP-005` | Surveys And Assessments | P0 | Maturity assessment exists, but there is no generalized survey creation, taking, reporting, and display system. | Admins create/publish/archive surveys; public/member/company users take them; admins display/export/analyze results. | `survey-system-spec` |\n| `GAP-006` | Forms And Intake | P1 | Individual intake/contact/application flows exist, but no reusable form builder/intake review capability. | Admins create/publish forms; users submit; submissions are reviewable, assignable, exportable, and tied to source/context. | `intake-form-spec` |\n| `GAP-007` | Practitioner Company Workspace | P0 | Company workspace is a target surface but not implemented as a first-class portal. | Practitioner companies manage employees/seats, grant academy/careers access, view entitlements, and see team activity in a private workspace only. | `company-workspace-spec` |\n| `GAP-008` | Vendor Portal Commercial Workflow | P0 | Vendor portal has profile/content/analytics foundations; team, resources, courses, events, leads, and billing are incomplete. | Vendors manage membership/billing, team access, leads, sponsorships, submitted content/resources/courses/events, and analytics. | `vendor-portal-spec` |\n| `GAP-009` | Academy And Certification | P0 | Courses, modules, lessons, enrollment, and progress exist; certification and company assignment depth is missing. | Academy supports enrollment, company assignment, learning paths, quizzes/challenges, progress, certificates, and entitlement-aware access. | `academy-certification-spec` |\n| `GAP-010` | Events And Sponsorship | P1 | Event detail pages exist; full event operations and sponsor workflow are not mapped as production systems. | Admins manage events, speakers, sponsors, attendees, check-in, and exports; members register; vendors sponsor. | `event-sponsorship-spec` |\n| `GAP-011` | Editorial Workflow And Content Governance | P0 | Articles/resources/vendor content exist, but no complete editorial calendar, review, scheduling, SEO, and governance model. | Content creation, review, schedule, publish, archive, SEO, redirects, vendor submissions, and public page ownership are first-class workflows. | `editorial-workflow-spec` |\n| `GAP-012` | Jobs And Careers | P1 | Public jobs, admin jobs, scraping sources, and scraped-job review exist; company-owned job posting needs definition. | Jobs support internal creation, scraped review, company posting, publish/archive lifecycle, applications/intake, and reporting. | `careers-spec` |\n| `GAP-013` | Notifications | P0 | Flows imply notifications but there is no unified email/in-app notification contract. | Material lifecycle events send the right notifications with preferences, templates, delivery logging, and retry/error handling. | `notification-spec` |\n| `GAP-014` | Reporting And Analytics | P0 | Page views and downloads are tracked in places, and vendor analytics exist, but no unified reporting layer. | Admins, vendors, and companies view role-appropriate analytics for platform, membership, content, academy, surveys, vendors, and teams. | `analytics-reporting-spec` |\n| `GAP-015` | CRM And Sales Operations | P1 | Membership, vendor, and lead-like workflows exist but are not consolidated as a CRM/sales pipeline. | B2BEA.org captures and routes leads/intake to HubSpot, which remains primary CRM for pipeline, sales activity, and renewals. B2BEA Supabase remains source of truth for profiles and operational site data. | `crm-sales-ops-spec` |\n| `GAP-016` | Security, Privacy, And Abuse Controls | P0 | Auth exists, but production abuse controls, PII rules, file/media handling, and sensitive action logging need explicit design. | Protected data and mutation paths have server-side checks, rate limits where needed, audit logs, privacy boundaries, secure media handling, and safe public rendering. | `security-privacy-spec` |\n| `GAP-017` | Operational Observability And QA | P0 | Tests and builds exist, but V1 needs readiness checks across routes, roles, integrations, and visual consistency. | Every V1 surface has acceptance criteria, test coverage, route QA, visual checks, error monitoring, deploy checks, and fallback behavior. | `qa-release-readiness-spec` |"
    },
    {
      "title": "`GAP-001` Design System And UI Contracts",
      "level": 3,
      "body": "Affected capabilities include `SystemRenderEmptyState`, `SystemRenderErrorState`, `SystemRenderLoadingState`, `PublicSearchSite`, and `AdminViewDashboard`.\n\nMissing work:\n\n- Design-system spec.\n- Component inventory.\n- Page template rules.\n- Regression screenshot checklist.\n\nDecision needed: confirm Lovable-system as the target design language and define which home, blog, and resource pages remain exceptions."
    },
    {
      "title": "`GAP-002` Publishing Model",
      "level": 3,
      "body": "Affected capabilities include `AdminOpenStudio`, `AdminCreateArticle`, `AdminScheduleArticle`, `AdminPublishArticle`, `AdminManageContentSEO`, and `AdminManageRedirects`.\n\nMissing work:\n\n- Sanity page schema.\n- Custom HTML import spec.\n- Preview/publish workflow.\n- Redirect and SEO rules.\n- Rollback/archive behavior.\n\nDecision: Sanity owns editorial/public content. B2BEA Supabase owns operational/application data."
    },
    {
      "title": "`GAP-003` Auth, External Authorization, And Entitlements",
      "level": 3,
      "body": "Affected capabilities include `SystemAuthorizeByRole`, `SystemAuthorizeByEntitlement`, `PublicGateResourceByMembership`, `MemberAccessProResources`, and `CompanyGrantAcademyAccess`.\n\nMissing work:\n\n- Role/entitlement matrix.\n- Server-side guard pattern.\n- Membership, course, and resource entitlement rules.\n- Failure states.\n- Audit events.\n\nDecision needed: keep internal admin light, but decide external roles for member, pro member, vendor admin, vendor member, company admin, company employee, and author."
    },
    {
      "title": "`GAP-004` Data Ownership And Lifecycle States",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateCompany`, `AdminCreateVendor`, `VendorSubmitProfileUpdate`, `CompanyUpdateCompanyProfile`, and `AdminPublishOrArchiveJob`.\n\nMissing work:\n\n- Canonical entity inventory.\n- Supabase/Sanity ownership map.\n- Lifecycle state matrix.\n- Archive/delete rules.\n- Migration plan.\n\nDecision needed: decide source of truth per entity: people, organizations, vendors, pages, articles, courses, surveys, jobs, events, and resources."
    },
    {
      "title": "`GAP-005` Surveys And Assessments",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateSurvey`, `AdminPublishSurvey`, `PublicTakeSurvey`, `MemberTakeSurvey`, `CompanyAssignSurvey`, `AdminDisplaySurveyData`, and `AdminExportSurveyResponses`.\n\nMissing work:\n\n- Survey schema.\n- Question types.\n- Audience assignment.\n- Response capture.\n- Scoring and reporting.\n- Export.\n- Results display permissions.\n\nDecision needed: decide whether maturity assessment becomes the first survey type or remains a separate special flow."
    },
    {
      "title": "`GAP-006` Forms And Intake",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateForm`, `PublicSubmitForm`, `MemberSubmitForm`, `VendorSubmitForm`, and `AdminReviewFormSubmission`.\n\nMissing work:\n\n- Form schema.\n- Submission model.\n- Review queue.\n- Assignment/status.\n- Spam/rate controls.\n- Export.\n\nDecision needed: decide which existing forms should be migrated into the reusable system for V1."
    },
    {
      "title": "`GAP-007` Practitioner Company Workspace",
      "level": 3,
      "body": "Affected capabilities include `CompanyViewWorkspace`, `CompanyManageEmployeeSeats`, `CompanyInviteEmployee`, `CompanyGrantAcademyAccess`, `CompanyAssignCourseToEmployee`, and `CompanyViewEntitlements`.\n\nMissing work:\n\n- Company roles.\n- Seat model.\n- Employee invite/remove.\n- Academy assignment.\n- Career permissions.\n- Entitlement display.\n- Team analytics.\n\nDecision: public practitioner company profiles are not V1. Company workspace is private only; vendor public profiles remain V1."
    },
    {
      "title": "`GAP-008` Vendor Portal Commercial Workflow",
      "level": 3,
      "body": "Affected capabilities include `VendorManageMembershipBilling`, `VendorManageTeamMembers`, `VendorViewLeads`, `VendorManageResources`, `VendorManageCourses`, and `VendorManageEvents`.\n\nMissing work:\n\n- Vendor membership lifecycle.\n- Billing integration decision.\n- Team roles.\n- Lead model.\n- Sponsorship workflow.\n- Resource, course, and event submission.\n\nDecision needed: decide what vendor self-service should be direct versus reviewed by B2BEA admin."
    },
    {
      "title": "`GAP-009` Academy And Certification",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateCourse`, `AdminEnrollLearner`, `AdminCreateCertification`, `AdminIssueCertificate`, `CompanyAssignLearningPath`, and `MemberViewCertificate`.\n\nMissing work:\n\n- Certification schema.\n- Learning path model.\n- Quiz/challenge grading rules.\n- Certificate issue/share flow.\n- Company assignment flow.\n- Progress reporting.\n\nDecision needed: decide which certification products are V1 and what completion criteria issue certificates."
    },
    {
      "title": "`GAP-010` Events And Sponsorship",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateEvent`, `AdminManageEventSpeakers`, `AdminManageEventSponsors`, `MemberRegisterForEvent`, and `VendorSponsorEvent`.\n\nMissing work:\n\n- Event schema.\n- Registration flow.\n- Speaker/sponsor models.\n- Check-in.\n- Exports.\n- Vendor sponsorship portal flow.\n\nDecision needed: decide if event registration/payment is native V1 or linked to a third-party platform."
    },
    {
      "title": "`GAP-011` Editorial Workflow And Content Governance",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateArticle`, `AdminScheduleArticle`, `AdminReviewVendorContent`, `AdminApproveVendorContent`, and `VendorSubmitSponsoredContent`.\n\nMissing work:\n\n- Editorial status lifecycle.\n- Review queue.\n- Vendor submission mapping.\n- Scheduled publish.\n- SEO fields.\n- Redirect manager.\n- Archive rules.\n\nDecision needed: decide whether vendor submissions create Sanity drafts, Supabase records, or both."
    },
    {
      "title": "`GAP-012` Jobs And Careers",
      "level": 3,
      "body": "Affected capabilities include `AdminCreateJob`, `AdminReviewScrapedJob`, `CompanyCreateJobPosting`, `CompanyUpdateJobPosting`, and `CompanyViewCareerEngagement`.\n\nMissing work:\n\n- Company job ownership.\n- Moderation rules.\n- Application routing.\n- Career activity model.\n- Scrape operations controls.\n- Reporting.\n\nDecision: company-created jobs require B2BEA admin review before public publishing in V1."
    },
    {
      "title": "`GAP-013` Notifications",
      "level": 3,
      "body": "Affected capabilities include `SystemSendEmailNotification`, `SystemSendInAppNotification`, `SystemNotifyClaimApproved`, `SystemNotifyCourseAssigned`, and `SystemNotifySurveyAssigned`.\n\nMissing work:\n\n- Notification event catalog.\n- Template ownership.\n- Email provider decision.\n- In-app notification model.\n- User preferences.\n- Delivery logs.\n\nDecision: V1 notifications are email-first with an internal notification event log."
    }
  ],
  "html_path": "artifacts/2026-05-06-b2bea-org-production-readiness-gap-register-e725ae08a1.html",
  "json_path": "artifacts/2026-05-06-b2bea-org-production-readiness-gap-register-e725ae08a1.json"
}