Privacy

Privacy Policy

Last updated October 26, 2026

This Privacy Policy describes how JM Photography LLC (“we,” “us,” or “our”) collects, uses, discloses, and protects information in connection with Lineup, our desktop application for youth sports photography businesses, including its optional Coordinator Portal, Parent Verification, and other relay features; this website; Roll Call, our hosted barcode renamer at lineupcentral.com/roll-call; and Sidelines, our hosted parent sign-up page at lineupcentral.com/sidelines.

These are different shapes, and the difference matters here. Lineup is installed on the operator’s own Mac. Roll Call is a website: it holds an account, an email address and a record of what each job cost, because it is going to be a paid service and those records are what let somebody argue about a charge once it is. What all three have in common is the thing that matters most — we do not receive the operator’s photographs: they stay on the operator’s computer and in the operator’s own cloud accounts. Roll Call reads the metadata header of each image in the browser and never receives the image itself, and Sidelines handles no photographs at all. Lineup’s optional relay is the operator’s own, not ours, and the one case where a parent’s view of photographs passes through it is described in The Relay section below. (The one exception on our side is an optional channel that sends reduced-size copies of finished photographs to the website of The Picture Day Rig, which is covered by that business’s own policy.)

Sidelines is the one place where we do hold athlete and parent information on our own servers, and it is worth being plain about that. It exists for leagues that give a photographer a list of athlete names and no way to reach the families. A parent opens a password-protected page, finds their athlete, and leaves their own name, email address and (optionally) phone number. Those contact details are stored — for a limited and stated time — rather than passing through. The children’s full names are not. A roster is reduced, on the photographer’s own computer and before any part of it is sent, to a first name and the first two letters of the surname — “Joe Sm” — which is what a parent sees and all that we ever receive. (A surname of several words keeps all but its last word whole: “de la Cruz” becomes “de la Cr”.) The Sidelines section below says exactly what is held, for how long, and how to have it removed sooner.

Lineup is a product of JM Photography LLC, which also operates The Picture Day Rig, a separate photography business at thepicturedayrig.com. That business has its own privacy policy for its own website and photography services. If you’re a family whose picture day was run by a business using Lineup, this policy explains what Lineup does with your information; that business’s own privacy policy also applies.

If you are a parent, guardian or league coordinator using a link served by a photography business’s own relay, this policy explains what happens to your information. If you are a photography business that purchases or uses Lineup, this policy also explains what we collect about you as our direct customer.

One important distinction that runs through this whole policy: Lineup is a locally installed application. For photography businesses using Lineup, most production data — athlete rosters, photos, local databases — stays on the business’s own computer and is not received by us, except the shortened Sidelines roster and the Roll Call roster rows described in their own sections below. The business (the “Operator”) controls that data and is responsible, as the data controller, for its own notices and consents to the families it serves. Sections below are marked where this local-first design applies.

Information We Collect

  • Account, license, and subscription information collected when you purchase or activate Lineup — name, business name, billing email, License Key, subscription and renewal status, purchase date, payment status, and a shortened one-way hash of your computer’s name, used to tell one activation from another and to enforce the two-computer limit. The hash cannot be turned back into the name, though someone who already knows or guesses the name could check it against the hash. Lineup’s update check sends the License Key and the same hash to our own update server. No hardware serial number, network address, disk identifier or device profile is read or sent.
  • License check-ins. When Lineup checks your license or downloads an update, our update server (updates.lineupcentral.com, hosted by Cloudflare) receives your License Key, the activation ID of that installation and — as any internet server does — your network address. Once the key is confirmed as a current Lineup license, the server records a one-way hash of the key (never the key itself), the Lemon Squeezy license and order numbers (not your name or email address), the activation ID, a rough location worked out from the network address: the country and the state or region, and when that installation first and last checked in from there. The network address itself, and any finer location — city, postal code or coordinates — are not stored. No job, roster, athlete, parent or customer-photograph data is involved.
  • Support communications you voluntarily send us — name, email, business name, License Key, issue description, and any files or screenshots you choose to share.
  • Only if you connect Google: a Google refresh token, stored in your Mac’s Keychain (and in a studio backup file only if you choose to include saved keys; that file is encrypted with your passphrase), and never transmitted to or stored on our servers. See the Google API Services section below for full detail.
  • Athlete and roster data — names, jersey numbers, team assignments, roster files, parent/guardian contact details, order and delivery records — which by default stays on the Operator’s own computer and is not received by us. Some of this data may be sent to the Operator’s own relay, a service the Operator runs in their own hosting account and that we do not host or have access to, if the Operator enables it; see The Relay and Data Retention below for exactly what and for how long.
  • For Sidelines: the reduced athlete roster a photographer’s browser, or their copy of the Lineup app, sends for a league — team, first name, the first two letters of the surname (a surname of several words keeps all but its last word whole, so no full surname is sent), and where the league supplies them a jersey number and the league’s own reference — and, from each parent who signs up, their name, their relationship to the athlete, an email address, an optional phone number, the time they submitted, and a truncated form of their network address (the first three parts of an IPv4 address, ending in .0/24, or the first four of the eight groups of an IPv6 address). The Sidelines section below itemises this.
  • For Roll Call: the email address you sign in with, your credit balance and the ledger of every credit bought, granted or spent, and a record of each rename plan — how many files, how many matched, what it cost, the name pattern used, and the resolved frame order. Roster rows pass through to be matched and are not stored. Image data is never received at all. The Roll Call section below itemises this.

Roll Call

Roll Call renames a picture-day folder by matching the subject barcode written into each image against your roster. It runs in your browser and on our servers, and the split between the two is the whole point of the design.

What never reaches us

Your photographs. Roll Call reads roughly the first 256 KB of each file — enough to reach the metadata block — inside your browser, and for a PNG that keeps its metadata at the end, the last 512 KB. It does not upload the file, a thumbnail, a hash of the pixels, or a dimension. The renaming itself happens on your own disk, through your browser’s file access, and we never see the result.

What reaches us, and is not kept

