Hackathon Provenance & Commit Boundary (What Was Built During the Hackathon)

CreditRoll Live was built during the PayPal AI Hackathon submission period (November 2–5, 2026) on top of PayPal's official hackathon starter template (paypaldev/ag-paypal-demo):

  • Pre-Hackathon Official Starter Template (c2d80f0..5de114e, Sep 27 – Oct 12, 2026): Unmodified baseline commits from the official PayPal / AG Grid starter repository (https://github.com/paypaldev/ag-paypal-demo, authored by Eddie Jaoude and James Swinton-Bland), which provided the initial Next.js + AG Studio boilerplate.
  • Built During the PayPal AI Hackathon (ddad6e0..7ac8dbe, Nov 2 – Nov 5, 2026): 100% of CreditRoll Live was designed and implemented during the hackathon period, including:
    1. Deterministic End-Credits & Completion-Bond Reconciler (lib/credit-roll-reconciler.ts, lib/credit-roll-data.ts): Cut v1 → Cut v2 UNPAID_GHOST detection (Moth, Nyx Frame), stage-name-to-legal-contract identity resolution, integer-cent guardrail verification (discardedAiAmountOverrides), and NEEDS_REVIEW hold on ambiguous aliases (Alex Rivera).
    2. Three-Leg Live PayPal Sandbox Write & Read-Back Settlement Loop (lib/paypal.ts, lib/credit-roll-settlement.ts, app/api/credit-roll/*): Orders v2 CAPTURE + post-approval capture endpoint, Invoicing v2 + QR Code, and Batch Payouts v1 with PayPal-Request-Id idempotency and per-item transaction_status read-back.
    3. 35mm Screening Room Dossier & Two Custom AG Studio 3.0 Widgets (app/page.tsx, app/dossier.ts, app/dashboard/studio/credit-roll-widgets.tsx): Full "Midnight Cutting Table & Completion-Bond Ledger" UI redesign, CreditRollStageWidget (24fps sprocket-lit end-credits stage with widgetApi.toggleCrossFilter into AG Grid), and GhostPatchbayWidget (ivory tear-off voucher desk with live PayPal Sandbox read-back receipts).
    4. 21 Automated Acceptance & Live Sandbox Tests (tests/ticket-01..03*.test.ts) and 45-Second Launch Film (https://youtu.be/cE3SuZF7sic).

CreditRoll Live — Interactive Cinema End-Credits & PayPal Sandbox Settlement Studio

PayPal AI Hackathon 2026 Submission · Built with PayPal Sandbox REST API (Orders v2, Invoicing v2 + QR Code, Batch Payouts v1), AG Studio 3.0 Custom Widgets & Studio Agent Framework, Render Cloud, and Next.js 16.

CreditRoll Live transforms the rolling end-credits of an independent film, animation, or indie game inside AG Studio into an interactive, auditable financial map powered by AI reconciliation, deterministic financial guardrails, and live PayPal Sandbox money movement.


Visual Gallery (Midnight Cutting Table & Completion-Bond Ledger)

1. The Screening Room — /

The home page reads the Director's Cut end roll as a ledger. Every credit carries its locked contract fee, the two names cut from v2 burn through the 35mm gate as UNPAID_GHOST double exposures, and the figures — $7,050.00 executable, $3,600.00 ghost-cut retained, one alias on hold — are computed by the same reconciler that drives AG Studio.

CreditRoll Live Screening Room Home

2. The Cutting Room — /dashboard, Director's Cut v2 Cross-Filtered to Moth

The Credit Roll Stage widget sits on a flatbed: a sprocket-lit strip, an SMPTE cue ruler, and cyan workprint (Cut v1) and amber splice-tape (Cut v2) keys. Clicking Moth's ghost credit cross-filters the AG Grid ledger, the KPI tiles and the Filters panel to crew-moth, while the Ghost Patchbay beside it holds the integer-cent settlement voucher behind the producer's approval switch.

AG Studio Dashboard Credit Roll Stage

3. The Read-Back Desk — Live PayPal Sandbox After All Three Patchbay Actions

Captured from a live PayPal Sandbox run. With the producer's approval switch armed, the Patchbay fired all three writes and read each one back with GET:

  • Orders v2: Order 31S06570LA976733L created for the $25.00 supporter pack (CREATED with PayPal approve link + /api/credit-roll/supporter-order/capture post-approval capture).
  • Invoicing v2: Moth's ghost-cut invoice INV2-9GU9-DXP8-8H62-NW6W returned SENT for $1,400.00 with a scannable PayPal QR code.
  • Payouts v1: Batch 6GGPBS2JUKU5N for $7,050.00 read back with all four crew items (SFL2647CKM558, SLEL6648WMTKJ, L6X59RMS2X9VG, 237U4GLGNSF3E).

Ghost Patchbay Live PayPal Sandbox Receipts


Why CreditRoll Live?

Independent film, animation, podcast, and indie game productions treat their end-credits roll as a static thank-you screen while managing contributor contracts, stage-name mapping, cut-edit changes, fan support, and PayPal payouts in disconnected spreadsheets:

  1. The "Ghost Credit" Cut Trap: When a director trims a scene between the Rough Cut (v1) and the Director's Cut (v2), a sound designer (Moth) or VFX artist (Nyx Frame) whose cue was cut often vanishes from the v2 credit roll—even though their approved fixed-fee contract remains legally owed and unpaid (UNPAID_GHOST).
  2. Stage-Name & Alias Mismatches: Crew members credited under stage names (DJ Owl, Moth) or homonymous names (Alex Rivera) fail to match legal contract rosters, causing missed payouts or misdirected transfers.
  3. Batch Submission != Completed Settlement: Submitting a payout batch does not mean every contributor was paid; individual items can return SUCCESS, PENDING, UNCLAIMED, or FAILED on read-back.

Key Features

1. Two Native AG Studio Custom Widgets (app/dashboard/studio/credit-roll-widgets.tsx)

Registered via AG Studio's createWidgets API with full formatShape and ai metadata:

  • credit-roll-stage (Interactive Rolling Credit Roll Stage):
    • Cinema end-credits roll with 24fps sprocket motion, SMPTE cue ruler, and a Cut v1 (Rough Cut) ↔ Cut v2 (Director's Cut) toggle.
    • Highlights contributors cut in v2 as glowing translucent UNPAID_GHOST nodes ("Removed from Cut v2 · Contract Fee Still Owed").
    • Clicking any contributor chip or ghost credit invokes widgetApi.toggleCrossFilter(...) on personId, cross-filtering the companion AG Grid (crewSettlements, creditCues, crewMembers) to that contributor's cues, contract, and PayPal receipts.
  • ghost-patchbay (Ghost Diff & Identity Patchbay):
    • Ivory completion-bond settlement voucher with v1→v2 cut diff, stage-name-to-legal-contract evidence links, deterministic guardrail status (NEEDS_REVIEW hold on ambiguous alias Alex Rivera), and human-in-the-loop approval controls for triggering PayPal Sandbox writes.

2. Deterministic Financial Guardrail Engine (lib/credit-roll-reconciler.ts)

  • Calculates all monetary amounts strictly in integer cents from the locked contract roster; any AI-suggested fee override is discarded and logged in discardedAiAmountOverrides.
  • Generates deterministic, version-bound proposalVersionHash, senderBatchId, and PayPal-Request-Id identifiers so repeated clicks are idempotently deduplicated.
  • Blocks unverified or ambiguous recipients (NEEDS_REVIEW) before any PayPal network request is sent.

3. Two-Way PayPal Sandbox Write & Read-Back Loop (lib/paypal.ts & lib/credit-roll-settlement.ts)

All PayPal calls run server-side with PayPal-Request-Id idempotency headers and automatic GET resource read-back:

  • Behind-the-Scenes Supporter Pack (Orders v2 CAPTURE): POST /v2/checkout/orders (intent: CAPTURE) → POST /v2/checkout/orders/{id}/capture → GET /v2/checkout/orders/{id} (/api/credit-roll/supporter-order & /api/credit-roll/supporter-order/capture).
  • Ghost-Cut Obligation Invoice & Live QR Code (Invoicing v2): POST /v2/invoicing/invoices → POST /v2/invoicing/invoices/{id}/send → POST /v2/invoicing/invoices/{id}/generate-qr-code → GET /v2/invoicing/invoices/{id} (/api/credit-roll/obligation-invoice).
  • Idempotent Crew Batch Payouts (Batch Payouts v1): POST /v1/payments/payouts → GET /v1/payments/payouts/{batch_id} (/api/credit-roll/settle), stamping a contributor node as PAID only when their individual item transaction_status is SUCCESS (while preserving PENDING, UNCLAIMED, and FAILED states).

Verification & Quality Gate

  • 21 Automated Acceptance & Live-Sandbox Regression Tests: node --experimental-strip-types --test tests/*.test.ts (21/21 pass)
  • React Doctor Health Score: 100 / 100 Great (0 issues found!)
Share this project:

Updates

Submission history