matt-taylor.tech
← Back to experience

Founder venture

Founder & Operator · Matt's Volleyball League

Jan 2023 – Present · Cornelius, NC · Hybrid

mattsvolleyball.com ↗

Projects in this role

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