Pinnie is a sideline tool for youth-sports coaches. Everything you put into it stays on your device.
The rest of this document is the long version, with the detail the app stores and EU/California regulators want spelled out.
Pinnie saves your work using localStorage — ordinary local browser storage, which in the store apps lives inside the app's own private container. This data never leaves your device unless you deliberately export or share it. There is no sync, no cloud copy and no backup on our side.
| What | Why | Where |
|---|---|---|
| Teams and rosters — team names, player names, ability tiers, keep-together / keep-apart rules, owned bib colors | So your squad is there the next time you open Pinnie | pinnie.teams.v2, pinnie.active.v1, pinnie.roster.v1, pinnie.together.v1, pinnie.apart.v1, pinnie.colors.v1 |
| Who's here today — the present/out list | Only players marked "Here" go into Groups and Subs | pinnie.out.v1 |
| The live game — lineup, clock, period, substitution log, minutes and goalkeeper time per player | So closing or reloading the app mid-match doesn't lose the game | pinnie.game.v1, pinnie.lineup.v1, pinnie.periods.v1 |
| Season history — cumulative minutes, starts, goalkeeper time and pairing history per player | Powers the fairness ledger and season-aware "Mix it up" | pinnie.season.v1, pinnie.mix.v1 |
| Focus sessions — which players you watched, the template used, and each logged rep | Produces the per-player process/outcome summary and its season rollup | pinnie.focus.v1, pinnie.focus.prefs.v1 |
| Settings — theme, sport, sound & buzz, group-balance mode, tile density | Remember how you like the app | pinnie.sport.v1, pinnie.sound.v1, pinnie.balance.v1, pinnie.density.v1, and the theme key |
| Housekeeping flags — whether you've dismissed the install prompt, seen the landing page, or been nudged to back up; a one-time rules-migration marker | So Pinnie doesn't repeat a prompt you've already answered | pinnie.install.v1, pinnie.landing.seen, pinnie.bkupnudge.v1, pinnie.rulesmig.v1 |
That is the complete list. There is no hidden identifier, no device fingerprint, and no randomly generated user ID — because there is nothing for one to be sent to.
Cookies: Pinnie sets none. Not for storage, not for preferences, not for measurement.
If you have device backup switched on — iCloud Backup on iOS, or Google Backup / Auto Backup on Android — the operating system may include the app's data in encrypted backups managed by Apple or Google. We have no access to those backups. This is standard OS behavior and applies to most apps. You can exclude Pinnie from backups in your device settings.
On iOS, "Offload App" preserves the data for a later restore while "Delete App" removes it entirely. On Android, uninstalling removes the app's on-device data; if Auto Backup is on, a copy may remain in your Google account until it expires or you delete it. In the web app, clearing site data for pinnie.mudwoodlabs.com in your browser settings deletes everything.
Pinnie is a tool for adults — coaches and team managers — but the names in the roster are usually children's. We take that seriously enough to state it plainly rather than bury it:
A practical suggestion: first names, or first name plus last initial, are all Pinnie needs to do its job. Using less is always safer than using more, especially if you ever share a lineup image or a backup file.
Because none of this data reaches us, we are not in a position to collect, disclose or sell children's personal information — under COPPA, the UK Age Appropriate Design Code, or any comparable regime. Your club or league may still have its own rules about recording player information on a personal device; those are between you and them.
To be explicit about what Pinnie does not do:
Pinnie’s own code contacts no third party. Not on launch, not in the background, not on a schedule. There is no analytics ping, no CDN, no remote configuration fetch, and no "phone home" of any kind. The site is served through Cloudflare, whose settings can inject a script we did not write — that has happened before, so we check the live pages every day and treat a failure as a bug, not a footnote.
That includes the typefaces. Pinnie's screens use two fonts, Anton and Hanken Grotesk, and both files ship inside the app rather than loading from Google Fonts. Until 2026-08-13 they were fetched from Google's font servers on first load, which meant your IP address reached Google before the page painted. It carried none of your data, but it was enough to make "nothing leaves your device" not quite true — so we removed it. Both faces are licensed under the SIL Open Font License, which expressly permits this.
The practical result: on a phone with the app installed, Pinnie can run an entire season in airplane mode. The store builds fetch nothing of their own. The one exception is the tip jar: opening it asks your app store for current prices, and tipping goes through your app store’s own checkout. Those exchanges are between your device and Apple or Google — we never see them, and they carry nothing about your roster. The web app makes exactly one kind of request — asking our own host for Pinnie's own files — and once its offline cache is warm, it stops making even those.
Everything else described in this policy happens only because you deliberately tapped something.
The web app at pinnie.mudwoodlabs.com is a set of static files hosted on Cloudflare Pages. Like any web host, Cloudflare processes the requests needed to deliver the page and keeps operational logs (IP address, timestamp, requested URL, user agent) for security, abuse prevention and traffic analysis. We do not run analytics on top of this, and we do not consult, export or retain those logs. Cloudflare acts as our hosting provider; see the Cloudflare privacy policy.
The web app also installs a service worker — a small script your browser stores so Pinnie loads instantly and works with no signal. It caches Pinnie's own files, fonts included, in your browser. It sends nothing anywhere. The store apps have no service worker; their files are already on the device.
Several features can move data off your device. Every one of them is something you tap deliberately, and you choose the destination. We never see the result.
From the Roster tab you can copy a backup code or download a backup file containing your teams, rosters, rules, season history and Focus sessions. Where you put it is entirely your choice — a note app, a message to yourself, a file on your phone. There is no cloud store it goes to, and we do not learn that you made one. Treat a backup like the roster it contains: it holds player names.
Share buttons hand the content to your operating system's share sheet (the Web Share API, or the native share intent). You pick the destination — Messages, Mail, a team chat group, anything. We do not see which app you choose or what happens afterwards. The shared content is the text or image you were looking at, which may include player names.
The image is drawn on your device and saved to your device. It is never uploaded.
Some screens offer a copy button. Your OS owns the clipboard; we get no feedback about what you paste or where.
Pinnie is free, and every feature is free. The store apps include a Tips screen where you can, if you want to, send the developer a one-off thank-you. A tip unlocks nothing — it is not a purchase of features, a subscription, or a donation to your team, club or coach.
Refunds are handled by the store, not by us: Apple or Google Play.
The website has a Support page offering two optional ways to chip in. Neither appears in the store apps, and neither is required to use anything.
The complete list of outside parties that may touch anything related to Pinnie. Every row is either your own web host serving you the app, or a payment you chose to make — none of them is something Pinnie does behind your back:
| Party | When | What they see | Their policy |
|---|---|---|---|
| Cloudflare, Inc. | Web app only, while it downloads the page | Standard hosting request logs | cloudflare.com/privacypolicy |
| Apple Inc. | iOS app; only if you leave a tip | Your payment details and Apple ID — which Apple already holds. We do not supply them. | apple.com/legal/privacy |
| Google LLC (Google Play) | Android app; only if you leave a tip | Your payment details and Google account — which Google already holds. We do not supply them. | policies.google.com/privacy |
| Ko-fi Labs Ltd. | Web only; only if you choose to tip there | Whatever you enter on their checkout | more.ko-fi.com/privacy |
We do not sell, rent, lease, license, trade or otherwise commercialize personal information. We share nothing with data brokers. We do not engage in "cross-context behavioral advertising" as defined under California law. We do not use your data to train machine-learning models — we do not have your data.
Pinnie holds no personal data on our side, so most data-rights requests have a faster answer than emailing us: the data is in your hands already. We honor these rights globally regardless of where you live.
Use Copy backup code or Download backup file on the Roster tab. That export is complete — it is the same data Pinnie itself uses.
Edit or delete any player, team, rule, game or Focus session directly in the app. No request to us is needed or possible.
We do not sell or share personal information as defined by the California Consumer Privacy Act (as amended by the CPRA). No action is required. Global Privacy Control signals are honored automatically — though with no selling or sharing taking place, the signal has no behavior to change.
To exercise any right, email privacy@mudwoodlabs.com. We respond within 30 days — though for most requests the honest answer will be that we never had the data.
Pinnie is designed for coaches and team managers, not for children, and it is not directed to children under 13 (under 16 in the EEA and UK). We do not knowingly collect personal information from anyone, children included — the app has no mechanism to transmit personal information to us.
Player names entered by a coach are covered in section 2. They remain on the coach's device throughout, and we never receive them. If you believe personal information about a child has somehow reached us, contact privacy@mudwoodlabs.com and we will investigate and delete it.
If we ever become aware of a security incident affecting Pinnie users, we will post a notice on this page and inside the app within the timeframes required by applicable law, generally 72 hours.
We may update this policy if the app changes — for example, if a future feature touches data differently. When we do, we will update the "Last updated" date at the top, and for material changes surface a notice inside the app. Material changes take effect 30 days after that notice. Continued use after the effective date constitutes acceptance.
For any privacy question, data-rights request, or concern about this policy:
Mudwood Labs (a software DBA of Mudwood LLC)
privacy@mudwoodlabs.com