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

B2BEA.org V1 Publishing Model Spec

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

Planning Surface

Use this to decide what happens next.

Status

approved

open questions
  • Which exact existing page families become Sanity standard pages in V1?
  • Should custom HTML imports be checked into the site repo, stored as Supabase/Sanity assets, or both?
  • What is the minimum rollback behavior for static/custom pages on the first rebuild release?
  • Which standard templates are required before migration starts?
  • What exact GEO fields should appear in Sanity versus be generated at build time?
Agent Handoff
Start Here

publishing-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.

Open Questions
  • Which exact existing page families become Sanity standard pages in V1?
  • Should custom HTML imports be checked into the site repo, stored as Supabase/Sanity assets, or both?
  • What is the minimum rollback behavior for static/custom pages on the first rebuild release?
  • Which standard templates are required before migration starts?
  • What exact GEO fields should appear in Sanity versus be generated at build time?
Structured Payload

Machine-readable source fields

title

B2BEA.org V1 Publishing Model Spec

version

1

decisions
idtopicdecision
PUB-DEC-001Publishing pathsV1 supports two first-class page publishing paths: Sanity standard pages and custom HTML import.
PUB-DEC-002Source of truthSanity owns editorial/public content. B2BEA Supabase owns application and operational data. Code/import registry owns custom HTML page artifacts.
PUB-DEC-003Internal permissionsBrett, Sarah, and Justin can publish directly in V1; production control comes from preview, required fields, lifecycle states, audit events, and rollback/archive behavior rather than complex internal RBAC.
PUB-DEC-004Public company profilesVendor public profiles are V1. Practitioner company public profiles are excluded from V1; company workspace is private only.
PUB-DEC-005Page metadataEvery publishable page type must satisfy hardened SEO, GEO, and social metadata requirements before publish.
project id

a820dd0c-6cef-4133-bfbd-d802fd806e44

updated at

2026-05-06T20:04:59.971Z

artifact type

publishing-model-spec

approval rules
  • Core admins can publish Sanity standard pages directly after metadata validation.
  • Core admins can publish custom HTML imports directly after preview and metadata validation.
  • Vendor profile changes require B2BEA review before changing public projection.
  • Vendor content submissions require B2BEA review before publishing.
  • Company-created jobs require B2BEA admin review before public publishing.
  • Practitioner company workspace changes do not create public pages in V1.
next artifacts
  • design-system-spec
  • data-model-spec
  • surface-specs
  • custom-html-import-spec
  • sanity-schema-spec
  • seo-geo-social-spec
open questions
  • Which exact existing page families become Sanity standard pages in V1?
  • Should custom HTML imports be checked into the site repo, stored as Supabase/Sanity assets, or both?
  • What is the minimum rollback behavior for static/custom pages on the first rebuild release?
  • Which standard templates are required before migration starts?
  • What exact GEO fields should appear in Sanity versus be generated at build time?
publishing paths
pathpurposeexampleslifecyclev1 acceptancesource of truth
Sanity standard pageCreate normal structured public pages using reusable templates and Lovable design-system components.- standard landing pages - about/interior pages - editorial pages - resource body content - SEO-managed content pages- draft - preview - scheduled - published - archived- A non-engineer core admin can create a standard page from Sanity - The page renders with approved design-system templates - Draft/preview does not appear publicly - Published content has canonical URL, SEO metadata, GEO fields, and social preview metadata - Archived pages stop appearing in navigation/search indexesSanity
Custom HTML importBring in custom landing pages/resources when the page needs a bespoke design outside standard templates.- campaign landing pages - sponsored interactive resources - highly custom report/resource pages - special-purpose conversion pages- draft - preview - published - archived - rolled_back- Imported HTML cannot bypass site header/footer rules unless explicitly marked full-custom - Assets are local or approved external URLs - Page is addressable through a registry with owner/status - Rollback can restore prior published version or archive the page - Analytics, SEO, GEO, and social metadata hooks are presentCode/import registry plus repository artifact
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
url and slug rules
  • Every public page has one canonical URL.
  • Slug must be unique within its page family.
  • Changing a published slug requires redirect handling.
  • Custom HTML imports must declare their route in the page registry.
  • Archived pages should not appear in public navigation, search indexes, or sitemap output.
  • Vendor public profiles keep vendor-profile URL ownership in Supabase-backed routing.
  • Practitioner company public routes are not generated in V1.
