B2BEA.org V1 Data Model Spec
internal prototype · canonical JSON + Dreamborn Forge HTML
internal generated
data-model-spec · supabase_json

B2BEA.org V1 Data Model Spec

data-model-spec artifact · for B2BEA.org Rebuild · status approved

Planning Surface

Use this to decide what happens next.

Status

approved

Agent Handoff
Start Here

data-model-spec artifact · for B2BEA.org Rebuild · status approved

Completion Evidence

No explicit evidence field yet. Require tests, screenshots, linked PRs, or reviewed outputs before marking complete.

Artifact Shape
  • title: B2BEA.org V1 Data Model Spec
  • version: 1
  • decisions: 5 items
  • next specs: 6 items
  • project id: a820dd0c-6cef-4133-bfbd-d802fd806e44
  • updated at: 2026-05-06T20:34:52.340Z
  • schema gaps: 10 items
  • source repo: /Users/justinking/Vaults/Projects/B2BEA-org-new
  • live domains: 9 items
  • artifact type: data-model-spec
  • source artifacts: 4 items
  • current row counts: jobs: number, events: number, people: number, courses: number, lessons: number, modules: number, vendors: number, page_views: number, memberships: number, scrape_runs: number, search_logs: number, b2bew_events: number
Structured Payload

Machine-readable source fields

title

B2BEA.org V1 Data Model Spec

version

1

decisions
idtopicdecision
DM-DEC-001Profiles and operational dataB2BEA Supabase owns people, organizations, vendors, memberships, seats, academy, surveys/forms, jobs/events operations, analytics, notifications, and operational records.
DM-DEC-002Editorial contentSanity owns standard public/editorial page content and SEO/GEO/social editorial fields.
DM-DEC-003CRMHubSpot is primary CRM for leads, pipeline, sales activity, and renewals. B2BEA Supabase may store intake/submission references and profile relationships.
DM-DEC-004Public company profilesVendor public profiles remain V1. Practitioner company public profiles are excluded from V1; company workspace is private only.
DM-DEC-005Legacy persons tableThe target model uses people. Any remaining persons references must be migrated or shimmed before production rebuild launch.
next specs
  • survey-system-spec
  • company-workspace-data-spec
  • entitlement-model-spec
  • notification-spec
  • sanity-schema-spec
  • media-asset-model-spec
project id

a820dd0c-6cef-4133-bfbd-d802fd806e44

updated at

2026-05-06T20:34:52.340Z

schema gaps
idareacurrentrequiredseverity
DM-GAP-001Legacy people/persons splitLive schema has people; current code still references persons in authbridge and older docs/plans.All production code uses people, or a compatibility view/shim is intentionally created and tested.P0
DM-GAP-002Generalized surveysassessment_sessions exists; no live surveys/survey_questions/survey_responses schema.Create survey definitions, questions, assignments/audiences, responses, reporting/export tables.P0
DM-GAP-003Reusable forms/intakeNo live forms/form_submissions schema.Create form definitions, submissions, status/assignment, spam/rate metadata, export support.P1
DM-GAP-004Private company workspaceorganizations and organization_members exist; company workspace seats/academy/careers entitlements are not first-class.Define company account, employee roles, seat lifecycle, benefit grants, team reporting, and assignment tables or extend existing membership_seats/organization_members.P0
DM-GAP-005Entitlement modelMembership tiers, memberships, seats, course access fields, vendor memberships exist separately.Unify access decisions for resources, courses, events, company seats, vendor portal, and pro membership.P0
DM-GAP-006Events model splitGeneric events and b2bew_* operational event tables coexist.Define boundary or consolidate: marketing event pages vs event operations/registration/sponsorship.P1
DM-GAP-007NotificationsNo notification event/preferences/delivery schema observed.Email-first notification event log, template key, recipient, delivery status, provider ids, retry/suppression.P0
DM-GAP-008Certification and learning pathsCourses/progress exist; no certificates/certifications/learning_paths observed.Certification requirements, issued certificates, learning paths, company assignments.P1
DM-GAP-009Media/storageCode references headshots storage and graphic_assets; live storage bucket list returned empty and graphic_assets is not in public OpenAPI schema.Verify storage buckets/RLS and define media asset source of truth for headshots, graphics, page/social images.P1
DM-GAP-010HubSpot handoffHubSpot is decisioned as CRM primary; live Supabase has people.hubspot_contact_id implied by migration but no visible CRM pipeline tables.Define lead capture/submission handoff, HubSpot ids, sync status, failure handling, and audit fields.P1
source repo

