Home

Creatr Forge

Privacy policy

Last updated: 2026-04-17. This page is generated from an in-app registry (lib/legal/data-collection-registry.ts) so disclosures stay aligned with product areas.

Overview

Creatr Forge is a creator deal and invoicing tool. We process information you provide or connect so the app can work: sign-in, saved preferences, deals, invoices, optional social links, and optional integrations (YouTube public stats, Instagram via Meta). The subsections below list practices by feature area.

Creatr Forge does not sell your personal information or user data to anyone.

Questions about this policy: [email protected]7149003201.

Account and session

You sign in with Google, or with email and password, or a one-time magic link. The app keeps you logged in with secure session cookies while you use it.

App areas (for maintainers)

  • /login
  • /auth/callback
  • /settings
  • Google sign-in
  • Magic link email
  • Password sign-in
  • Delete account (Settings)

Data involved

  • Email address
  • Authentication identifiers and session tokens (managed by the auth provider)
  • Account metadata required to operate sign-in (e.g. user id, timestamps)

Purposes

  • Create and secure your account
  • Keep you signed in across visits
  • Associate your saved data with the correct user
  • Optional second step (TOTP authenticator app) when you enable two-factor authentication in Settings

Third-party services

  • Supabase: Authentication, session management, and application database hosting (as configured for this deployment).
  • Google: If you choose “Continue with Google,” Google processes sign-in per their OAuth and account policies.

Retention: Session lifetime follows your auth provider settings. You can delete your account from Settings; that removes your app data tied to the account (subject to database cascades and provider retention).

Preferences and invoice profile

Optional settings such as country, timezone, 12- or 24-hour time display, currency, content niche, email signature text, and business details you enter for invoices are stored with your account.

App areas (for maintainers)

  • /about-you (Preferences & invoice steps)
  • /about-you/preferences
  • /about-you/invoice-info (display name / sign-off)

Data involved

  • Regional and display preferences
  • Free-text fields you provide (e.g. signature, business name, address blocks)

Purposes

  • Personalize formatting and defaults in the app
  • Pre-fill invoice and email content you generate

Third-party services

  • Supabase: Stores preference and profile rows in the application database.

Instagram (Meta) connection

If you choose Connect Instagram, you sign in with Facebook/Meta. We store your Instagram professional account identifiers and an encrypted token so the server can call Meta’s APIs on your behalf (e.g. for future metrics).

App areas (for maintainers)

  • /about-you (Social media step)
  • /about-you/social-links
  • /auth/instagram/start
  • /auth/instagram/callback