page lifecycle rules
statepublicmeaningallowed roles
draftfalseEditable but not public.- b2bea_admin - author/vendor submitter where enabled
previewfalseViewable through protected preview URL for review.- b2bea_admin
submittedfalseExternal contributor/vendor/company has submitted for review.- vendor_admin - author - company_admin where enabled
in_reviewfalseB2BEA is reviewing public-facing or externally submitted content.- b2bea_admin
scheduledfalseApproved content scheduled for future publication.- b2bea_admin
publishedtrueVisible publicly or to its gated audience.- b2bea_admin
archivedfalseRemoved from public listing and navigation; may remain internally readable.- b2bea_admin
rolled_backfalsePrior version restored or current custom page removed from public route.- b2bea_admin
analytics requirements
  • page view tracking for public pages
  • resource download tracking
  • campaign/source attribution where available
  • vendor-owned content attribution where relevant
  • custom HTML pages must include standard analytics hook
  • privacy-safe export boundaries
source of truth boundaries
domainsourceexamples
Editorial/public contentSanity- standard pages - articles - blog/editorial content - resource/guide/report body copy - SEO/GEO/social fields - author editorial metadata
Custom page artifactsCode/import registry- custom HTML - page-specific CSS/JS - static assets - custom resource pages
Profiles and organizationsB2BEA Supabase- people - companies/organizations - vendors - vendor claims - vendor profile updates
Membership and entitlementsB2BEA Supabase- memberships - roles - seats - resource/course/event access
AcademyB2BEA Supabase unless later split- courses - modules - lessons - enrollments - progress - certificates
Surveys and formsB2BEA Supabase- survey definitions - questions - responses - forms - submissions - exports
Jobs and events operationsB2BEA Supabase- jobs - scraped jobs - event registrations - attendees - sponsors - check-in
CRM pipelineHubSpot primary- leads - opportunities - sales activity - renewals
Analytics and notificationsB2BEA Supabase plus provider logs- page views - downloads - notification event log - email delivery status
implementation implications
  • Create a page registry abstraction for custom HTML imports.
  • Define Sanity schemas for standard pages and editorial/resource content.
  • Create shared SEO/GEO/social metadata schema fields by page family.
  • Keep Supabase-backed operational pages separate from editorial page schemas.
  • Add a redirect model before allowing published slug changes at scale.
  • Design preview URLs and build/deploy behavior before coding publishing workflows.
  • Make SEO, GEO, social, and analytics fields required by page family, not optional afterthoughts.
hardened page metadata contract
rule

No public page publishes without complete SEO, GEO, social, indexing, and analytics metadata appropriate to its page family.

applies to
  • Sanity standard pages
  • custom HTML imports
  • vendor public profiles
  • person profiles
  • articles
  • resources
  • guides
  • reports
  • events
  • jobs
  • courses
  • survey landing/results pages where public
geo required
  • LLM answer summary
  • entity/topic tags
  • audience
  • industry/category context
  • key facts
  • source/author attribution
  • last reviewed date
  • content freshness rule
  • FAQ/question-answer fields where applicable
  • citation/source fields where applicable
seo required
  • meta title
  • meta description
  • canonical URL
  • index/noindex flag
  • robots behavior
  • slug
  • H1
  • primary topic/category
  • breadcrumb data where applicable
  • structured data type where applicable
  • sitemap inclusion flag
  • redirect rule when URL changes
social required
  • Open Graph title
  • Open Graph description
  • Open Graph image
  • Twitter/X card type
  • social share image alt text
  • LinkedIn-safe summary
  • fallback image by page family
validation rules
  • Metadata is validated at build/publish time
  • Preview surfaces show search/social preview before publish
  • Missing required metadata blocks publish for standard pages
  • Custom HTML imports must declare metadata in registry/frontmatter
  • Archive/noindex state updates sitemap and robots behavior
  • Private/preview pages must be noindex
page family overrides
  • Vendor profiles require vendor category, services, canonical vendor URL, and vendor logo/social image fallback
  • Resources/guides/reports require gated/free flag, sponsor/vendor attribution where applicable, and download analytics key
  • Jobs require job structured data when public and expiration/closed state handling
  • Events require event structured data and registration state
  • Courses require course structured data where public and entitlement/gating metadata