Your roster. Matching against it is the job, so every row you load is sent with each plan request, cut down in your browser to the barcode column and the columns your name pattern uses — which usually includes children’s names. Other columns stay in your browser. They are not stored. They exist for the length of the request and are used to compute the plan; the reply carries back the new filenames and each file’s row number, not the rows. Per image, the request also carries the filename, the barcode read from its metadata, and its timestamps, plus the list of filenames in the folder (which is what lets Roll Call refuse to overwrite a file that is already there).

What we do keep

  • Your account — the email address you sign in with, your credit balance, and when the account was created. There is no password, because Roll Call does not use one.
  • The credit ledger — one row for every credit granted, bought or spent, with the reason, the plan it belongs to, and for a purchase the Stripe payment identifier. This is the record you would point at in a dispute about a charge, which is why it is kept rather than a running total alone.
  • A record of each plan — how many files it covered, how many matched, what it cost, the name pattern you used, a fingerprint of the job, and the resolved frame order. That order lists each subject’s barcode against a one-way key for each of their frames, not the filename, so that adding a file to a folder later cannot renumber a frame you have already checked. The key is deliberate: if you rename a folder to include children’s names and then re-plan it, storing the filenames would have written those names into our database. It stores a key computed from them instead, which cannot be read back. A barcode is a pseudonymous identifier: we hold no name, team or contact detail against it.
  • Sign-in tokens — when you ask for a sign-in link we store a one-way hash of that token alongside the email address it was issued for. The token is single-use and expires in 20 minutes. It is deleted when it is used, and an expired one is deleted the next time anyone asks for a sign-in link. Your signed-in session is a signed cookie in your own browser, valid for up to 30 days; we do not keep a copy of it.

Roll Call is hosted on Cloudflare (Pages and the D1 database). Payments, when credit sales open, are processed by Stripe. Sign-in emails are sent through Resend from our own account. Roll Call’s pages carry no analytics, advertising or third-party script of their own — no counter, no tag manager, no font or script CDN — and set no tracking cookies. That is a deliberate limit rather than an omission: those pages hold a read-write handle on a folder of children’s photographs and the roster naming every child, and anyone who could serve a script to them could read and rewrite both.

To delete a Roll Call account and everything above, email support@lineupcentral.com from the address on it. One thing is kept afterwards: a normalised form of the address, with dots and +tags removed, so that the free credits cannot be claimed again by the same inbox.

Sidelines

Some leagues give a photographer a list of athlete names and nothing else — no way to reach the families whose children are being photographed. Sidelines is the page that asks the families directly: a parent opens a link from their league, enters the league password, finds their athlete, and leaves their contact details.

This is the one part of our software where we collect information directly from parents. Everywhere else, information about athletes and families reaches the photography business without passing through us, or passes through and is not kept.

What is held

  • The league’s roster, shortened — each athlete’s team, first name, and the first two letters of their surname, plus a jersey number and the league’s own reference number where the league supplied them. A surname of several words keeps all but its last word whole (“de la Cruz” becomes “de la Cr”). We do not receive or store children’s full surnames. The shortening happens on the photographer’s own computer, in their browser or in their copy of the Lineup app, before anything is sent; the rest of the name stays on their computer. Nothing else about the athlete either: no age, no date of birth, no address.
  • For a school, the school, the grade and the teacher — when the page is set up for a school rather than a sports league, we also hold the school’s name (as the page’s name), each child’s grade, and their teacher’s name in place of a team. The grade and the teacher’s name are deleted with the shortened names, on the same timers described below. The school’s name stays in the record that the page existed.
  • A one-way key per athlete — a short code calculated on the photographer’s own computer from the athlete’s full roster entry. It cannot be turned back into a name, and it exists so that the contacts collected here can be matched back to the photographer’s own roster on their own computer afterwards. It is also what tells two children with the same first name and same two letters apart, without our knowing either name.
  • What each parent types — their own name, their relationship to the athlete if they give one, an email address, and a phone number if they choose to give one. The phone number is optional; the email address is required, because it is how picture day information and the photo gallery reach them.
  • A record that the submission happened — the time, and a truncated form of the network address it came from: the first three parts of an IPv4 address with the last replaced by zero (for example 203.0.113.0/24), or the first four of the eight groups of an IPv6 address, written out in full (for example 2001:0db8:0000:0000::/64). That is meant to show a submission came from a plausible place without identifying a household. The full address is never stored.
  • A counter for wrong passwords — so that the page cannot be guessed at all night. It holds a one-way keyed hash of the network address rather than the address itself (for an IPv6 address, of its first four groups), and a count within a fifteen-minute window, plus one count for the league as a whole that holds no address at all. It is not a log of who visited.

What is not held

No photographs — Sidelines never receives an image of any kind. No child’s full surname. No date of birth, age, address or any other detail about a child beyond the shortened name, the team and, for a school, the grade and teacher described above. No marketing or messaging preference: the photographer keeps those in their own systems — their gallery platform, with its own unsubscribe, and, if they use Lineup, Lineup’s own opt-out list on their computer — and a second copy stored here would only go stale. No password of yours: the league password is stored as a keyed one-way hash and cannot be read back out.

How long it is kept

Usually days, not months. The photographer can confirm, on their own screen, that a download of this data has been imported into their own software — and that confirmation deletes from our servers, immediately, the parents’ contact details that download contained. Anyone who signed up after that download is untouched, because they were not in it. The shortened athlete names stay while the page is open, and go once it has closed and no contacts are left.

Failing that, there are two automatic deadlines. Every Sidelines page has a closing date, set when it is created and shown to the photographer. After it closes, the shortened athlete names and every parent’s contact details are deleted automatically: fourteen (14) days after the later of that closing date and the photographer’s most recent export of the data, or ninety (90) days after the closing date if the data was never exported. Deletion is carried out by an automated sweep that runs as the service is used — when a photographer opens their Sidelines pages, and on a share of parent visits — so the data is deleted the next time the sweep runs after that deadline. The photographer can also delete a league’s names and contacts immediately from their own screen, and a record that the league existed — its name, code, dates and settings, with no athlete or parent in it — is all that remains afterwards.

