PRIVACY POLICY_

> DRAFT PLACEHOLDER: not legal text, replaced by generated text before launch.

1. Who we are

[TO BE GENERATED]

2. Minimum age

Nyvo follows Discord's minimum age (13, or higher where local law requires) and never knowingly collects data from under-13s. Birthdays are optional personal data, with the year hidden by default.

3. Data collected and retention

DataWhyKept forDeletion path
Discord user id, username, avatar, emailSign in to the panelWhile the account existsDelete my account
Discord refresh token (encrypted)Refresh the guild list and linked accounts in the backgroundUntil logout-everywhere, `invalid_grant`, or account deletion (the grant is revoked at Discord)Logout everywhere, Delete my account
Server settings and feature configurationRun the bot in a serverWhile the bot is installed, plus 30 days after removalRemove the bot; purged after 30 days
XP, levels, achievements, challengesLevels featuresSame as server settingsSame; user deletion removes personal rows
Economy ledger (nyvos)Balances, audit, dispute handlingRaw rows 30 days, then daily summariesSame; user deletion removes personal rows
Moderation cases (action, target, moderator, reason)Case history and appealsWhile the bot is installed, plus 30 days after removal. Never compactedSame
Appeal text (Discord appeals to moderators)Review by moderators90 days, purged by the owner pod of the guild's partitionSame
Blocked-server appeal text and staff noteStaff review of a server block90 days after the decision, purged by the `core` retention sweep (triggered by `jobs`)Delete my account removes the submitter's appeals
Closed reports (Report System)Moderator reference90 days after closing, purged by the owner pod of the guild's partitionSame as server settings
Moderation log (the case history view)Moderator referenceSame as moderation casesSame
Ticket transcripts (message text)Staff reference30 daysSame; deleted with the server's data
Application answersReview by staffTo be confirmedSame
Birthday (day and month; year only if the member opts in)Birthday announcementsUntil the member removes itThe member removes it; account deletion
Time zone, DM preferencesLocal-time features, optional DMsWhile the account existsDelete my account
Linked Twitch user idLinking and badgesUntil unlinkedUnlink, Delete my account
Twitch read-only token (encrypted, streamers only)Subscriber checks and EventSubUntil revoked or account deletionRevoke, Delete my account
Vote records and streaksVote rewardsTo be confirmedDelete my account
Server statistics (counters, no message content)Charts and exportsHourly 90 days, daily 2 yearsSame as server settings
Dashboard activity logShow who changed what30 daysSame as server settings
Error records (error id, command, server, user id, context)Support30 days, purged by the `core` retention sweep (triggered by `jobs`)Expire automatically
Staff audit logAccountability for staff actions1 year, purged by the `core` retention sweepNot deleted on request while required for accountability
SessionsKeep you signed inUntil expiry or logoutLogout everywhere

RECIPIENTS

WhoWhat they handle
DiscordSign-in, the bot itself, linked accounts
TwitchLinked accounts, EventSub, the streamer's own chat
CloudflareDNS, CDN (sees traffic metadata), R2 object storage for backups and installers, email routing
DigitalOceanThe production server
Bot-list voting sites (top.gg, Discord Bot List)Vote webhooks (user id)
External uptime and heartbeat monitorsHealth check pings, no user data

Retention periods: [TO BE GENERATED]

4. How data is used

[TO BE GENERATED]

5. Sub-processors

[TO BE GENERATED] (list generated from the data map)

6. Your rights: access, export and deletion

Account deletion revokes the Discord login grant at Discord. Server admins can export their server's Nyvo configuration as a JSON file (member data such as XP and economy is not in that export). [TO BE GENERATED: how members request access, export and deletion, and timelines]

7. Security

[TO BE GENERATED]

8. Contact

Privacy requests: privacy@ (project domain). General support: support@. Security reports: security@. [TO BE GENERATED: full addresses]

9. Changes to this policy

[TO BE GENERATED]

<!-- OPEN: retention gaps marked in docs/privacy-data-map.md (no retention days stated in spec/requirements.md, so none are filled in here). OPEN: the domain's mail setup is not done, so full addresses are unknown. OPEN: member-facing access, export and deletion request process and timelines. OPEN: sub-processor list content (generated from the data map). -->