Privacy policy
Effective October 25, 2026. How League Lens handles information.
Summary
League Lens runs on hardware you control. It doesn't require an account, and the current version doesn't collect, sell, or share personal information for advertising, analytics, profiling, or cross-context tracking.
Buying it
Stripe handles payment. You enter your card details on Stripe’s checkout page and Stripe processes them. DWMM Holdings never sees, receives or stores them.
The email address you enter at checkout, so we can send you your key, and send it again if you ask.
Your key, encrypted, so it can be sent again.
Stripe’s record of the transaction (amount, date, country and payment reference), which is what accountants and tax authorities require.
League Lens has no account with us and no telemetry. We can’t see your leagues, rosters, reports or questions. The only thing a server will ever tell us is what it sends when it’s activated or released.
Stripe is a separate controller of the payment information it processes, under its own privacy policy. DWMM Holdings keeps the transaction record for as long as tax and accounting law requires, and keeps your purchase email address and key for as long as it's needed to support the license you bought.
Your fantasy league
The server reads your leagues from Sleeper’s public API, using the Sleeper username you give it. It only reads, and never changes anything on Sleeper. Sleeper sees those requests, and your IP address, under its own privacy policy.
For kickoff times and game status, the server reads the NFL schedule that nflverse publishes on GitHub, and ESPN’s public scoreboard. Those requests carry nothing about you or your league.
Claude
Reports, injury reports and the questions you ask are written by Claude Code, which runs on your Mac signed in to your own Claude account. For each one it sends Anthropic the instructions and the facts the report needs: your league’s rosters, matchups and scores, the numbers League Lens worked out, and your question. Anthropic handles them under your account’s terms and its own privacy policy.
With web research on, which it is unless you turn it off, Claude may search the web for news about the players in a report. The search is about players, not about you.
None of it is sent to DWMM Holdings.
Codex and local models in LM Studio are planned. When they’re supported, this policy will say what each one receives. A local model runs on your own computer, so nothing would be sent anywhere.
Notifications
If push notifications are set up, the server sends each notification’s text, such as a lineup alert or a new report’s title, to Apple Push Notification service, which delivers it to your iPhone. Otherwise the app checks your server for news itself in the background.
Activating a server
When keys go on sale, entering one will send a single HTTPS request to league-lens.dwmmholdings.com with the key and an identifier for the server, and nothing about your leagues, reports or questions. This policy will list exactly what it contains before then.
On your local network
The server announces itself on your local network with Bonjour, so the iPhone app can find it. You can turn that off and type the address instead. The announcement carries the server’s name, which includes your Mac’s name, its port, an ID for the server and the version of its API, and nothing about your league.
Reaching the server isn’t enough to use it. A phone needs a one-time pairing code from your Mac, and after that every request carries that phone’s own token.
Away from home, the app reaches your server over your own Tailscale network. There’s no relay, and nothing passes through DWMM Holdings.
League Lens for iPhone
The iPhone app talks only to your own server. It sends DWMM Holdings nothing, and has no license, no activation and no analytics. It uses the camera to scan the pairing code, your local network to find and reach your server, and notifications if you allow them.
What stays on your machine
Your leagues, rosters, stats, reports, questions and paired devices are stored on your Mac, in League Lens’s own folder and database. The iPhone app keeps a cache of recent responses so it works offline. Apart from what Claude needs for each report, described above, none of it leaves your Mac, and none of it is sent to DWMM Holdings.
League Lens doesn’t ask for your contacts, location or advertising identifier.
Network activity
The server calls only Sleeper, the two schedule sources, Claude Code and, if you set it up, Apple Push Notification service, all described above. It refuses to call any other host unless you add it yourself. There’s no background telemetry, no advertising SDK and no third-party analytics.
Retention and deletion
League Lens keeps your data on your Mac, so deleting its data folder deletes it. It keeps daily database backups and logs for 14 days, and raw responses from Sleeper for 30. DWMM Holdings has no copy of any of it. What Claude received is kept by Anthropic under your account’s settings.
Purchase records are kept while the key exists. If you want them deleted, write to us.
Support messages
If you contact support, we receive whatever you choose to send, usually an email address and the details we need to answer you. We use it to reply, keep it only as long as reasonably necessary, and don’t sell it or use it for advertising.
Write to dmoore@
Changes
Changes are posted on this page with a new effective date. If a future version adds a feature that changes these practices, this policy and any applicable app store disclosures will be updated before that version is released.