session_previewed
audit_session_previewed_demo_platform_showcase_2026_001_20260627083124541
demo_session: demo_session_demo_platform_showcase_2026_001
Demo Session Preview
This preview shows the exact production-shaped metadata, clock settings, routes, and database requirements needed before the demo session is written to the production database.
Demo Status
demo_draft
Batch ID
demo_platform_showcase_2026_001
Data Year
2025
Resolved Week
Week 1
Simulation Controls
Week 1
Clock Mode
manual
Profile
manual_only
Data Year
2025
Range
Week 1–18
These controls preview the future admin clock behavior only. Production scoring will read this campaign clock through the real scoring-period resolver.
Production routes this demo will use
Access Mode
Public demo access is allowed.
Mode
public
Invite Token
Not provided
Expires
2026-06-28T08:31:24.540Z
Create Boundary
This is the final boundary before demo creation becomes a write action. It remains preview-only until both the demo repository adapter and production service adapter are database-backed.
Endpoint
/api/demo/sessions/create
Method
POST
Can Create
No
Blocked until:
Create payload shape
{
"presetId": "public_platform_tour",
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"organizationId": "org_demo_platform_showcase_2026_001",
"fundraiserSlug": "demo-youth-football-club-2025-001",
"dataSource": "hydrated_nfl",
"dataYear": 2025,
"accessMode": "public",
"campaignTimeMode": "simulated",
"simulationProfile": "one_week_per_10_minutes"
} Controlled Write Boundary
This endpoint can create demo infrastructure rows and register their cleanup metadata only. It does not create fundraisers, organizations, cards, participants, packages, share links, payments, fulfillment, or prize records.
Endpoint
/api/demo/sessions/preview-create
Writes
4 demo tables
UI Button
Disabled
{
"confirmation": "CREATE_DEMO_INFRASTRUCTURE",
"presetId": "public_platform_tour",
"organizationName": "Demo Youth Football Club",
"campaignName": "Fantasy Football Cards Demo Fundraiser"
} Audit Boundary
6 events
Demo previews, create attempts, readiness checks, safety checks, lifecycle actions, and cleanup previews should be auditable before database-backed demo creation is enabled.
Total
6
Low
4
Medium
2
High
0
session_previewed
audit_session_previewed_demo_platform_showcase_2026_001_20260627083124541
demo_session: demo_session_demo_platform_showcase_2026_001
readiness_gate_evaluated
audit_readiness_gate_evaluated_demo_platform_showcase_2026_001_20260627083124541
demo_session: demo_session_demo_platform_showcase_2026_001
safety_report_evaluated
audit_safety_report_evaluated_demo_platform_showcase_2026_001_20260627083124541
demo_session: demo_session_demo_platform_showcase_2026_001
service_contracts_evaluated
audit_service_contracts_evaluated_demo_platform_showcase_2026_001_20260627083124541
demo_session: demo_session_demo_platform_showcase_2026_001
scoring_period_resolved
audit_scoring_period_resolved_demo_platform_showcase_2026_001_20260627083124541
campaign_clock: fr_demo_platform_showcase_2026_001
create_action_previewed
audit_create_action_previewed_demo_platform_showcase_2026_001_20260627083124541
demo_session: demo_session_demo_platform_showcase_2026_001
Safety Gate
This gate prevents demo creation from moving from preview to database writes until data, cleanup metadata, scoring period, repository, and production service boundaries are safe.
Demo data source is ready
2025 hydrated NFL data can power demo scoring previews.
Creation plan has cleanup metadata
52 demo metadata rows are planned.
Scoring period resolves cleanly
Demo resolves to 2025_week_01.
Repository writes are intentionally disabled
Safe for preview only. Database adapter must be wired before creating demo records.
Production services still required
Fundraiser, card, share, scoring, and leaderboard services must remain production-owned. Demo orchestration can only coordinate them.
Next action
Preview only. Wire schema, repository adapter, and production service calls before enabling create.
Service Boundary
noop
Demo creation must call real production services for organizations, URL reservations, fundraisers, campaign clocks, packages, participants, cards, and share links. The current adapter is preview-only until those write boundaries are explicitly wired.
organization
org_demo_platform_showcase_2026_001
organization_service.createOrganization
Organization service is not wired yet.
fundraiser_slug
demo-youth-football-club-2025-001
url_reservation_engine.reserveSlug
URL Reservation Engine write adapter is not wired yet.
fundraiser
fr_demo_platform_showcase_2026_001
fundraiser_service.createFundraiser
Fundraiser service write adapter is not wired yet.
campaign_clock
clock_fr_demo_platform_showcase_2026_001
campaign_clock_service.createClock
Campaign Clock service write adapter is not wired yet.
fundraiser_package
pkg_demo_platform_showcase_2026_001
package_service.createFundraiserPackage
Package service write adapter is not wired yet.
participant
8 participants
participant_service.createParticipants
Participant service write adapter is not wired yet.
card
40 cards
card_engine.createCards
Card Engine write adapter is not wired yet.
share_link
group + participant + card links
share_engine.createShareLinks
Share Engine write adapter is not wired yet.
Required Production Adapters
0/8 wired
These are the production service contracts that must be wired before demo creation can write real demo-scoped records.
Organization / Group Service
createOrganization
Creates the demo group as a production-shaped organization with demo audit fields.
URL Reservation Engine
reserveFundraiserSlug
Reserves the demo fundraiser slug through the same route/slug rules as real fundraisers.
Fundraiser Service
createFundraiser
Creates the fundraiser campaign with demo payment/prize handling disabled.
Campaign Clock Service
attachCampaignClock
Attaches manual/simulated clock metadata that scoring services can resolve.
Package/Card Allocation Service
createPackage
Allocates demo package/card capacity through production package rules without payment settlement.
Participant/Seller Service
createParticipants
Creates demo participants/sellers for participant Share Hubs and attribution.
Card Engine
createCards
Creates demo cards/entries using production card rules with prize eligibility disabled.
Share Engine
createShareLinks
Creates first-party group, participant, and card share links through the Share Engine.
Payload mapping
organization
Organization / Group Service · createOrganization
fundraiser_url_reservation
URL Reservation Engine · reserveFundraiserSlug
fundraiser
Fundraiser Service · createFundraiser
campaign_clock
Campaign Clock Service · attachCampaignClock
package_allocation
Package/Card Allocation Service · createPackage
participants
Participant/Seller Service · createParticipants
cards
Card Engine · createCards
share_links
Share Engine · createShareLinks
Safety Validation
Demo payloads must carry audit fields and must keep payment, prize eligibility, and fulfillment disabled before any create action can be enabled.
Payloads
8
Passed
53
Warnings
0
Failed
0
organization: isDemo
Payload includes isDemo.
organization: demoBatchId
Payload includes demoBatchId.
organization: demoSessionId
Payload includes demoSessionId.
organization: demoPurpose
Payload includes demoPurpose.
organization: demoExpiresAt
Payload includes demoExpiresAt.
organization: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
fundraiser_url_reservation: isDemo
Payload includes isDemo.
fundraiser_url_reservation: demoBatchId
Payload includes demoBatchId.
fundraiser_url_reservation: demoSessionId
Payload includes demoSessionId.
fundraiser_url_reservation: demoPurpose
Payload includes demoPurpose.
fundraiser_url_reservation: demoExpiresAt
Payload includes demoExpiresAt.
fundraiser_url_reservation: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
fundraiser: isDemo
Payload includes isDemo.
fundraiser: demoBatchId
Payload includes demoBatchId.
fundraiser: demoSessionId
Payload includes demoSessionId.
fundraiser: demoPurpose
Payload includes demoPurpose.
fundraiser: demoExpiresAt
Payload includes demoExpiresAt.
fundraiser: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
Fundraiser prize eligibility disabled
Demo fundraiser is not prize eligible.
Fundraiser payment mode is demo-only
Demo fundraiser bypasses payment settlement safely.
campaign_clock: isDemo
Payload includes isDemo.
campaign_clock: demoBatchId
Payload includes demoBatchId.
campaign_clock: demoSessionId
Payload includes demoSessionId.
campaign_clock: demoPurpose
Payload includes demoPurpose.
campaign_clock: demoExpiresAt
Payload includes demoExpiresAt.
campaign_clock: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
package_allocation: isDemo
Payload includes isDemo.
package_allocation: demoBatchId
Payload includes demoBatchId.
package_allocation: demoSessionId
Payload includes demoSessionId.
package_allocation: demoPurpose
Payload includes demoPurpose.
package_allocation: demoExpiresAt
Payload includes demoExpiresAt.
package_allocation: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
Package payment disabled
Demo package does not require payment.
Package fulfillment is virtual demo only
Demo fulfillment is virtual-only.
participants: isDemo
Payload includes isDemo.
participants: demoBatchId
Payload includes demoBatchId.
participants: demoSessionId
Payload includes demoSessionId.
participants: demoPurpose
Payload includes demoPurpose.
participants: demoExpiresAt
Payload includes demoExpiresAt.
participants: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
cards: isDemo
Payload includes isDemo.
cards: demoBatchId
Payload includes demoBatchId.
cards: demoSessionId
Payload includes demoSessionId.
cards: demoPurpose
Payload includes demoPurpose.
cards: demoExpiresAt
Payload includes demoExpiresAt.
cards: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
Cards are not prize eligible
40 demo cards are prize disabled.
share_links: isDemo
Payload includes isDemo.
share_links: demoBatchId
Payload includes demoBatchId.
share_links: demoSessionId
Payload includes demoSessionId.
share_links: demoPurpose
Payload includes demoPurpose.
share_links: demoExpiresAt
Payload includes demoExpiresAt.
share_links: demoDeleteAfterAt
Payload includes demoDeleteAfterAt.
Production Payloads
8 payloads
These payloads show what the demo orchestration layer should send to real production services when database writes are enabled.
{
"payloadType": "organization",
"organizationId": "org_demo_platform_showcase_2026_001",
"organizationName": "Demo Youth Football Club",
"status": "active",
"visibility": "public_demo",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
} {
"payloadType": "fundraiser_url_reservation",
"ownerType": "fundraiser",
"ownerId": "fr_demo_platform_showcase_2026_001",
"requestedSlug": "demo-youth-football-club-2025-001",
"reservedPath": "/fundraisers/demo-youth-football-club-2025-001",
"reservationPurpose": "demo_fundraiser",
"status": "reserved",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
} {
"payloadType": "fundraiser",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"organizationId": "org_demo_platform_showcase_2026_001",
"fundraiserSlug": "demo-youth-football-club-2025-001",
"campaignName": "Fantasy Football Cards Demo Fundraiser",
"packageId": "kickoff-250",
"status": "draft",
"prizeEligible": false,
"paymentMode": "demo_no_payment",
"dataSource": "hydrated_nfl",
"dataYear": 2025,
"accessMode": "public",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
} {
"payloadType": "campaign_clock",
"campaignClockId": "clock_fr_demo_platform_showcase_2026_001",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"campaignTimeMode": "simulated",
"demoDataSource": "hydrated_nfl",
"demoDataYear": 2025,
"simulationProfile": "one_week_per_10_minutes",
"simulationStartedAt": "2026-06-27T08:31:24.540Z",
"simulationPaused": false,
"manualWeek": 1,
"startWeek": 1,
"maxWeek": 18,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
} {
"payloadType": "package_allocation",
"packageAllocationId": "pkg_demo_platform_showcase_2026_001",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"packageId": "kickoff-250",
"paymentRequired": false,
"fulfillmentMode": "demo_virtual_only",
"cardCount": 40,
"participantCount": 8,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
} {
"payloadType": "participants",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z",
"participants": [
{
"participantId": "participant_demo_platform_showcase_2026_001_01",
"displayName": "Demo Participant 1",
"status": "active",
"sellerCode": "DEMO01",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_02",
"displayName": "Demo Participant 2",
"status": "active",
"sellerCode": "DEMO02",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_03",
"displayName": "Demo Participant 3",
"status": "active",
"sellerCode": "DEMO03",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_04",
"displayName": "Demo Participant 4",
"status": "active",
"sellerCode": "DEMO04",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_05",
"displayName": "Demo Participant 5",
"status": "active",
"sellerCode": "DEMO05",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_06",
"displayName": "Demo Participant 6",
"status": "active",
"sellerCode": "DEMO06",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_07",
"displayName": "Demo Participant 7",
"status": "active",
"sellerCode": "DEMO07",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"participantId": "participant_demo_platform_showcase_2026_001_08",
"displayName": "Demo Participant 8",
"status": "active",
"sellerCode": "DEMO08",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
}
]
} {
"payloadType": "cards",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z",
"cards": [
{
"cardId": "card_demo_platform_showcase_2026_001_001",
"cardCode": "DEMO-0001",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_002",
"cardCode": "DEMO-0002",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_003",
"cardCode": "DEMO-0003",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_004",
"cardCode": "DEMO-0004",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_005",
"cardCode": "DEMO-0005",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_006",
"cardCode": "DEMO-0006",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_007",
"cardCode": "DEMO-0007",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_008",
"cardCode": "DEMO-0008",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_009",
"cardCode": "DEMO-0009",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_010",
"cardCode": "DEMO-0010",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_011",
"cardCode": "DEMO-0011",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_012",
"cardCode": "DEMO-0012",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_013",
"cardCode": "DEMO-0013",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_014",
"cardCode": "DEMO-0014",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_015",
"cardCode": "DEMO-0015",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_016",
"cardCode": "DEMO-0016",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_017",
"cardCode": "DEMO-0017",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_018",
"cardCode": "DEMO-0018",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_019",
"cardCode": "DEMO-0019",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_020",
"cardCode": "DEMO-0020",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_021",
"cardCode": "DEMO-0021",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_022",
"cardCode": "DEMO-0022",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_023",
"cardCode": "DEMO-0023",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_024",
"cardCode": "DEMO-0024",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_025",
"cardCode": "DEMO-0025",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_026",
"cardCode": "DEMO-0026",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_027",
"cardCode": "DEMO-0027",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_028",
"cardCode": "DEMO-0028",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_029",
"cardCode": "DEMO-0029",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_030",
"cardCode": "DEMO-0030",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_031",
"cardCode": "DEMO-0031",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_032",
"cardCode": "DEMO-0032",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_033",
"cardCode": "DEMO-0033",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_034",
"cardCode": "DEMO-0034",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_035",
"cardCode": "DEMO-0035",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_036",
"cardCode": "DEMO-0036",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_037",
"cardCode": "DEMO-0037",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_038",
"cardCode": "DEMO-0038",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_039",
"cardCode": "DEMO-0039",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"cardId": "card_demo_platform_showcase_2026_001_040",
"cardCode": "DEMO-0040",
"status": "unclaimed",
"source": "demo_generated",
"prizeEligible": false,
"dataYear": 2025,
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
}
]
} {
"payloadType": "share_links",
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z",
"shareLinks": [
{
"shareCode": "DEMO-demo_platform_showcase_2026_001",
"targetType": "fundraiser",
"targetId": "fr_demo_platform_showcase_2026_001",
"shareType": "group",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP01-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_01",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP02-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_02",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP03-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_03",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP04-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_04",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP05-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_05",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP06-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_06",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP07-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_07",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
},
{
"shareCode": "DP08-26_001",
"targetType": "participant",
"targetId": "participant_demo_platform_showcase_2026_001_08",
"shareType": "participant",
"channel": "direct",
"destinationUrl": "/fundraisers/demo-youth-football-club-2025-001",
"isDemo": true,
"demoBatchId": "demo_platform_showcase_2026_001",
"demoSessionId": "demo_session_demo_platform_showcase_2026_001",
"demoPurpose": "platform_showcase",
"demoExpiresAt": "2026-06-28T08:31:24.540Z",
"demoDeleteAfterAt": "2026-07-05T08:31:24.540Z"
}
]
} Production Service Plan
planned
This is the sequence the demo orchestration layer should call when database writes are enabled. Steps marked production service must use real platform service boundaries.
Participants
8
Cards
40
Metadata Rows
52
Create demo session
demo_session: demo_session_demo_platform_showcase_2026_001
demo_repository.createDemoSession
Create demo organization/group
organization: org_demo_platform_showcase_2026_001
organization_service.createOrganization
Reserve fundraiser URL
fundraiser_slug: demo-youth-football-club-2025-001
url_reservation_engine.reserveSlug
Create fundraiser campaign
fundraiser: fr_demo_platform_showcase_2026_001
fundraiser_service.createFundraiser
Attach campaign clock
campaign_clock: clock_fr_demo_platform_showcase_2026_001
campaign_clock_service.createClock
Create package/card allocation
fundraiser_package: pkg_demo_platform_showcase_2026_001
package_service.createFundraiserPackage
Create seeded participants
participant: 8 participants
participant_service.createParticipants
Create demo cards/entries
card: 40 cards
card_engine.createCards
Create first-party share links
share_link: group + participant + card links
share_engine.createShareLinks
Register demo metadata for safe cleanup
demo_record_metadata: 52 metadata rows
demo_repository.registerDemoRecord
Data Readiness
ready
2025 hydrated NFL data
Use the already-hydrated 2025 NFL data to replay realistic rosters, weeks, scoring periods, and leaderboards through production logic.
Source
hydrated_nfl
Year
2025
Can Create Demo
Yes
Production Scoring Boundary
2025_week_01
Demo timelines must resolve to a normal campaign scoring period before leaderboard/scoring services run. The demo clock controls the period; the real scoring and leaderboard engines should consume the resolved query.
Season Data
2025
Week
Week 1
Source
manual_admin_control
Scope
campaign
Leaderboard query shape
{
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"leaderboardScope": "campaign",
"dataSource": "hydrated_nfl",
"dataYear": 2025,
"nflSeason": 2025,
"scoringWeek": 1,
"scoringPeriodId": "2025_week_01",
"source": "manual_admin_control",
"demoDataQuery": {
"fundraiserId": "fr_demo_platform_showcase_2026_001",
"dataSourceId": "hydrated_nfl_2025",
"source": "hydrated_nfl",
"year": 2025,
"scoringWeek": 1,
"scope": "campaign",
"requiredCapabilities": [
"player_pool",
"weekly_stats",
"scoring_replay",
"leaderboard_replay"
]
}
} Database Write Boundary
noop
Demo write adapters are intentionally no-op until the schema is migrated and production safeguards are confirmed.
demo_session
demo_session_demo_platform_showcase_2026_001
Demo session database writes are not wired yet.
campaign_clock
clock_fr_demo_platform_showcase_2026_001
Campaign clock database writes are not wired yet.
Database Tracker
These fields and tables are required before demo creation writes to the production database.
demo_audit_events
Audits demo previews, create attempts, readiness checks, safety checks, scoring-period resolution, lifecycle actions, and cleanup previews.
demo_audit_event_idevent_typedemo_batch_iddemo_session_idactor_user_idriskentity_type demo_lifecycle_events
Audits demo activation, pause, resume, reset, expire, archive, and delete actions.
demo_lifecycle_event_iddemo_session_iddemo_batch_idaction_typesource_statustarget_statusactor_user_id demo_invites
Stores invite-only demo access tokens for prospects, investors, staff training, and sales walkthroughs.
demo_invite_iddemo_session_iddemo_batch_idinvite_token_hashemailaccess_modemax_uses demo_data_sources
Tracks hydrated, synthetic, and replay data sources available to demo campaigns.
demo_data_source_idsourcedata_yearstatusrecommendedcapabilities_jsondescription demo_record_metadata
Tracks every production-shaped demo record by batch/session for safe cleanup.
demo_record_iddemo_batch_iddemo_session_identity_typeentity_iddemo_purposedemo_access_mode demo_sessions
Represents a public, invite-only, staff, investor, or sales demo run.
demo_session_iddemo_batch_idpreset_idstatusaccess_modecreated_by_user_idcreated_by_type campaign_clocks
Allows real, manual, and simulated campaign time without changing scoring logic.
campaign_clock_idfundraiser_idcampaign_time_modedemo_data_sourcedemo_data_yearsimulation_profilesimulation_started_at Production table demo fields
is_demodemo_batch_iddemo_session_iddemo_purposedemo_expires_atdemo_delete_after_at Indexes to create
INDEX demo_audit_events_batch_idx (demo_batch_id)INDEX demo_audit_events_session_idx (demo_session_id)INDEX demo_audit_events_event_type_idx (event_type)INDEX demo_lifecycle_events_session_idx (demo_session_id)INDEX demo_lifecycle_events_batch_idx (demo_batch_id)INDEX demo_invites_session_idx (demo_session_id)UNIQUE demo_invites_token_hash_uidx (invite_token_hash)UNIQUE demo_data_sources_source_year_uidx (source, data_year)INDEX demo_record_metadata_demo_batch_id_idx (demo_batch_id)INDEX demo_record_metadata_entity_idx (entity_type, entity_id)INDEX demo_sessions_status_expires_idx (status, expires_at)INDEX campaign_clocks_fundraiser_id_idx (fundraiser_id)