Founder venture
Founder & Operator · Matt's Volleyball League
Jan 2023 – Present · Cornelius, NC · Hybrid
Projects in this role
- Since 2023 Matt's Volleyball League / VolleyballEngine
Next.js + TypeScript platform on Cloudflare Workers that runs a 150 to 200 player league across six tournament formats (including a Swiss pairing algorithm with teammate-penalty scoring), with role-based access control, real-time live scoring over Supabase subscriptions, playoff brackets, and a revenue-split calculator that drives 1099 contractor payouts. Five scheduled GitHub Actions workflows run the league's GroupMe communications hands-off: daily schedule posts, weekly recaps, missing-score nudges, registration alerts, RSVP checks, and weather warnings.
Recreational league I founded and operate. 150–200 players per season, 4 seasons per year (Spring, Early Summer, Late Summer, Fall), with a small 1099 contractor team handling officiating, league administration, and operations. Every piece I built personally exercises the same skills used at the IT day job, applied to a real business with real customers.
VolleyballEngine
Next.js + TypeScript platform I built and deployed to Cloudflare Workers via OpenNext. It does multiple jobs for the business:
- League schedule generator Takes registration data and produces season schedules imported into Teamlinkt each season.
- Tournament software Bracket generation and management for in-league playoffs and standalone tournaments.
- Mix-and-match scoring In-league playoff format that pairs players across teams.
- Revenue split / payout calculator Computes each contractor's percentage of season revenue for 1099 payouts.
Tested end-to-end with Playwright; unit tests with Vitest. Staging and production environments with automated deploys.
Tournament algorithms
Custom shuffle-format and balanced-team draft generation as standalone TypeScript modules. The interesting constraint is balancing skill across teams while keeping the experience fun for casual players and competitive for serious ones.
mattsvolleyball.com
Astro-based marketing and information site. Taps Teamlinkt's APIs to surface live schedules, standings, and league data on the public site without a manual sync step. Serverless API endpoints (Cloudflare Pages Functions) read TeamLinkt live with 5-minute edge caching, so registration CTAs and season labels update client-side without a rebuild — season transitions need zero manual content changes. Built on the same Cloudflare-native deployment pipeline I use for everything else.
GroupMe automation
A suite of Node.js scripts run by five scheduled GitHub Actions workflows replaced the daily manual communication work of running the league:
- Daily schedule posts Playwright screenshots the live schedule page in CI, uploads it to GroupMe's image service, and posts it to that night's chat topic, with a formatted-text fallback.
- Weekly recaps Per-division set-by-set results and current standings posted to each night's topic every Monday.
- Missing-score nudges The morning after a game night, posts any unscored matchups; silent when everything's scored.
- Registration alerts Per-division spots-remaining posts while registration is open, with stateless dedupe so nothing repeats unless the counts changed.
- RSVP checks Shuffle nights get a GroupMe calendar event instead of a schedule image; an afternoon check reads the Going count and posts a headcount nudge or confirmation.
- Weather heads-ups Checks the National Weather Service hourly forecast at the courts and posts a warning when rain or storms look likely during the game window. The rainout call itself stays human.
Every workflow has dry-run, test, and date-override dispatch inputs, and everything shakes down against a dedicated test group before posting to real players.
Brand and design
All visual assets designed in Affinity Designer and Affinity Photo: logo system with multiple variants and 3D mockups, business cards, 18×24 posters, web and social banners with seasonal variants, Instagram and Facebook assets, per-season registration graphics, email banners, full website visual design.
Email marketing
HTML email templates produced each season: registration announcements, welcome series broken out by league night, captain's duties and onboarding, schedule changes and rainout notices, contractor recruitment ("Help Needed").
Off-the-shelf vs build
Teamlinkt as the core league operations platform (registration, rosters, captain communications, player-facing app). VolleyballEngine for the work Teamlinkt doesn't do well: schedule generation, tournament brackets, revenue splits. The vendor-versus-build call gets re-evaluated each season.
Operations and business
- Documented operating playbook the contractor team runs against.
- Season-by-season schedules, playoff brackets, and payout reports.
- Sports waiver, rules, league policies.
- Facility coordination, venue scheduling, player communications, retention.
- Full P&L: pricing, payment processing, contractor 1099 payouts, sponsor relationships, tax and accounting.
Why it belongs next to the IT story
The IT roles show what I can do inside an enterprise with a team and a budget. The volleyball league shows what I can do when there's no team to delegate to and no playbook to inherit. Same systems thinking, same automation instinct, same operational rigor, applied end to end on a business I own.