The point of that arrangement is that the data is here to be moved, not to be stored: once the photographer has downloaded it into their own systems, our copy is on a two-week timer.

Who it goes to

The photography business that created the page. They download it and load it into the software they use to run picture day, and pass it on to the gallery service they use to deliver your photos. We give it to no one else. We do not sell it, rent it, or use it to market anything to you, and it is not used to train AI or machine-learning models. The photography business is the data controller for what parents submit and is responsible for its own notices and consents to the families it serves; we process it on their behalf.

Sidelines is hosted on Cloudflare (Pages and the D1 database). Its pages carry no analytics or advertising script of their own and set no tracking cookies. The photographer’s pages and the sign-up status page are marked so that search engines do not index them. The public page at lineupcentral.com/sidelines can be indexed: it holds no athlete names, which load only after the league password is entered.

To correct or remove what you submitted, contact the photography business running your picture day, or write to support@lineupcentral.com and we will remove it.

The Relay

Lineup includes an optional relay: a small web service that a photography business deploys to its own hosting account (Lineup’s setup assistant uses the business’s own Fly.io account). Coordinators, parents, crew and the business’s own customers use links on it to answer questions, upload rosters, view photographs, sign agreements or order. We do not host the relay, hold any credential for it, or have access to what is on it. The business is the data controller for everything on its relay, and its hosting provider is the business’s processor, not ours. The relay is off until the business turns it on in Lineup and accepts a disclosure.

What a relay can hold

  • Coordinator roster files, corrections and schedule or banner-proof feedback, and parent verification answers — athletes’ names, teams and jersey numbers, and what the coordinator or parent answers, which can include parents’ names, email addresses and phone numbers. On the parent verification page a parent can also give a better email address for the family and a second parent’s name, email address and phone number, which means one adult can give another adult’s details. Lineup holds those for the studio to review, and none of them is used for any email until the studio approves it. A banner proof also holds a watermarked proof image and head crops of the players named.
  • Sign-up forms on the relay, which are separate from Sidelines — what a parent enters: the child’s name (or, on a family-photo form, the name of the person being photographed), team and jersey number, the parent’s name, email address and phone number, and a record of any text-message consent.
  • The companion app’s roster copy — each athlete’s first and last name, barcode, jersey number and team, with the job’s name, date and location. No parent contact details.
  • Family photo pages. Unless the business turns the feature off, the link in a delivery email opens a page on the relay instead of the business’s Google Drive folder (a Dropbox delivery link opens the Dropbox folder). The page holds the child’s name, team, job title and picture day and the names and Google Drive identifiers of the photographs, stored encrypted, until the gallery’s window ends: by default 90 days after the delivery email (the business can choose from 30 to 365 days), or 365 days if the business turns gallery expiry off. The photographs themselves are not stored on the relay: when a parent views the page, each preview, photograph or zip is fetched from the business’s own Google Drive and streamed through to the parent. “Find my photos”, off unless the business turns it on, lets a parent have the link sent to their email address; the relay keeps the address only as a keyed one-way hash.
  • Coordinator job pages and roster-change requests, the client portal (including documents a client uploads, such as tax-exemption or insurance certificates), quotes, contracts and inquiry forms.
  • Crew scheduling and chat — the shoot, the crew member’s name, role and phone number, their answer, any text-message consent record, and messages — and staff accounts for the companion app (name, email address, phone number).
  • The business’s online store — its order pages and the orders placed on them.
  • Answers to an inquiry’s follow-up questions and the date a client picks, and the business’s own client and invoice list for the companion app.

Most personal data on a relay is stored unencrypted by the relay software; family photo pages, coordinator job pages, the client portal, store orders and a few other items are encrypted, as the Data Retention table below says for each. How long each item stays is in the same table. Some items have no automatic expiry, and the table says so.

We also run a relay and an online store of our own, at addresses under lineupcentral.com (companion., intake., verify. and store.) and thepicturedayrig.com, for our own photography business, The Picture Day Rig. They are not provided to other studios. Everything in this section applies to them as well, with JM Photography LLC, not a studio, as the operator and the data controller.

Removing a family’s data

When a studio runs Lineup’s Family data request for a child, Lineup removes the child from the studio’s own computer and asks the studio’s relay to delete the child’s family photo page (and the “Find my photos” entries for it), the child’s entry in the companion app’s roster copy, the child’s parent sign-ups (and, where the whole family is leaving, every sign-up and Find my photos entry for the parent’s email address), and the family’s store orders. It also takes the child’s gallery link down and moves the gallery folder to the Google Drive or Dropbox trash. Lineup reports each as done or not done, and if the relay cannot be reached or needs an update it tries again by itself once a day. When a job is delivered Lineup drops its companion roster copy from the relay, and when a job is archived it also withdraws the coordinator job page and the requests and client-portal records tied to it.

A family data request does not remove every copy of a family’s data. Roster changes entered in the companion app (walk-on athletes, edited names and numbers, and claimed spare spots, which include a parent’s name, email address and phone number) stay on the relay with no expiry and are not removed by it; neither are email delivery events, the relay’s list of email opt-outs, or the up to three copies of the relay’s database it keeps from before an update. Every other item in the Data Retention table expires on its own schedule, not on request. Copies at Stripe, GotPhoto, the studio’s email provider and in backups are outside Lineup’s reach, and Lineup’s report lists what the studio must still do by hand.

Google API Services Data Use Disclosure

Lineup optionally connects to a Google account, at the operator’s initiation, to deliver finished photos to the operator’s own Google Drive, to send and draft email from the operator’s own Gmail, to read mail for the features the operator turns on, and to create video-call events on the operator’s own calendar. This section discloses exactly what we access and why, in compliance with the Google API Services User Data Policy. Lineup asks for five scopes.

Scopes requested

drive.file

What it’s for
Uploading finished photo deliveries to a folder Lineup creates in the operator’s Drive (“Lineup Delivery”), sharing each athlete’s folder by link, and, when that gallery’s window ends (90 days by default), taking the link down and moving the folder to the Drive trash.
What happens to the data
Lineup can only see and write files it created itself — never the operator’s existing Drive contents. Files are uploaded directly from the operator’s device to the operator’s own Drive; we do not receive or store them.

