Skip to main content
ShirePath Solutions

Drawing 02.1, league platform

Advantage Sports

The software that runs the Advantage Flag League, about 1,500 families a season: registration, the payment ledger, team formation, schedules, standings, and messages to families. Built from scratch for one league.

VercelNeonGoogle CloudAWSHTTPSsigned PUTID tokenpage imagesjobs, leasespage imagesmail, SMSRunTaskresults12345678BrowserCloud StorageCloud RunrendererNext.js onVercelNeon PostgresClaudeSendGrid,TwilioSchedule solverVercelNeonGoogle CloudAWSHTTPSsigned PUTID tokenpage imagesjobs, leasespage imagesmail, SMSRunTaskresults12345678BrowserCloudStorageCloud RunrendererNext.js onVercelNeonPostgresClaudeSendGrid,TwilioSchedulesolver
Fig. 1. How a scanned check deposit becomes posted payments, and where each piece runs.
Parts list for Advantage Sports
No.PartWhat it does here
1BrowserFamilies register and owe a balance; admins upload check deposits, confirm matches, and run the season.
2Cloud StorageThe deposit PDFs the browser uploads by signed URL, and the page images rendered from them.
3Cloud Run rendererA container that renders each deposit page to an image with pdfjs-dist and @napi-rs/canvas.
4Next.js on VercelPages, server actions, eight crons, and a job worker that runs steps on a time budget and then calls itself for the rest.
5Neon PostgresLeague data and the payment ledger through Drizzle, plus the job table and its leases.
6ClaudeReads each check on a page: payer, amount, and check number, for matching.
7SendGrid, TwilioSign-in codes, notices, and blasts by email, and texts behind a kill switch.
8Schedule solverA one-shot Fargate Spot task that builds the season's schedule and writes it to Postgres.

Why it exists

The Advantage Flag League is a youth flag football league with volunteer coaches and a new season of registrations every year. It ran on Sports Connect, which reaches end of life in fall 2026, and nothing off the shelf fit how the league actually works. Most families pay by paper check, and those checks were keyed in one at a time, about thirty seconds each, in batches of fifty to seventy. Sorting players into fair teams took 20 to 30 hours of spreadsheet work. Advantage Sports is the software built to replace all of it. It started as League-OS; the Advantage Sports name is for the day other leagues run on it too.

How it works

Families register online and see a running balance. The league takes no cards, so checks, Zelle transfers imported from the bank's file, cash, and money orders all land in one ledger.

For checks, an admin scans a batch into one PDF and uploads it. A separate service turns each page into an image, and Claude, an AI model, reads every check on it: who paid, how much, and the check number. Each check is matched to a registration and checked for duplicates. Strong matches confirm themselves, an admin reviews the rest, and only then are the payments posted to the ledger.

A batch can take longer than one web request is allowed to run, so the work is split into steps saved in the database. A worker does as many steps as fit in its time limit and hands the rest to a fresh run, and a check every five minutes restarts anything that stalled.

Team formation is the other heavy job. The solver builds teams in three passes: a quick first draft, many small swaps that each make the teams fairer (a method called simulated annealing), then a repair pass. Friend requests and keeping schoolmates together come first, then balance by grade and quarterbacks, and every kid is checked for at least one familiar face on the roster. An admin can ask for a change in plain words, like keeping two brothers together. Claude turns it into rule changes for the admin to review before a fresh run, and never places a kid itself. It also explains what changed between two runs, nothing goes live until an admin accepts one, and coaches see their teams before families do.

A season on it

Fall 2026 is the first season the league runs on Advantage Sports instead of Sports Connect. The season's calendar: registration opened April 1, and check and Zelle payments come in from then through the season. The solver was ready by May 15 and the teams were formed by June 1. The schedule was posted by August 1, games run from August 14 to week 9 on October 16, and Championship Night closes the season on October 23.

A season runs on nine clocks

A season is not one switch from open to closed. It has a status, plus separate windows and switches that each move on their own: registration, the coaches' freeze forms, uniform sizes and numbers, family requests about teammates, schedule requests, the release of each team to its coach and then to families, the weighted standings, and the playoffs. An admin opens and closes each one, and families see the closing date of every window that lets them change something. The league keeps a written operating model of what happens each season and what goes stale when a step is missed, so the person running the season does not have to hold it all in their head.

What it changed

  • It serves about 1,500 families a season.Source: Conner's league records, confirmed 2026-10-13

What it does

  • Registration with a running balance for each family
  • One ledger for checks, Zelle, cash, and money orders
  • Check deposits read by Claude, matched, and confirmed by an admin
  • A team-formation solver, steered in plain words and compared run by run
  • Season schedules built by a solver task on AWS
  • Email and text blasts, with lanes families unsubscribe from separately and STOP by text honored
  • Waitlists, and scholarship waivers at registration

Screenshots

The Advantage Flag League site at ylafl.com
Plate 1. The league it runs.
The Advantage Sports site at joinadvantagesports.com
Plate 2. For other leagues.

Something like this on your list? Tell us about it.

Talk about a build like this