A Mac app for volume sports photography
Every athlete.
Every image.
Every time.
Lineup ties each athlete's roster record, images, and template together from import to delivery — so an 800-kid job ships with zero crossed names, zero missing faces, and zero reprint apologies.
Runs on your Mac. Your originals are never modified. Nothing sends without your confirmation.
One job, five states
JOB 2026-034 · FALL LEAGUE · 847 ATHLETES · 6,212 IMAGES
A job moves through five states — NEW, ROSTER, RENAMED, QC, then DELIVERED. QC is a stop point held for the photographer's review, and nothing is delivered without their confirmation.
- 01 NEW 6,212 images in
- 02 ROSTER 847 athletes · parent-verified
- 03 RENAMED 6,212 files · 0 collisions
- 04 QC stop point — your eyes here
- 05 DELIVERED confirmed by you · then sent
The problem
Picture day doesn't break at the camera. It breaks at the desk.
-
"The roster shows up with 40 kids missing parent emails — and somehow it's your job to chase them down."
-
"The picture day schedule takes three evenings and four revisions, and the league POC answers the phone on none of them."
-
"The roster says 'Bryce.' His name is 'Brice.' Nobody catches it until the composite's already printed."
-
"It's 1 a.m., you're 400 renames deep, and you can no longer tell if IMG_4471 is a Tiger or a Wildcat."
-
"Your 'automation' is you, in front of Photoshop until 2 a.m., clicking Select Subject 400 more times."
-
"You're squinting at a five-year-old game photo trying to remember if the Eagles' blue was more navy or more royal."
-
"It's delivery week, and your inbox is already six 'can you resend my access code' emails deep."
-
"A parent forwards you a screenshot — she can see the whole team's shared folder, not just her own kid's."
-
"Your 'system' is six spreadsheets, two folder trees, and a prayer."
Every one of these is an identity problem, a chasing-the-league problem, or a production-grind problem. Lineup fixes all three.
How it works
From raw roster to delivered order — the league does its part through a link, and you stop only where your eyes matter.
-
Import the roster — and heal it without a single phone call.
Lineup cleans league exports into one master record and flags every gap: kids with no parent email, missing contact info, broken rows. One click sends your league contact a fill-in-the-blanks page listing only what's missing. Their answers flow straight back into the roster. You never retype a row and you never pick up the phone.
-
Build the picture day schedule from the real roster — and let the POC review it on the page.
Lineup generates the schedule from actual per-team athlete counts — your stations, your pacing, breaks where you want them. Send it to the league POC as a review link: change requests come back as structured requests on the page (not a voicemail), Lineup flags the conflicts, and you regenerate with their requests honored and your pinned slots untouched. Makeup day included.
-
Verify with parents before the shoot.
Parents confirm names and spellings through your own branded portal — spelling problems die before picture day, not after the composites print.
- Picture day happens here
-
Extract, match, and rename — without babysitting Photoshop.
Lineup drives your own Photoshop through the extractions (see the extraction engine, below), then lands every shot in a duplicate-safe filename tied to the right athlete — barcode, EXIF, or filename mapping. Originals stay untouched. One click builds the individual and team batches with auto-assigned template colors — and a team you've shot before already has its colors remembered.
-
Review, then deliver — to parents and to your gallery.
QC stop points, a dry run by default. Then prepaid parents get their finished digital packages delivered directly, and your GotPhoto gallery gets the finished job uploaded straight from Lineup — only after you confirm.
Production
The production night shift, handled.
Everything between the shoot and the smile — extraction, team composites, parent delivery, gallery upload — runs from inside Lineup.
Photoshop, driven
Run extractions from inside Lineup — through your own Photoshop.
Lineup drives Photoshop's cloud-powered Select Subject plus Refine Hair across the whole batch, image by image, and can split the job across two Photoshop instances running side by side to cut the clock in half — you don't even have to have the second one open first; Lineup launches it, and quits it again when the run finishes, without ever touching a Photoshop session you already had open yourself. A stall watchdog catches Adobe's hangs so one stuck dialog doesn't eat the night. You come back to extracted athletes, not a queue.
Teams, batch-built
Team images batch-built inside Lineup.
Rosters drive the team builds the same way they drive individuals: assembly review with headcount checks, pose fixes where needed, and every team's composite built in a batch instead of one at a time. The same identity thread that guards individual images guards the team image.
Paid orders, delivered
Prepaid digital packages, delivered straight to each parent — automatically, and privately.
Lineup matches paid orders to athletes, stages the run for your review, and on your confirmation actually sends it: each athlete's finished images upload to a cloud folder, and their parent gets an email with a download link to that folder — not a shared gallery, not an attachment. That link opens onto that child's images only; there is no folder, link, or gallery view that shows more than one athlete at a time, so one parent can never end up looking at another family's kid. Logged per athlete so nobody is ever double-sent or skipped, and safe to stop mid-run without leaving anyone in a half-delivered state. Prepaid customers only. No gallery hunt, no "where are my photos" emails, no manually attaching files yourself.
Gallery, uploaded
Finished folder to GotPhoto gallery — no FTP client, no re-sorting.
Lineup builds the finished job in gallery-ready structure and uploads it straight to your GotPhoto gallery over built-in SFTP, with per-file progress and per-file failure reporting. The folder you QC'd is the folder that goes up, byte for byte.
Why Lineup
The league does its part through a link. You never chase.
What only Lineup does
Through the same league-facing portal — tokenized links, no accounts, nothing for the league to install
-
Roster gap-filling: the league contact fixes missing parent emails and contact info on a page that shows only the blanks — answers flow back into your master roster automatically
-
Schedule review: the POC requests changes on the schedule itself; requests come back structured and conflict-checked, not as a phone call you have to transcribe
-
Parent verification: parents confirm names and spellings before you shoot — not after you print
And it keeps paying off long after the league's part is done
-
Per-athlete identity thread through the entire job — roster row, images, template, order, delivery all tied together
-
Team colors remembered by league and team, season after season — confirm a team's primary and secondary once, and next year's job for that same team already has them ready. Same Wildcats blue in year six as year one, without you having to remember it.
-
Lost-access-code emails, one click — look the athlete up, and a ready-to-send email with their real code and your gallery link is already drafted in Gmail, waiting for you to review and hit send
-
Works with the platforms you already use: GotPhoto, PhotoDay, or fully manual
The safety guarantees
-
Your source files are never modified — every operation is a copy
-
Nothing is ever auto-deleted — archive, never destroy
-
Nothing sends to a parent or platform without your explicit confirmation — dry run is the default
-
Every parent delivery link opens onto one athlete's folder, and only that athlete's — no parent ever has a link that shows another family's child
-
Built by a working volume sports photographer, on real 400-athlete jobs — not by a SaaS team guessing at your workflow
How the app is built · Not fine print
Founder note
Built by a working volume sports photographer, on real 400-athlete jobs — not by a SaaS team guessing at your workflow.
Lineup is the system I run my own jobs on, because I'm the one who answers to the league when a name goes out wrong.
Founder · Lineup
Get notified
Every athlete. Every image. Every time. Notify me at launch.
One email. When the doors open.
No purchase, no account, no payment information — just a launch notification.
Free to sign up. One email when the doors open. Unsubscribe any time.
Straight answers
"Why can't I sign up / buy it right now?"
Lineup is in its final stretch before general release. Sign up and you'll get one email the moment it opens — no spam, no repeated pitches.
"Will signing up cost me anything, or fill my inbox?"
No. Signing up is free and only gets you the one launch email. Unsubscribe any time.
"I already have a system."
Lineup outputs the CSVs and renamed files your existing pipeline already expects. It replaces the spreadsheets, not your workflow.
"Will the league actually use it?"
There's nothing for them to use. The POC and parents get a link — no account, no login, no app. They fill in a page and they're done.
"Is my data safe?"
Everything runs locally on your Mac. Your images never leave your machine except through deliveries you explicitly confirm.
"What if it messes up a job?"
It structurally can't destroy anything: originals untouched, no auto-delete, dry-run defaults.
"Does it work with GotPhoto / PhotoDay?"
Yes, both, plus a manual mode for everything else. GotPhoto customers also get direct gallery upload over SFTP — no third-party FTP client needed.
"Do I need special hardware for the two-instance extraction speedup, or to have both open ahead of time?"
No special hardware, and no pre-launching. It needs two Photoshop version installs (e.g. 2025 and 2026) on your Mac — the same Creative Cloud install most photographers already have. You don't have to open the second one yourself: Lineup launches it when a dual-instance job starts, and quits it again when the job's done. Single-instance extraction works fine with just one, and Lineup falls back to it automatically only if that launch doesn't come up within a short timeout.