Archived
Full-stack

Live NIL marketplace connecting college athletes with brands — automated matching, contracts, and payments under NCAA + state NIL laws.

30+Athletes
12Brands
$3.5K+GMV
42hDeal Time
78%Offer Rate

Problem

500K+ college athletes gained NIL rights but had no infrastructure to monetize them: • Deals happened through DMs over 2–4 weeks • Contracts required lawyers ($500–$2K each) • Agencies took 25–40% cuts • 95% of athletes were ignored There was no scalable platform for small and mid-tier athletes.

Solution

Built OpenField, a live two-sided marketplace that: • Matches athletes to brands using collaborative filtering across sport, follower count, location, and brand category • Generates NCAA-compliant contracts automatically via DocuSign across 19 state NIL laws • Handles escrow payments with Stripe Connect (85/15 split) and milestone payouts • Tracks deals, deliverables, and compliance in one platform Athletes get offers in days instead of weeks.

Impact

30+ athletes across 5 universities 12 brands onboarded $3.5K+ GMV processed Deal time reduced 2 weeks → 42 hours (93% reduction) 78% of athletes receive offers in their first week

Why I Built This

My D1 wrestler roommate couldn't afford textbooks despite training 40+ hours a week. I built OpenField so NIL isn't only for star athletes — any college athlete with an audience deserves a shot at monetization.

Architecture

Architecture
Next.js
Node.js
PostgreSQL
Redis
Stripe Connect
DocuSign API
Docker
AWS ECS
S3

Technical Highlights

1

Designed normalized relational schema for a live marketplace — Athletes ↔ Deals ↔ Contracts ↔ Deliverables ↔ Payments with referential integrity — enabled automated contract generation, escrow payment states, and race-condition-free marketplace queries

2

Built collaborative filtering matching engine across sport, follower count, location, brand category, and NIL state law compliance → 67% match-to-deal conversion rate

3

Implemented NCAA + state NIL compliance engine across 19 state laws via DocuSign API — automatically selects correct contract template per athlete university and state

4

Stripe Connect escrow pipeline with 85/15 split and milestone payouts — zero payment disputes across all processed deals

5

Redis caching layer (88% hit rate) on marketplace search queries — fast athlete discovery across concurrent brand sessions

How We Built It

1

Marketplace Data Model

The hardest part of OpenField wasn't the UI — it was designing a relational schema that could support a live marketplace with compliance, escrow, and contract state all enforced at the data layer.

The Problem with Marketplace Schemas

Marketplace logic required handling many-to-many athlete ↔ brand relationships, multiple deals per athlete, deliverables per contract, state-specific NIL rules, escrow payment flows, and contract revisions + signatures. A bad schema would break compliance or payments.

Core Tables

  • Athletes — profile, university, sport, follower counts, state
  • Brands — category, campaign budget, targeting criteria
  • Campaigns — brand-owned, with eligibility filters and deliverable specs
  • Deals — join between Athlete ↔ Campaign, with status state machine
  • Contracts — 1-to-1 with Deal, stores DocuSign envelope ID and template used
  • Deliverables — 1-to-many with Deal, tracks submission + approval
  • Payments — 1-to-many with Deal, mirrors Stripe Connect payment intents
  • ComplianceRules — 1-to-many with University, enforces school-specific NIL policies
  • StateLaws — 1-to-many with ContractTemplates, maps state → correct DocuSign template

Key Relationships

  • Athlete ↔ Deals (1-to-many) — one athlete can run multiple active deals
  • Brand ↔ Campaigns (1-to-many) — one brand runs multiple campaigns simultaneously
  • Campaign ↔ Deals (1-to-many) — one campaign can match many athletes
  • Deal ↔ Contract (1-to-1) — every deal has exactly one binding contract
  • Deal ↔ Deliverables (1-to-many) — contract can require multiple deliverables
  • Deal ↔ Payments (1-to-many) — milestone-based escrow releases
  • University ↔ ComplianceRules (1-to-many) — school-specific eligibility constraints
  • StateLaw ↔ ContractTemplates (1-to-many) — 19 state NIL laws mapped to DocuSign templates

Why This Mattered

  • Enabled automated contract generation — state + university determines template, no manual selection
  • Supported escrow payment states — payments locked to deal status transitions
  • Prevented illegal NIL deals — compliance rules enforced as foreign key constraints, not app logic
  • Allowed live marketplace queries without race conditions — deal state machine uses row-level locking
2

Matching Engine

Collaborative filtering with hard eligibility filters to surface relevant athletes to brands and relevant campaigns to athletes.

Matching Signals

  • Sport — brand category alignment (e.g. apparel brands prioritize team sport athletes)
  • Follower count — brand campaign tier requirements (micro, mid, macro)
  • Location — geo-targeted campaigns, state law compliance gate
  • Brand category — athlete audience demographic fit
  • NIL state law compliance — hard filter, ineligible athletes excluded before ranking

Result

  • 67% match-to-deal conversion rate across all brand campaigns
  • 78% of athletes receive at least one offer in their first week on the platform
3

Contracts & Compliance

DocuSign API generates legally binding, state-specific NIL contracts automatically — no lawyer required.

How It Works

  • 19 state NIL law templates pre-authored and stored in DocuSign template library
  • On deal acceptance, system looks up athlete's university → state → correct template
  • Populates dynamic fields: athlete name, brand, deliverables, payment terms, exclusivity clauses
  • Sends envelope via DocuSign API to both parties for e-signature
  • Contract status synced back to Deal table via DocuSign webhook

Compliance Enforcement

  • NCAA eligibility rules and university-specific policies stored in ComplianceRules table
  • Checked at match time — non-compliant athletes never surface to brands
  • Schema-level enforcement prevents deal creation for ineligible athletes regardless of app logic
4

Payments

Stripe Connect escrow with milestone-based releases and automatic platform fee splits.

Escrow Flow

  • Brand funds deal upfront — Stripe payment intent created, held in escrow
  • Funds released to athlete Stripe Connect account on deliverable approval
  • 85/15 split: 85% to athlete, 15% platform fee retained automatically
  • Milestone deals: multiple payment intents per deal, each tied to a Deliverable row
  • Zero payment disputes across all processed deals
5

Infrastructure

Dockerized services on AWS ECS with PostgreSQL, Redis caching, and S3 for contract document storage.

Stack

  • Next.js frontend — athlete profiles, campaign browsing, contract status, payment tracking
  • Node.js API — marketplace logic, deal state machine, DocuSign + Stripe integrations
  • PostgreSQL — normalized relational schema with referential integrity
  • Redis — marketplace search query caching (88% hit rate)
  • Docker + AWS ECS — containerized services with auto-scaling
  • S3 — signed contract PDF storage and deliverable asset uploads

Technologies & Tags

Marketplace
Product
Infra