gmail.send

What it’s for
Sending the email Lineup sends for the operator (access codes, delivery and roster emails, and replies and other emails to parents and clients) from the operator’s own Gmail account, when the operator selects Gmail as their email provider in Settings.
What happens to the data
Sent directly from the operator’s Gmail account to the recipient; we do not receive or store the message content on our servers.

gmail.compose

What it’s for
Creating drafts in the operator’s own Gmail: roster deadline and corrections deadline reminders to a league coordinator, and, in the Parent Inbox Responder feature, draft replies to parent emails and to booking inquiries that arrive by email.
What happens to the data
Lineup creates drafts in the operator’s own Gmail account. Lineup sends a draft when the operator presses Send for it in Lineup; Lineup then sends it from the operator’s Gmail account. The one exception is a reply to an email inquiry, which Lineup sends without that press only if the operator has turned on automatic inquiry replies in Settings, which are off by default. We do not receive or store the drafts on our servers.

gmail.readonly

What it’s for
Reading mail for the features the operator turns on: the Parent Inbox Responder (unread emails to the address it watches, to track conversation state and recognise a family whose address is on the roster; with AI-assisted features on, also to suggest what an email is about and to turn booking inquiries that arrive by email into inquiries) and client email filing. Before re-sending a gallery email, Lineup also checks the operator’s sent mail so that a family is not emailed twice, and the Parent Inbox looks in drafts and sent mail for a date-pick link sent to the wrong person. Google classifies this scope as covering the whole mailbox; Lineup uses it only to list and fetch the messages those features process.
What happens to the data
Read-only — Lineup never modifies, labels, archives, or deletes mail (it only deletes drafts it created itself). See “AI-Assisted Features” below for the cases where message content leaves the operator’s device.

calendar.events

What it’s for
Creating the video-call events (with a Google Meet link) that Lineup makes on the operator’s own calendar when the operator schedules a call with a client, and inviting the client.
What happens to the data
Events only: Lineup creates the events it makes and does not read or change anyone’s calendars beyond them. Nothing is sent to us.

Storage. The Google authorization token is stored in the operator’s macOS Keychain, on the operator’s own computer, and in a studio backup file only if the operator chooses to include saved keys (that file is encrypted with the operator’s passphrase). It is never transmitted to or stored on our servers.

Sharing. Data obtained via these scopes flows only between the operator’s device and the operator’s own Google account, and is sent to no other third party, with one exception: for operators who add their own Anthropic key and turn an AI-assisted feature on, message content read through these scopes (for example, the subject and what the sender typed this time in a new email, for sorting, with private details replaced by markers) is sent to Anthropic, as the next section lists.

Revocation and deletion. Operators can revoke Lineup’s access at any time from their Google Account permissions (myaccount.google.com/permissions). Disconnecting Google within Lineup’s Settings deletes the token from the Mac’s Keychain; it does not withdraw Lineup’s permission at Google, so to do that, also remove Lineup on that Google page. Neither deletes anything from the operator’s own Gmail or Drive, since Lineup never held a separate copy of that data.

Compliance note. Lineup’s access to and use of information received from Google APIs adheres to the Google API Services User Data Policy, including its Limited Use requirements.

Restricted scope. gmail.readonly is classified by Google as a restricted scope, not merely sensitive. Google’s published guidance is that its annual CASA (Cloud Application Security Assessment) requirement applies to applications that access restricted data “from or through a third-party server” — which describes the AI-assisted features in the next section that send email content, for operators who enable them.

AI-Assisted Features (Anthropic)

Lineup includes optional AI-assisted features that use Anthropic’s API. This section is the complete list of what each one sends, and when.

AI features are off unless the operator adds their own Anthropic API key (Settings → AI Features) and agrees to Lineup’s in-app AI notice. Lineup keeps the key in the operator’s Mac’s Keychain (and in an encrypted studio backup file only if the operator chooses to include saved keys), never on our servers, and each request goes from the operator’s Mac straight to Anthropic (anthropic.com), not through Lineup’s servers. Photographs are never sent. Withdrawing agreement in Settings stops every feature at once.

Nothing is sent unless the operator clicks a button or talks to the assistant, except two things, and only while the Parent Inbox Responder is on (it cannot be switched on without a key): the sorting of each new email and the reading of a booking inquiry. Before text is sent, Lineup replaces email addresses, links, access codes and phone numbers in it with markers such as [email] or [link]. It also replaces names it knows (the roster’s, for the sender’s address) and names a message introduces in a way Lineup can read (a greeting, a sign-off, “my son …”). A name written any other way inside a sentence cannot be recognised and is sent.

1. Parent Inbox — sorting new mail. While the Parent Inbox Responder is on, each new email to the address it watches (read via the gmail.readonly scope above) that comes from a person — not the operator’s own address, not a no-reply or notification sender, not bulk mail — is sent automatically so that Claude can say what the message is asking. What is sent is the subject and what the sender typed this time. The earlier messages quoted under it, and the signature, are not sent, and neither is the sender’s address. Email addresses, links, access codes, phone numbers and the names Lineup knows for that sender (theirs, and the athletes’ and parents’ on the operator’s rosters whose address matches) are replaced by markers first. Claude is asked once; if its answer cannot be used, the message is left for the operator. Sorting never changes, labels, archives, deletes or sends mail.

2. Booking inquiries that arrive by email. When sorting says a message is a booking inquiry, Lineup automatically sends today’s date, the subject and what the sender typed this time, once, with email addresses, links, access codes, phone numbers and the sender’s name replaced by markers, so that Claude can read the group, sport, size, dates and questions in it. The sender’s name and address are not sent: Lineup takes them, and the phone number, from the email on the operator’s Mac. Claude writes nothing in the reply. Lineup saves a Gmail draft built from the operator’s fixed template — their open dates and the link where the client picks a date — and sends it by itself only if the operator turned on automatic inquiry replies (off by default) and the email is less than a day old. Either way it carries no text written by Claude. A paragraph answering the client’s questions is written only when the operator clicks Write draft (4).