/Users/justinking/Vaults/Projects/B2BEA-org-new

live domains
nametables
Core identity and organizations- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Vendors and vendor portal- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Membership and entitlements- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Academy and learning- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Careers and scraping- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Events- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Search, analytics, content support- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Assessments and plan builder- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
Profile extensions and taxonomy support- item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object - item: rows: number, table: string, columns: object
artifact type

data-model-spec

source artifacts
versionartifact idartifact type
5c889a1fe-c3ce-4b0d-873c-af4e0ec8dfe4capability-map
380328220-3deb-4cf9-a68f-d440b41a38daproduction-readiness-gap-register
3dcfc8620-9f28-4019-aeeb-de3e279fd7a7permission-lifecycle-matrix
1a9636e2f-a4be-4586-82dd-c1a7bf3199fapublishing-model-spec
current row counts
jobs

30

events

46

people

6733

courses

9

lessons

40

modules

10

vendors

187

page views

6

memberships

1

scrape runs

124

search logs

36

b2bew events

3

target entity model
notesentitystatussource of truth
Large live table; target replaces any old persons usage.Person/ProfilecurrentB2BEA Supabase: people
Private company workspace can build on this, but seats/entitlements/roles need clearer company-workspace model.Organization/Companycurrent/needs_v1_extensionB2BEA Supabase: organizations + organization_members
Vendor profiles are public; vendor self-service tables exist but most are empty.VendorcurrentB2BEA Supabase: vendors + vendor_* tables
Needs unified entitlement model for pro, vendor, company seats, academy/careers/resources/events.Membership/EntitlementpartialB2BEA Supabase: membership_tiers, memberships, membership_seats, vendor_memberships
Needs certification, learning paths, company assignment, and stronger entitlement links.Course/Learningcurrent/partialB2BEA Supabase: courses/modules/lessons/progress
assessment_sessions exists; generalized survey/question/response/reporting tables do not.Survey/AssessmentpartialB2BEA Supabase target
No generalized forms/submissions model in live public schema.Forms/IntakemissingB2BEA Supabase target
Company-created job posting lifecycle needs explicit ownership/review fields.Jobs/Careerscurrent/partialB2BEA Supabase: jobs + scrape_*
Two event models exist and need consolidation or boundary definition.Events/Sponsorshipcurrent/splitB2BEA Supabase: events + b2bew_*
Supabase supports operational references, analytics, downloads, search embeddings.Editorial/Public PagesexternalSanity
B2BEA.org captures/routes lead intake; HubSpot owns pipeline and renewals.CRM Lead/OpportunityexternalHubSpot primary
No notification_events table observed in live schema.NotificationmissingB2BEA Supabase target plus email provider logs
Needs event taxonomy and bounded export rules.Analyticscurrent/partialB2BEA Supabase: page_views, resource_downloads, search_logs
implementation rules
  • Use B2BEA Supabase for operational product data and live user/workspace state.
  • Use Sanity for standard editorial/public content and page metadata authoring.
  • Use HubSpot for CRM pipeline, sales activity, renewals, and opportunity lifecycle.
  • Do not create public practitioner company profile routes or tables for V1.
  • Do not add new feature-specific one-off intake tables when a reusable forms model should cover the workflow.
  • Any member/vendor/company mutation requires ownership columns and server-side validation path.
  • Every public projection needs lifecycle/status fields and archive behavior.
  • Analytics exports must be bounded to own-account data by vendor/company role.
live supabase project
url host

czqxkykbhoyyjccckpqq.supabase.co

generated at

2026-05-06T20:32:33.020Z

schema source

PostgREST OpenAPI live schema

public table count

60

storage buckets observed

No items captured.