Legal

Privacy Notice

What information the current Bounty application handles and exposes.

Pre-launch status. This notice describes the data handling present in the current Bounty repository. It is not ready to serve as a final production privacy policy because the operator's legal identity, public privacy contact, effective date, deployment providers, and jurisdiction-specific disclosures have not been supplied. Those details are omitted instead of guessed. The operator and counsel must complete them before public launch.

Scope

Bounty is a web application for creating, backing, completing, reviewing, and paying bounties for linked creator channels. Registered integrations currently cover YouTube, TikTok, Twitch, Instagram, Threads, X, and Pinterest; an integration is linkable only when its operator-supplied credentials are configured. In this notice, operator means the person or entity that deploys and runs the application. The repository does not identify that operator.

This notice covers what the Bounty application itself collects and exposes. Stripe, linked creator platforms, the configured email service, and the operator's hosting and database providers handle data under their own terms and privacy notices.

Information the current application handles

Account and authentication data

  • Your email address, which is required for sign-in
  • An optional display name, plus account creation and update timestamps
  • Email-verification state
  • One-time email verification tokens and their expiration times
  • An encrypted session token stored in an essential browser cookie

Bounty uses email magic links, not passwords. A requested magic link expires after 10 minutes. The default signed-in session lasts up to 30 days.

Linked channel data

When you link a supported creator account, Bounty processes an OAuth authorization code and access token to request profile information. The application stores:

  • The platform name and platform account or channel ID
  • The channel username or display name and channel URL
  • The time the channel was linked
  • Any channel description or avatar URL already present in the Bounty database

The current callbacks use the access token for the one-time identity lookup and do not save OAuth access or refresh tokens in Bounty's database. Provider adapters request identity or read-only profile scopes needed to obtain a stable account ID and public creator profile.

Unlinking a channel removes its association with your Bounty account. It does not delete the channel record or bounties that already target that channel.

Bounty activity

Bounty stores activity needed for the product workflow, including:

  • Bounty titles, descriptions, categories, target channels, status, deadlines, and timestamps
  • Completion links submitted by channel owners
  • Pledge amounts and status
  • Review votes, selected unsatisfactory reasons, optional reason details, and review timestamps
  • Creator-submitted bounty report reasons, optional report details, and timestamps
  • In-app notification text, related identifiers, read state, and expiration timestamps
  • Optional product-update and marketing email preferences

The browser temporarily places unfinished bounty or pledge checkout details in session storage. This can include a bounty title and description, target channel, amount, and deadline. The application removes that draft after a successful checkout or an invalid draft; otherwise, it can remain until the browser clears that tab's session storage.

Payment and payout data

Stripe Elements collects card details. Bounty does not receive or store the full card number in its database. Bounty does store and process Stripe identifiers and state needed to save and charge a payment method and route creator payouts, including:

  • Stripe customer, SetupIntent, PaymentMethod, PaymentIntent, and Connect account identifiers
  • Whether Stripe reports a creator account as enabled for charges and payouts
  • Pledge charge attempts, retry timing, error messages, disputes, and payout status
  • Stripe webhook event IDs and event types used to deduplicate webhook processing

When Bounty creates a Stripe customer, it sends Stripe the account email, optional name, and internal user ID. Creators who start Stripe Connect onboarding provide additional information directly to Stripe.

Operational records

The application emits server logs for errors, payment and webhook events, cron processing, and notification delivery stubs. Depending on the event, logs can contain internal user, bounty, pledge, channel, Stripe, or notification identifiers and error details. Storage and retention of those logs depend on the operator's deployment provider.

How the application uses information

The current code uses the information above to:

  • Send magic links and maintain signed-in sessions
  • Create and display accounts, channels, bounties, pledges, reviews, and notifications
  • Verify control of a supported creator account during linking
  • Save payment methods with Stripe, charge eligible pledges, route payouts, retry failures, and record disputes
  • Enforce workflow rules and protect OAuth callbacks and Stripe webhooks
  • Diagnose failures through server logs

The repository contains no advertising network or product-analytics integration. It also contains no implementation for selling personal information. This describes the current code; it is not a promise about an operator's future deployment or practices.

Who can see information

Other Bounty users and visitors

Channel and bounty pages expose channel and bounty content. A bounty's public detail page also displays each supporter's display name, pledge amount, pledge status, and pledge date. If a supporter has not set a display name, that page displays "Anonymous supporter" rather than the account email address.

Signed-in users can request review results for reviewable or paid bounties. Those results include voter names, votes, unsatisfactory reasons and details, review times, pledger names, pledge amounts, and whether each pledger voted.

Administrators selected through deployment configuration can access unsatisfactory-review records that include voter and channel-owner names and email addresses.

Do not put private or sensitive information in bounty descriptions, completion links, or review details.

Service providers and linked platforms

The application sends or receives data through:

  • Stripe, for saved payment methods, charges, disputes, Connect onboarding, and creator payouts
  • YouTube, TikTok, Twitch, Instagram, Threads, X, and Pinterest, when a user chooses to link an account and that provider is configured
  • The configured SMTP email provider, for magic-link delivery
  • The operator's hosting, logging, and database providers, as required to run the deployment

No specific hosting, database, logging, or email vendor is guaranteed by this repository; those providers are chosen in deployment configuration.

Cookies and browser storage

The application uses essential storage for current features:

  • NextAuth cookies for sign-in flow, CSRF protection, callback handling, and the signed session
  • A short-lived, HTTP-only OAuth state cookie for each channel-linking attempt; it expires after 10 minutes and is cleared after a completed callback
  • Browser session storage for unfinished bounty and pledge checkout drafts

The current repository does not install advertising, analytics, or preference cookies. A development-only theme preview can use local storage, but that control is not shipped in production mode.

Retention and available controls

The repository does not implement a general automated retention schedule for accounts, bounties, pledges, reviews, payment records, or channel records.

In-app notifications receive an expiration timestamp 30 days after creation and stop appearing in normal notification queries after that time. A cleanup helper exists, but no scheduled notification-deletion job is configured, so expired database rows may remain. Stripe and deployment providers retain their own records according to their configurations and policies.

The current user interface lets you:

  • Change or remove your display name
  • Unlink a supported creator account
  • Remove your pledge while a bounty is still active, subject to the current workflow rules
  • Choose whether to receive optional product-update and marketing emails in Settings; both preferences default to off

The product does not provide a self-service account deletion, data export, privacy-request, or cookie-consent workflow. The repository includes an operator-only deletion script, but no public request channel is configured. A public privacy contact and process must be established before launch; applicable legal rights cannot be replaced by this product limitation.

Security behavior visible in the code

The current implementation uses encrypted authentication session tokens, one-time email links, HTTP-only OAuth state cookies, OAuth state validation, authenticated application routes, Stripe webhook-signature verification, and webhook event deduplication. Production OAuth state cookies are marked secure.

These are implementation details, not a guarantee that a deployment is secure. The repository does not establish claims about encryption at rest, certifications, audits, breach-notification timing, or a particular hosting security program.

Changes and required operator information

This notice should be updated whenever the data model, integrations, public data exposure, or deployment practices change.

Before public use, the operator must publish at least its identity, a working privacy contact, an effective date, the actual deployment providers, any required regional disclosures and request procedures, and a counsel-reviewed retention and security description.