3. Parent Inbox — Draft with AI and Polish my text. When the operator presses Draft with AI in a message’s reply box, that message’s subject and the sender’s own words, as they wrote them (the earlier messages quoted in it are removed), are sent with the studio’s name, pricing link, price list and saved notes, and nothing from the operator’s records about the family or the athlete. Polish my text sends the same, plus the reply the operator typed, exactly as typed. Only when the button is pressed. The result appears in the box for the operator to edit; nothing goes to the family until the operator takes the two clicks to send it.

4. Draft with AI in the client email window. When the operator clicks Write draft, Lineup sends the client’s message in the box (for a client with an open inquiry the box starts with that inquiry’s message, and the operator can edit it), the email being written, the client’s name and the contact’s first name, and the studio’s name, pricing link, deposit, open dates, price list and saved notes. Email addresses, links (the date-pick link included), access codes and phone numbers in the message and the email are replaced by markers first. Nothing is sent when the window opens or when a template is picked.

5. Rewrite with AI. When the operator clicks Write options, Lineup sends the subject and message the operator wrote and the tones to try, including any tone the operator describes in their own words. On the Communication tabs the message goes exactly as typed, with placeholders such as {parent_first_name} unfilled. In the client email window the email goes as a template with its blanks unfilled: names, email addresses, links (the date-pick link included) and phone numbers are swapped for placeholders first, and put back into the options that come back.

6. Field corrections. When the operator clicks Extract Corrections, the text the operator pasted in (for example, “his jersey number is actually 23”) is sent so Claude can turn it into roster corrections for the operator to review. Email addresses and phone numbers in it are replaced by markers first, and Claude is not asked for a parent’s email or phone. Names in the notes are sent. Nothing is applied until the operator applies it. This feature does not read Gmail or Google Drive.

7. The Lineup Assistant (voice). While the operator talks to the assistant, what they say (converted to text) is sent, with the results of what the assistant looks up: for an athlete search, the athlete’s full name, team and job, the parent’s name and whether an email address is on file; for a job’s status, its stage, shoot date and what is holding it up; and after it sends an email, whether it went and the address with only its first letter and its domain showing. Parents’ and coordinators’ email addresses, gallery access codes, gallery links and roster links are not sent, and a failed action is reported as a short reason with addresses, links and phone numbers hidden. The assistant can send an access-code email, a gallery email or a roster reminder through the operator’s own email provider, and Lineup refuses any send unless the operator has just said yes out loud to the assistant’s question about that send; one yes allows one send. It cannot change a picture day’s date: that always needs the operator to approve it on screen.

Nothing is sent or changed for the operator without their confirmation. Items 1 and 2 run automatically, only while the Parent Inbox Responder is on; every other feature runs only when the operator presses its button or talks to the assistant. Replies are drafts the operator reads and sends themselves; the one exception is the booking-inquiry reply, a fixed template with nothing written by Claude, which goes out by itself only if the operator turned on automatic inquiry replies (off by default). Nothing is applied to a roster until the operator applies it.

Model training. By default, Anthropic does not use API inputs or outputs to train its models. Lineup’s use of the Anthropic API does not opt in to any exception to this.

Retention. Anthropic automatically deletes API inputs and outputs within 30 days under standard operation. If content is flagged by Anthropic’s own automated trust-and-safety systems as violating its Usage Policy, that content may be retained longer — up to 2 years for the input/output itself, and up to 7 years for the safety classification score. We do not separately store the content of these requests on our servers beyond what is needed to display the result to the operator in the moment.

Crash Reports

Lineup can send us a report when it meets an unexpected error. Crash reports are off by default, and stay off unless the operator turns them on in Settings, after reading an in-app disclosure; a materially changed disclosure stops them until the operator accepts it again, and turning them off stops new reports immediately.

A report is built from a fixed list of fields: the kind of error; where in Lineup’s code it happened; the Lineup, Python and macOS versions; whether it happened in the main window or a background task, and a fixed label for the kind of task; a random report identifier and the time; and the error message, rebuilt so that only programming terms and ordinary error-message words remain, with names Lineup knows, file paths, addresses and non-technical numbers removed. A report carries no identifier of the operator or the computer, no stored values, and no log files. At most 20 are sent per session, and each distinct error once. A name that is not yet on Lineup’s list of names to remove can occasionally survive in part; the in-app disclosure states that limit.

Reports go to Sentry (Functional Software, Inc.), the error-tracking service we use. Sentry necessarily sees the network address a report is sent from; we configure it not to store that address. We use reports only to diagnose and fix defects, and keep each for 30 days.

Payments

Payment for Lineup software purchases is handled by our Merchant of Record, Lemon Squeezy. Lemon Squeezy processes billing information necessary for your subscription and license — payment card information is processed by Lemon Squeezy and is not received or stored by us.

Roll Call credits are separate, and are processed by Stripe. Card details go to Stripe directly; we never receive or store them. What we keep of a purchase is the ledger row and Stripe’s payment identifier, which is what lets a charge be traced back if you query it. Credit sales are closed during the Roll Call beta, so nothing is charged today.

How We Use Information

  • To provide your software license, subscription, and customer support.
  • To protect the license: the license check-in records described above let us notice one License Key being used by more than one studio. A person looks at them; nothing blocks, warns or revokes a license automatically, and travelling to shoot in another state is expected. They are not used for marketing, advertising or profiling, and are never sold or shared, except with Cloudflare, which hosts them, and as the law requires. Questions about them go to support@lineupcentral.com.
  • To provide the optional features described in the Google API Services and AI-Assisted Features sections above, only when you turn them on.
  • To operate, secure, and improve the Software and its optional relay features.
  • To run Roll Call: to match a roster against a folder, to price and record what a job cost, to keep a frame’s sequence position stable when a file is added later, and to sign you in.
  • To communicate with you about your license, subscription, support requests, and material changes to this policy.