Data involved

  • Instagram user id, username, and linked Facebook Page id (as returned by Meta)
  • Encrypted OAuth access token (server-side only)
  • Derived profile URL (e.g. https://www.instagram.com/…/)

Purposes

  • Remember which Instagram account you connected
  • Support integrations that rely on Instagram Graph API

Third-party services

  • Meta (Facebook / Instagram): OAuth sign-in and Instagram Graph API.
  • Supabase: Stores connection fields in the application database.

Retention: Token and connection fields are removed when you disconnect Instagram in the app, subject to backups and database operations.

YouTube channel (Google sign-in)

If you choose Connect YouTube, you sign in with Google and grant read-only YouTube Data and YouTube Analytics scopes so we can list channels you manage and later refresh Audience Metrics on demand. You pick which channel to save. We store the channel id, title, profile URL, a public subscriber count snapshot, and an encrypted OAuth refresh token (for Analytics refresh and token rotation). Ongoing “What to Charge” public stats still use your server’s YouTube Data API key where applicable.

App areas (for maintainers)

  • /about-you (Social media step)
  • /about-you/social-links
  • /about-you/social-links/youtube-pick
  • /auth/youtube/start
  • /auth/youtube/callback

Data involved

  • YouTube channel id, title, and profile URL
  • Subscriber count or “hidden” flag from public channel statistics at connect time
  • Encrypted Google OAuth refresh token (combined youtube.readonly + yt-analytics.readonly consent)
  • Short-lived pick-session rows if you have multiple channels, including an encrypted refresh token until you choose (deleted after you choose or when the session expires)

Purposes

  • Avoid manual channel URL entry when you connect with Google
  • Resolve which channel to use for public stats features

Third-party services

  • Google (OAuth 2.0 and YouTube Data API v3): Google sign-in with youtube.readonly and yt-analytics.readonly; public video/channel metadata via API key afterward where used.
  • Supabase: Stores linked channel fields and temporary multi-channel pick sessions.

Retention: Disconnect YouTube in the app clears stored channel fields; pick sessions expire within minutes.

YouTube channel stats (“What to Charge”)

To suggest rate ranges, the server uses your linked YouTube channel (id from Google connect or a channel URL you pasted) with Google’s YouTube Data API to read public metadata (for example recent uploads and view counts). Calls use an application API key on the server.

App areas (for maintainers)

  • /get-sponsors/what-to-charge

Data involved

  • YouTube channel URL and/or channel id you saved
  • Public metadata returned by YouTube (e.g. channel id, titles, video ids, view counts, durations)

Purposes

  • Estimate pricing ranges based on recent public performance

Third-party services

  • Google (YouTube Data API v3): Supplies public YouTube metadata when the server calls the API with an application API key.

Retention: Channel reference is stored in your social links. After a successful estimate, the app may save the computed ranges and related figures in `user_social_links.what_to_charge_snapshot` so the What to Charge page and agent can reuse them when a fresh YouTube pull is unavailable (for example rate limits).

YouTube Analytics (Audience Metrics)

When you connect YouTube with Google on About you → Social media, the same OAuth consent includes read-only YouTube Analytics (yt-analytics.readonly) together with youtube.readonly. The app stores an encrypted OAuth refresh token and a JSON snapshot of age/gender and geography reports when you click Update on Audience Metrics. After each successful update, the server may render a single size-efficient WebP image of that card and store it in private object storage under a fixed path per user (replacing the previous file). The agent can include that snapshot in email drafts when brands ask for audience demographics, and may embed the stored chart image in Gmail drafts or sends when the draft includes a designated placeholder token.

App areas (for maintainers)

  • /get-sponsors/audience-metrics

Data involved

  • Encrypted Google OAuth refresh token for YouTube Analytics
  • Optional cached report snapshot (e.g. age/gender percentages, country codes and view counts) and timestamps
  • Linked YouTube channel id (from Social media) used as the Analytics channel scope
  • At most one private WebP object per user in application storage (audience metrics card image), overwritten on refresh

Purposes

  • Show last-28-day audience breakdown on demand
  • Supply the email agent with demographics text when relevant
  • Optional inline chart image in Gmail replies when you use Save draft or Send from the Offers flow

Third-party services

  • Google (YouTube Analytics API): Returns aggregated channel analytics for the OAuth’d account.
  • Supabase: Stores encrypted token and snapshot JSON in user_social_links; stores the optional WebP in private Storage (audience_metric_cards bucket).

Retention: Encrypted token and snapshot rows persist with your social-links record until overwritten or your account is removed. The WebP object is removed when a refresh yields no chart data, or is replaced on each update that produces a chart.

Deals, dashboard, and reports

Deal records you create (clients, amounts, dates, notes, status) are stored to power lists, dashboards, and reports inside the app. Free-text deal fields (such as client/agency labels, topics, notes, billing block, links, Gmail thread id, and first invoice recipient email) are encrypted at the application layer before storage; amounts, dates, categories, and invoice flags stay queryable for dashboards.

App areas (for maintainers)

  • /deals
  • /dashboard
  • /reports
  • /get-sponsors/*

Data involved

  • Deal and workflow fields you enter (sensitive text encrypted at rest with the same server key as Offers caches)
  • Derived aggregates shown on dashboard/reports

Purposes

  • Operate deal tracking and reporting for your account

Third-party services

  • Supabase: Primary application data store.

Invoice details, bank information, and PDFs

Invoice branding, payment instructions, and bank details you save are stored in the database. Bank-related fields are encrypted at the application level before storage. Invoice PDFs may be generated on the server when you email an invoice.

App areas (for maintainers)

  • /about-you (Invoice step)
  • /about-you/invoice-info
  • /deals/…/invoice
  • PDF generation

Data involved

  • Business and payment text you provide
  • Bank details and related invoice fields (encrypted ciphertext in the database)
  • Generated PDF bytes transiently on the server when sending email

Purposes

  • Render invoices and payment instructions
  • Attach PDFs to client email when you choose to send

Third-party services

  • Supabase: Stores encrypted invoice profile data.

Retention: Encrypted payloads remain until you clear or overwrite them; follow your organization’s policy for financial record retention.

Sending invoice email

When you send an invoice by email, the server builds the message and sends it through your connected Gmail account (same Google integration as Offers), including HTML, plain text, and a PDF attachment.

App areas (for maintainers)

  • Email to client (deal invoice)
  • Gmail API

Data involved

  • Recipient email address (To)
  • Email subject, HTML body, and plain-text part
  • PDF attachment
  • Metadata Google processes per their Gmail / Google API terms

Purposes

  • Deliver invoice email from your mailbox on your instruction

Third-party services

  • Google (Gmail API): Sends outbound email from your connected account and processes delivery.

Retention: The message appears in your Gmail Sent mail; deal rows may record send dates and recipient for your records.

Invoice client directory (by email domain)

When you send an invoice to a corporate (non-consumer) email domain, we store the recipient address and Bill-to lines you used, keyed by that domain, so a later invoice can pre-fill them for another deal with the same client domain (for example a dedicated invoices@ mailbox).

App areas (for maintainers)

  • /deals/…/invoice

Data involved

  • Normalized client email domain
  • Invoice recipient email and bill-to text (application-layer ciphertext in the database, same pattern as deal billing fields)

Purposes

  • Pre-fill invoice recipient and Bill to on future deals for the same client domain

Third-party services

  • Supabase: Stores encrypted directory rows per account.

Retention: Rows remain until overwritten by a later send to the same domain or if you replace them manually in a future product flow; follow your retention policy for client records.

Your agent (preferences and Gmail)

On Agent setup you save how your email agent should behave (reply scope, how strictly the AI filters threads for the New offers tab—light vs strict paid-work filter—quoting style, which offer types you accept—integrations, dedicated videos, Shorts—separate categories to reject per offer type, discount preferences). If you connect Gmail, you sign in with Google; we store your address, an encrypted refresh token, the Gmail connect timestamp, and an inbox sync cursor (high-water internal time) for listing threads. Inbox scan lists messages matching Gmail’s Primary and Promotions categories only (not the whole inbox). For the first sync only, an admin setting (API limits) controls how many whole days before your Gmail connect time are included; after that, sync uses only threads newer than your saved cursor. Inbox scan and Preview draft run only after your What to Charge calculator succeeds; then thread text, agent settings, and a What to Charge summary go to an AI model—we do not store full email bodies for model runs beyond what you choose to save below. On the Offers page, AI draft previews (up to an admin-configured slot count), cached inbox thread summaries, and sent-offer rows may be stored with your agent settings in the application database, encrypted at rest with a server key, so they sync across your devices until you send, delete, or newer scans replace older entries. On the Offers page you can save a Gmail draft or send a reply through Google’s API when you choose; that happens in your mailbox, not in our database. Opening a thread in the New offers tab asks Gmail to remove the unread label on that thread.

App areas (for maintainers)

  • /offers
  • /your-agent/setup
  • /auth/gmail/start
  • /auth/gmail/callback
  • Preview draft (Gmail thread)

Data involved

  • Agent preference fields you enter (text, dropdown choices, and toggles such as offer types accepted and New offers filter strictness)
  • Gmail address returned by Google
  • Encrypted Google refresh token (server-side only)
  • Gmail connect time and inbox sync cursor (numeric high-water mark)
  • Email thread content during scan or Preview draft (processed in memory for the request)
  • Database (user_agent_settings encrypted text columns offers_drafts_json, offers_free_products_json, offers_inbox_json, offers_sent_json, offers_ignore_sender_emails): New offers and Free products draft previews (up to admin-configured slots), cached inbox thread summaries, sanitized HTML snapshots of the focused inbound message for instant Offers preview (attachments remain in Gmail), sent-offer rows, and ignored-sender email list for cross-device continuity
  • Optional decline-offer message text you save in Agent setup (encrypted at rest; used when you click Decline on Offers)
  • Optional “Report issue” on Offers: your notes plus a structured diagnostic (thread id, tab, draft text, model key_details, thread plain text as cached in the app) stored in offers_feedback_reports for administrators only

Purposes

  • Configure assisted email workflows
  • Access the mailbox you authorize for reading and draft creation
  • Generate suggested reply drafts from a thread you choose
  • Create or send Gmail replies from the Offers page when you explicitly use Save draft or Send
  • Mark Gmail threads as read when you open them in New offers (removes the unread label via Google’s API)
  • On request, create a Gmail inbox filter from the Offers All-tab thread preview so future messages from a detected sender skip your inbox (same kind of rule as Gmail’s filters; managed in the user’s Google account)
  • Let you send optional problem reports about a thread to improve the product (stored for administrators)

Third-party services

  • Google (Gmail API, OAuth 2.0): Mailbox access per scopes you approve at connect time (read, compose/send, label changes such as marking threads read, and basic settings to create filters when you use Block on Offers).
  • Supabase: Stores preferences, encrypted Gmail refresh token, encrypted Offers caches in user_agent_settings, and optional user-submitted Offers diagnostic rows in offers_feedback_reports (readable only by administrators).
  • OpenAI: Processes thread text, agent setup fields, your What to Charge summary, and any admin-configured Agent persona text to produce suggested drafts (only after What to Charge succeeds).

Retention: Disconnect Gmail in Agent setup clears the stored token and email for this product.

Web app on your device

The site exposes a web app manifest (manifest.json) so browsers can show icons and a name if you add Creatr Forge to your home screen. We do not register a service worker; caching follows normal browser rules. The /offline page is available as a regular page if you open it directly.

App areas (for maintainers)

  • Web app manifest
  • Add to Home Screen
  • /offline

Data involved

  • App icons and display metadata (device, from manifest)
  • Standard browser cache for pages you visit (device)

Purposes

  • Home screen / installed-style shortcut experience
  • Ordinary page load performance via browser cache

Content Forge

Titles and types (long video vs Short), pipeline stage, optional links (YouTube URL, external script/doc URL), in-app script draft HTML you type in Content Forge, optional AI outline form fields you submit to draft a numbered outline into that script, optional “Report issue” on Generate outline (your notes plus a JSON snapshot of the outline form and video idea id, stored in offers_feedback_reports for administrators only, same inbox as Offers diagnostics), optional link to one of your deals, archive flag, and a per-month publish goal with visit/streak counters you build by using Content Forge.

App areas (for maintainers)

  • /video-planner

Data involved

  • Content planning text, in-app script HTML, optional outline-generator form fields (dropdowns and text you enter for the AI outline), optional user-submitted outline issue reports (notes plus form snapshot and planner row id) stored for administrators in offers_feedback_reports, and URLs you enter
  • Pipeline stage and timestamps (created/updated/published marker)
  • Optional association to a deal id you already own
  • Aggregated streak and monthly goal numbers derived from your activity in Content Forge

Purposes

  • Help you plan and track videos inside the app
  • Show progress and gentle motivation (goals, streaks)
  • When you click Generate outline, send your outline form answers to an AI model and insert the result into your script draft
  • Let you send optional problem reports about outline generation to improve the product (stored for administrators)

Third-party services

  • Supabase: Stores Content Forge rows and profile in your account database, and optional user-submitted outline diagnostic rows in offers_feedback_reports (readable only by administrators).
  • OpenAI: Processes the outline form fields you submit to return a structured outline for your script (only when you request it).

Retention: Removed when you delete your account (subject to database cascades).

Administrator configuration

Users with admin access can change global pricing configuration, the Agent persona text (draft-reply instructions), and per-user API cooldown defaults (minimum minutes between successful calls to Gmail, YouTube, YouTube Analytics, and OpenAI-backed flows) stored in the database. That data is not end-user personal data but affects calculations, AI drafts, and how often creators can trigger external APIs. When configured, the app also stores ephemeral per-tab route templates in Redis so admins can see approximate concurrent traffic by page shape (not tied to account identity in that store).

App areas (for maintainers)

  • /admin/*
  • Global pricing tables (niche CPM, multipliers)
  • /admin/agent-persona
  • /admin/api-limits
  • /admin/live-routes

Data involved

  • Administrative settings and rate tables
  • Agent persona instruction text (if configured)
  • API rate-limit intervals and timestamps of each user’s last successful call per API class (for enforcement)
  • Audit of who changed configuration (if implemented)
  • Ephemeral per-browser-tab identifiers and coarsened route keys used only for the Live routes admin view (if Redis presence is enabled)

Purposes

  • Operate multi-tenant or team-wide pricing defaults
  • Tune how the shared email draft agent applies rules for all creators
  • Let administrators see coarse, short-lived traffic-by-route signals when Redis presence is enabled

Third-party services

  • Supabase: Stores admin-editable configuration.
  • Upstash: Optional Redis used for short-lived presence keys backing the Live routes admin dashboard (TTL-based; no account names stored in those keys).

Retention: Database-backed admin settings follow normal database retention. Redis presence keys expire automatically (roughly two minutes without a heartbeat).

Your choices

You can update or remove many data categories inside the app (social links, preferences, invoice profile, disconnect Instagram). Account deletion and data export depend on how your deployment is operated—ask your administrator or use Supabase tooling if you self-host.

For membership, billing, and acceptable use, see the Terms of Service.