How Information Is Shared

  • With Lemon Squeezy, our Merchant of Record for Lineup purchases, payments, subscriptions, License Key issuance, license validation, refunds, and tax compliance.
  • With Stripe, which processes payment for Roll Call credits. Card details go to Stripe and are never received by us.
  • With Cloudflare, which hosts this website, Roll Call and Sidelines, stores the Roll Call account, ledger and plan records — and, for Sidelines, the league rosters and the contact details parents submit — in its D1 database, and the addresses left in a “notify me” form in its key-value storage; and which runs Lineup’s update server and stores the license check-in records described above in its D1 database. Our pages carry no analytics or advertising script of their own and set no tracking cookies; as the host, Cloudflare may keep cookieless counts of page views.
  • With Anthropic, only for Operators who add their own Anthropic API key and turn on an AI-assisted feature, as described in the AI-Assisted Features section above. Requests go from the Operator’s Mac to Anthropic on the Operator’s own account; we do not receive them.
  • With Fly.io, or whichever hosting provider the Operator chooses, which hosts the Operator’s own relay under the Operator’s own account. We are not a party to that arrangement and have no access to the relay — see The Relay and Data Retention below.
  • With Resend or Google (Gmail) — whichever you select as your email delivery provider in Settings — to send access-code, delivery, and roster-reminder emails to parents and coordinators. Gmail sends from your own Google account (see Google API Services above); Resend is used with an API key you provide, which Lineup stores in your macOS Keychain (if the Keychain refuses it, in Lineup’s settings on your Mac until it can be moved) — we do not have a shared or pooled account these emails pass through.
  • With services the Operator connects to their own accounts, only if the Operator chooses to: Dropbox (finished galleries and file names), GotPhoto (finished images and their file and folder names, which carry athletes’ names and teams, uploaded over SFTP), Stripe (the Operator’s own Stripe account, for invoices and the online store), and Zapier or another web address the Operator supplies (a short message about an event, with a client’s name and contact details where the event concerns a client). Each is the Operator’s own account, authenticated with the Operator’s own credentials; we hold none of them. Text messages are turned off in the version of Lineup now distributed.
  • With Sentry (Functional Software, Inc.), only if the Operator turns on crash reports — see Crash Reports above.
  • With authorized service providers who need access to provide support or maintain the Software.
  • When required to comply with law, enforce our terms, prevent fraud or abuse, or protect our rights, customers, or services.
  • We do not sell or rent personal information, and we do not use it for targeted advertising.

Email

You choose your own transactional email provider for parent- and coordinator-facing mail — Gmail or Resend — in Settings. This determines which provider handles access-code emails, delivery notifications, and roster reminders on your behalf, as described in How Information Is Shared above. If you run a relay, it sends some mail itself (Find my photos links, store order confirmations and companion app sign-in links) through the Resend key you give it, whichever provider Lineup uses.

Roll Call is different: its sign-in links, and the confirmation sent when you use a “notify me” form on this site, are sent through our own Resend account rather than one you configure. Those are transactional emails — we do not send marketing to a Roll Call account address, and the “notify me” list exists to tell you when the product it was for actually launches.

So that nobody can use those forms, or the support form, to fill a stranger’s inbox, each counts how often it is used per email address and per network in the past hour. The count is kept against a one-way keyed hash of the address or network, never the address itself, and it is deleted once its hour is over, the next time any of those forms is used.

You can contact us to update an email address on your own account or support communications with us.

Children And Athlete Information

Lineup is software used by youth sports photography businesses. Athlete information may be submitted by a parent, guardian, league, coach, or authorized organizer — or entered directly by the photography business using Lineup — so that the business can run picture day, identify galleries, fulfill orders, and support families.

Sidelines is the exception to the local-first design described below. A league’s athlete names and the contact details its parents submit are stored on our servers, for a stated and short time, because that is the only way a page can collect them at all. The Sidelines section above is the detail, including the deletion clocks.

Roll Call handles the same kind of information and holds less of it. The roster a photographer loads is usually a list of children’s names. Its barcode column, and the columns the photographer’s name pattern uses, reach our servers so that it can be matched against the barcodes in their photographs. It is not stored. The photographs themselves are never transmitted at all. What survives a job is a count, a price, and a list of subject barcodes against a one-way key for each frame — no filenames, no names, no teams, no contact details. The photography business running Roll Call is the data controller for the roster it uploads, and is responsible for its own notices and consents to the families it serves.

The photography business using the software is the data controller for athlete, parent, and guardian information, and is responsible for the privacy notices, consents, and legal basis (including COPPA) for processing that information with the families it serves.

Our design and practices with respect to minors’ information follow these principles:

Local-first, by default. Athlete and roster data entered into Lineup stays on the operator’s own computer until the operator uses a feature that sends it: a relay feature, delivery to their own Google Drive, Dropbox or GotPhoto (folder and file names carry athletes’ names), email to families, or a Sidelines page (the shortened roster only).

Data minimization on the relay. A relay holds what its features need, as listed in The Relay section above, and only when the operator enables it, with one exception: the delivery reports the email provider sends back are kept whole, including the email’s subject, any link clicked, and the recipient’s network address and browser. It is the operator’s own relay, not ours. Emails inviting parents to verify their child’s information contain no athlete details; athlete information is shown only within the secure relay portal behind a unique token-protected link.

Who receives a child’s photo link. Lineup sends a child’s photo link to that child’s family. Someone who has paid for that child’s digital photos also gets their own copy of the link, in a separate email that shows none of the family’s addresses, when the order is tied to that child: the buyer’s email address or name matches the child’s parent contact on the roster, or the studio matched the order to the child by hand.

Retention on the relay. A coordinator’s or parent’s answer is removed once the operator’s copy of Lineup confirms it has it. One that is never collected is removed 30 days after it was given, and not before its link expires. Other relay data stays for the times in the Data Retention table below, and some of it has no automatic expiry; the table says which.

No profiling, no AI training. We do not analyze or profile athlete, parent, or guardian information, and we do not use it to train AI or machine-learning models. (Information on a relay is held for the operator, not used by us.) (The AI-assisted features described above work on the operator’s own email, messages, voice requests and pasted notes; they can include athletes’ and parents’ names, but they are not used to analyze or profile athletes.)

Direct collection, in one place only. On our own servers, Lineup and Roll Call collect nothing directly from athletes, parents, or guardians. (A page served by a photography business’s own relay collects information for that business, not for us.) Sidelines does, and only this: a parent’s own name, relationship, email address and optional phone number, typed by that parent, for an athlete they select from their league’s roster. We never collect information from a child, and a child has no reason to use the page. The roster of names behind the league password comes from the league, by way of the photographer.

Parents, guardians, and league organizers with questions about athlete information, opt-outs, corrections, or deletion requests should contact the photography business running their picture day, or reach us directly at support@lineupcentral.com.

Data Retention, Correction, And Deletion

Information Retention
License and subscription records In accordance with Lemon Squeezy’s business and legal retention requirements
License check-ins (update server) A one-way hash of the License Key, the Lemon Squeezy license and order numbers, the activation ID, the country and state or region, and check-in times: 13 months after that installation last checked in from that region, then deleted. Hosted by Cloudflare. The network address is never stored
Google authorization token Stored in the operator’s macOS Keychain, and in an encrypted studio backup file only if the operator includes saved keys; never on our servers; removed from the Mac on disconnect (permission at Google is withdrawn on the operator’s Google Account page)
Resend API key (if configured) Stored in the operator’s macOS Keychain (if the Keychain refuses it, in Lineup’s settings on that Mac until it can be moved), in an encrypted studio backup file only if the operator includes saved keys, and, if the operator sets up a relay, as a secret in the operator’s own hosting account; never on our servers
Coordinator roster files (relay) Until Lineup confirms it has the file; if never collected, 30 days after the upload or when its link expires, whichever is later, then removed. Stored unencrypted. A record with no personal data (when it was submitted and when it expired) stays 30 more days
Coordinator corrections, parent verification answers, schedule and banner-proof feedback (relay) The answer is removed once Lineup confirms it has it; if never collected, 30 days after it was given (and not before its link expires). The page’s own data (athletes’ names, team, jersey; for a banner proof, player names, head crops and a watermarked proof image) is removed when the link expires. Stored unencrypted; the same no-personal-data record stays 30 more days
Companion app roster copy (relay) First and last name, barcode, jersey number and team of each athlete, with the job’s name, date and location, and no parent contact details. 180 days after the operator’s computer last updated it. Stored unencrypted
Roster changes entered in the companion app (relay) Walk-on and edited athletes; a claimed spare spot also holds a parent’s name, email address and phone number. No automatic expiry, and a family data request does not remove them. Stored unencrypted
Relay sign-up form submissions (not Sidelines) The child’s name, team and jersey number, the parent’s name, email address and phone number, and any text-message consent record. 90 days after Lineup collects them; if never collected, 90 days after the form’s closing date (a form with no closing date keeps an uncollected sign-up until Lineup collects it). Stored unencrypted
Family photo pages (relay) The child’s name, team, job title, picture day and the names and Google Drive identifiers of the photographs. Until the gallery’s window ends: by default 90 days after the delivery email (the business can choose from 30 to 365 days), or 365 days if gallery expiry is turned off. Stored encrypted. The photographs are not stored: they are streamed from the operator’s own Google Drive when a parent views the page
Delivered galleries (the operator’s own Google Drive or Dropbox) When the gallery’s window ends — by default 90 days after the delivery email, unless the business picks another window or turns this off — the share link is taken down and the folder is moved to the provider’s trash. Files on the operator’s Mac are not touched
“Find my photos” lookups (relay) The child’s first name, team and photo-page link, encrypted, with the email address kept only as a keyed one-way hash. 60 days, and never beyond the page’s own expiry
Coordinator job pages, roster-change requests and the client portal (relay) Stored encrypted. Pages: until the expiry Lineup sets. Roster-change requests and documents a client uploads: until Lineup confirms it has them, otherwise 60 days
Quotes, contracts and inquiry submissions (relay) Stored unencrypted. Quotes and contracts: until the expiry Lineup sets (one with no expiry set is not cleared automatically), and an uploaded tax-exemption certificate file is removed when Lineup confirms it has it. Inquiries, and answers to an inquiry’s follow-up questions or date pick: 90 days after Lineup collects them; one that is never collected is not cleared automatically
Online store orders (relay) 180 days after the order last changes. Encrypted so that only the studio’s own Mac, and the parent through their confirmation link, can open it, except for a readable summary — first names and last initials, team, jersey number and items — that staff use to settle orders and that stays the same 180 days. A parent’s email address kept for an in-person payment receipt is encrypted and removed when the order is paid or cancelled, or at the end of the third day after the last shoot date (30 days after the order if no shoot date is known)
Online store confirmation emails (relay) An encrypted copy is kept only while the relay’s automatic retries run (after 1 minute, 10 minutes and 1 hour), and removed as soon as the email is accepted or the last retry fails. A copy that is somehow still held more than a day after the order is removed by the next daily clean-up, so within about two days of the order. “Send confirmation again” is sent from the studio’s Mac, so the relay keeps nothing for it
Crew scheduling and chat (relay) Invitations (shoot, crew name, role, phone number, answer, text-message consent record, unencrypted): removed at the expiry Lineup sets, normally 14 days after the shoot or 60 days after sending when there is no shoot date. Crew chat (unencrypted): no automatic expiry. Companion app chat, client summary and the client and invoice list (encrypted with the relay’s own key): 30 days after Lineup last updated them
Companion app staff accounts (relay) Name, email address and phone number, unencrypted. The account is not removed automatically; a push-notification address is removed when the account is revoked
Opt-out emails, email delivery events and phone job requests (relay) Unencrypted. Opt-out emails are kept permanently so that an opt-out is honoured. Delivery events (the recipient’s email address and the email provider’s whole report: the email’s subject and, for a click, the link clicked, the network address and browser) and phone job requests (organization, date, location, contact name and email address) have no automatic expiry
Calendar feeds, rate-limit records and database copies (relay) Calendar feeds (job names, dates, times, locations): 180 days after Lineup last updated the feed. Rate-limit records (a keyed one-way hash of a network address): 2 days. Before an update changes the database, up to three full copies are kept beside it until replaced
Relay volume snapshots Set by the operator’s hosting provider and the operator, not by us; we do not configure snapshots or backups for a relay
Crash reports (if the operator turns them on) Kept for 30 days and used only to diagnose and fix defects; the operator can turn them off at any time
Sidelines shortened athlete names and parent contact details Contact details: deleted immediately when the photographer confirms a download has been imported (only the contacts that download held). Shortened names: kept while the page is open, and deleted with the last contacts once it has closed. Both: deleted when the photographer or we delete them on request, and otherwise by an automated sweep, the next time it runs after these deadlines: 14 days after the later of the page’s closing date and the most recent export, or 90 days after the closing date if never exported
Sidelines download record One row per download — when, what kind, how many rows, and when it was confirmed as imported. Holds no personal information, and is kept with the league record below after the names and contacts are deleted
Sidelines league record (name, code, dates) Kept after the names and contacts are deleted, as a business record of a job. Holds no personal information
Sidelines wrong-password counter A keyed one-way hash of the network address and a count, within a 15-minute window counted from the first wrong guess, and a count for the league as a whole with no address; an address’s count is cleared on a correct password from it, and all of them when the password is changed and with the league’s data
Sidelines parent session A signed cookie in the parent’s own browser, valid 12 hours, naming only which league it opened. No server-side copy
Roll Call roster rows Not retained. Held for the length of the request that matches them, then discarded
Roll Call image data Never received
Roll Call account, credit ledger and plan records For as long as the account exists, and deleted with it on request. The ledger is a financial record: where tax or accounting law requires a longer hold, that governs. A normalised form of the address is kept after deletion so the free credits cannot be claimed twice by the same inbox
Roll Call sign-in tokens Stored as a one-way hash; single use; expire 20 minutes after they are issued. Deleted when used; an expired one is deleted the next time anyone asks for a sign-in link
Roll Call session A signed cookie in your own browser, up to 30 days. No server-side copy
“Notify me” signups The address, the product it was for, the platform you picked and the time, stored in Cloudflare’s key-value storage. No automatic expiry: kept until you ask us to remove the address
Website form rate-limit counts A keyed one-way hash of an email address or network address and a count, for one hour; deleted the next time a sign-in, “notify me” or support form is used after that hour
Customer support communications Three (3) years
Legal compliance records As required by applicable law

We have no ability to retain production databases, athlete information, photographs, or other data stored solely on an Operator’s computer. The same is true of every folder Roll Call renames: the files, and the changes made to them, only ever exist on the computer that ran it.

To request correction, deletion, or a copy of information connected to you, email support@lineupcentral.com. Requests concerning athlete/parent data collected through Lineup should be directed to the photography business operating it, as the data controller.

Security

For Lineup, we use Keychain storage for tokens and API keys on the operator’s Mac (if the Keychain refuses one, Lineup keeps it in its settings on that Mac until it can be moved; never on our servers). The relay software we supply, which runs in the operator’s own hosting account, is served over HTTPS (plain HTTP is redirected, and browsers are told to use HTTPS only); AES-256-GCM encryption at rest for the items the Data Retention table marks as encrypted, with a key derived from the link that opens them for some of those (family photo pages, coordinator job pages, store pages and the client portal), so the relay cannot open those on its own, and store orders sealed so that only the studio’s Mac, and the parent through their own confirmation link, can open them; authenticated internal endpoints gated by a secret generated when the relay is deployed and held in the operator’s own hosting account and on the operator’s Mac, never by us; a best-effort filter that removes email addresses, phone numbers and labelled names from the relay’s logs; and a web service that runs as an unprivileged user. Items the table does not mark as encrypted are stored unencrypted on the relay’s storage volume, and the relay does not encrypt its database as a whole. Encryption of that volume, and any snapshots of it, belong to the operator’s hosting provider. A deleted record can remain in the free space of the relay’s database file until it is overwritten.

For Roll Call: TLS in transit; no password to steal, because sign-in is a single-use link whose token we store only as a one-way hash and which expires in 20 minutes; a session cookie signed with a server-held secret, so it cannot be forged; and account, ledger and plan records held in Cloudflare D1. Two consequences worth stating plainly rather than leaving to be discovered. Anyone who can read your email can sign in as you, so the mailbox is the thing to protect. And signing out clears the cookie in that browser but does not invalidate a copy of it taken elsewhere before it expires.

No method of transmission or storage is completely secure, so we cannot guarantee absolute security. If you believe information has been exposed or used incorrectly, contact us promptly. Operators are responsible for protecting their own computers, backups, databases, passwords, and local storage.

Your Privacy Rights

Depending on your state of residence, you may have rights under state privacy laws, which may include the right to know, access, correct, delete, and obtain a portable copy of personal information, and to opt out of sale/sharing or targeted advertising (we do not sell, share for targeted advertising, or engage in such activities). These laws include, among others:

California’s Consumer Privacy Act (CCPA), as amended by the CPRA; Virginia’s Consumer Data Protection Act (VCDPA); Colorado’s Privacy Act (CPA); Connecticut’s Data Privacy Act (CTDPA); and Texas’s Data Privacy and Security Act (TDPSA).

To exercise any available right, contact support@lineupcentral.com. We will not discriminate against you for exercising your rights.

International Users

Lineup is operated from the United States. If you access our services from another country, your information may be transferred to and processed in the United States where permitted by applicable law. Because production data generally remains on the Operator’s own computer, international transfers by us are limited to licensing, billing and support information an Operator voluntarily provides, update checks, crash reports an Operator turns on, Roll Call records, and the Sidelines rosters and parent contacts described above.

Changes To This Policy

We may update this Policy from time to time. When we make material changes, we will update the “Last updated” date at the top of this page. Continued use after the effective date constitutes acceptance where permitted by applicable law.

Questions about this policy? Email support@lineupcentral.com.