This Privacy Policy ("Policy") describes how NotMyColor ("we", "us", "our", or "NotMyColor") collects, uses, discloses, retains, and otherwise processes your personal information when you use the NotMyColor mobile application, our website at notmycolor.app, and any related features (collectively, the "Services"). By creating an account, signing in, or using the Services, you agree to the practices described here.
NotMyColor is a personal-color-analysis service: we determine your Sci/ART 12-season color season from photos you submit, and we help you score garments against your personal color palette. The Services are operated for individual end users; we do not sell user data, do not run advertising networks, and do not use cross-app tracking SDKs.
When you create an account, we collect:
If you sign in with Apple, NotMyColor receives from Apple:
We never receive your Apple ID password. You can manage or revoke this authentication at any time under iOS Settings → Apple Account → Sign in with Apple.
During onboarding we ask you to provide (some fields are optional):
This information is stored in your account in our database (Supabase) and is used to personalize the color analysis, the garment-scoring engine, and the in-app experience.
During onboarding you may capture or import:
These images are transmitted to OpenAI's API (United States) via our Supabase Edge Function proxy for the sole purpose of determining your color season and undertone. They are not stored on our servers and are not associated with your profile after analysis — only the resulting color season slug, runner-up season, and undertone are saved to your profile. See Sections 3 and 6 for details on AI processing.
When you scan a garment with the in-app camera or import one from your photo library, the photo is:
Documents/scan_photos directory),scan-photos) under your user folder ({userId}/{scanId}.jpg, JPEG compressed to ~600 px) so you can access your history across devices. This bucket is never publicly enumerable: the app accesses it only through short-lived signed URLs (1 hour), requested by your authenticated session.You can delete an individual scan or your entire history at any time from the Scans screen.
If you set a profile picture from the Profile screen, the image is stored on your device and synchronized to your account row in our database (field profiles.avatar_url) so it can be displayed across sessions and devices. You can remove it at any time from the Profile screen.
For each scan we save:
NotMyColor includes a feature that lets you correct the color detected on any scan. You can:
When you submit a correction, we record in the scan_corrections table: the scan identifier, your user identifier, the original color name and HEX, the corrected color name and HEX, the runner-ups that were offered to you, and the timestamp. Thumbs-up confirmations are also logged so we can measure model accuracy. See Section 5 for how this data improves the Services.
NotMyColor includes an optional Wardrobe (or Dressing) feature that lets you build a personal closet of garments you actually own. You add a garment to your wardrobe either by toggling "Add to Wardrobe" on the camera screen before a scan, or by tapping the "Add to Wardrobe" affordance on a scan's detail page. Adding an item is always an explicit user action; nothing is added automatically.
When you add a garment to your wardrobe, we collect and process the following data:
wardrobe-images) under your user folder ({userId}/originals/{itemId}.jpg). It is never publicly enumerable: the app accesses it only via short-lived signed URLs requested by your authenticated session.gpt-4o vision model to extract structured metadata about the garment: category (tops / bottoms / outerwear / dresses / shoes / hats / accessories / bags / jumpsuit), item type, dominant color, secondary colors, material guess, shape/silhouette, important details, pattern, texture, color temperature, saturation, contrast, season compatibility, palette status, outfit usage tags, and a confidence score. This metadata is saved in the wardrobe_items table.gpt-image-1 image-generation model to produce a premium 1:1 product render of the garment (clean studio background, no humans, no logos invented). The generated PNG is uploaded to the same private bucket ({userId}/renders/{itemId}.png) and stored on your device for offline display.gpt-4o-mini from a non-photographic JSON snapshot of your wardrobe (metadata only — no images are sent for this step) and cached in profiles.wardrobe_insights.You can delete an individual wardrobe item at any time from the Wardrobe screen (which removes both the row and the associated Storage objects), or delete your entire wardrobe along with your account from Profile → Delete account.
NotMyColor offers paid subscriptions (monthly and yearly) handled by Apple In-App Purchase (via StoreKit) and presented through our paywall partner Superwall. We do not see your credit card or bank details — those are handled entirely by Apple. We do receive:
com.notmycolor.app.premium.yearly).We store the number of scans you have performed (profiles.free_scan_count) so we can enforce free-trial limits before a paywall is presented.
When you contact support from inside the app or this page, your email client may include the following diagnostic information so we can help you faster: your user ID, the app version and build, your iOS version, and your device model. NotMyColor does not collect any advertising identifier (IDFA) and does not embed any advertising or crash-reporting SDK. We do use a product-analytics tool, PostHog, described in Section 1.15 and Section 6.5, to understand how the app is used.
The following items are stored on your device only (in iOS UserDefaults or in the iOS Keychain) and are never sent to our servers:
Before any photo is sent to our AI providers, you are asked to consent to AI processing. Your consent is recorded both on your device and on our server (profiles.ai_consent_at) so we can prove that processing took place on a lawful basis. You can withdraw this consent at any time by deleting your account (see Section 9).
To understand how our app is used — in particular where in the onboarding flow users drop off — and to improve the product, we use PostHog, a product-analytics tool hosted in the European Union (PostHog EU servers). PostHog records usage events triggered by your actions in the app, for example:
On first use, PostHog generates an anonymous device identifier. Once you are signed in, these events are linked to your user ID (and your email address is associated with your PostHog profile) so we can analyze the end-to-end journey. PostHog may process your IP address transiently to estimate an approximate country/region; no advertising identifier (IDFA) is collected, and this data is never used for targeted advertising or cross-app tracking. Your photos, your detailed scan history, and your wardrobe contents are not sent to PostHog. See Section 6.5 for details on this processor.
Because photos are the most sensitive category of data we process, the table below summarizes exactly what happens to each type of image you may capture or import.
| Type of photo | Sent to OpenAI | Stored on Supabase | Stored locally on device | Retention |
|---|---|---|---|---|
| Face selfie (onboarding) | Yes (gpt-4o) |
No | Only in onboarding memory | Up to 30 days at OpenAI; discarded by app at end of step |
| Wrist photo (onboarding) | Yes | No | Only in onboarding memory | Up to 30 days at OpenAI |
| Additional gallery selfies (up to 5) | Yes | No | Only in onboarding memory | Up to 30 days at OpenAI |
| Garment scan photo | Yes | Yes (private scan-photos bucket, {userId}/{scanId}.jpg, ~600 px JPEG, signed URLs) |
Yes (Documents/scan_photos/) |
Until you delete the scan or your account |
| Profile picture (avatar) | No | Yes (profiles.avatar_url) |
Yes (UserDefaults cache) | Until you remove it or delete your account |
| Wardrobe item — original photo | Yes (gpt-4o for metadata) |
Yes (private bucket wardrobe-images, signed URLs only) |
No (re-downloaded on demand) | Until you delete the item or your account |
| Wardrobe item — generated premium render | Generated by OpenAI gpt-image-1 |
Yes (private bucket wardrobe-images, signed URLs only) |
Yes (Documents/wardrobe_renders/) |
Until you delete the item or your account |
| Live face landmarks (camera preview) | No | No | No | Milliseconds — discarded each frame |
This section consolidates everything NotMyColor does with face-related data, in compliance with Apple's App Review Guidelines.
VNDetectFaceLandmarksRequest) to align the on-screen face guide; and (ii) a single portrait JPEG of your face captured silently from the front camera at the end of the face step. We do not use ARKit, TrueDepth depth maps, 3D face meshes, biometric templates, or any face-recognition technology.gpt-4o chat-completion request.We use the personal information described in Section 1 for the following purposes:
We do not use your data for behavioral advertising, do not sell or share your personal information with advertisers, marketers, or data brokers, and do not profile you for marketing purposes.
NotMyColor is an AI-first product: our color season analysis, garment scoring, and textual feedback are powered by AI models. This section explains in detail how those models work and how your data may be used to make them better.
gpt-4o model, with your face selfie (and, optionally, your wrist photo and up to five gallery selfies), along with the questionnaire context (age, hair color, eye color, wrist undertone, style vibe).gpt-4o with your garment photo plus a curated palette of approximately 300 reference colors. The model returns a color name, HEX value, dominant color analysis, and three to five runner-up alternatives.gpt-4o-mini generate the natural-language analysis displayed on each scan and the human-readable garment label (e.g., "navy crew-neck sweater").gpt-4o-mini checks whether the wrist photo you submitted is usable (in focus, well-lit, actually shows a wrist) before being used for undertone analysis.gpt-4o with the garment photo extracts structured attributes (category, color, material, shape, season compatibility, outfit usage tags).gpt-image-1 model produces a clean 1:1 product render of the garment, used to display it consistently in your Wardrobe grid.gpt-4o-mini sends a non-photographic JSON snapshot of your wardrobe (item categories, color names, palette scores — no images) to generate a short Style Identity summary, a Core Palette description, and Smart Insights for your dashboard. The output is cached in profiles.wardrobe_insights.All AI requests are sent from the app to one of our Supabase Edge Function proxies:
openai-proxy forwards chat-completion requests to https://api.openai.com/v1/chat/completions (used for season detection, garment analysis, wardrobe metadata, and wardrobe insights).openai-image-proxy forwards image-editing requests to https://api.openai.com/v1/images/edits (used by the Wardrobe to generate premium product renders with gpt-image-1).The OpenAI API key is held server-side only and is never embedded in the app. Each request requires a valid Supabase session token, so anonymous users cannot trigger AI calls.
With your explicit consent given during onboarding, we may use your photos (face, wrist, additional selfies, garment scans), your scan history, your color corrections, your detected season, and your profile/questionnaire information to train, fine-tune, evaluate, and otherwise improve the AI models we use to provide the Services — including our own proprietary models and the third-party models we rely on — so that color analysis, garment scoring, and color-correction suggestions become more accurate, more diverse, and more inclusive over time.
Concretely, this means:
get_correction_stats) with a rolling 180-day window and a minimum threshold of 5 occurrences per color pair — to surface the most likely correct color when our primary detection is uncertain. This aggregated view does not contain your user identifier or any other personal data.Our primary color detection (the first step of our AI pipeline) is intentionally not biased by historical correction statistics, in order to avoid anchoring effects and to preserve the integrity of new detections.
profiles.ai_consent_at).NotMyColor relies on the following third parties to deliver the Services. Each of them acts as a "processor" on our behalf and is bound by a data-processing agreement.
Supabase Inc. (United States) hosts our authentication system, our PostgreSQL database (tables profiles, scans, scan_corrections, wardrobe_items), the private Storage bucket wardrobe-images, and our Edge Functions (openai-proxy, openai-image-proxy, delete-account). Your email, profile data, scan history, scan and avatar images, corrections, wardrobe items and renders, AI consent record, cached wardrobe insights, and free-trial counter are stored in our Supabase project. Supabase is bound by its own privacy policy and acts as our data processor under GDPR.
Color analysis, garment scoring, wardrobe metadata extraction, wardrobe insights, and premium wardrobe image generation are powered by OpenAI's gpt-4o, gpt-4o-mini, and gpt-image-1 models. Photos (face, wrist, additional selfies, garment scans, wardrobe originals) and analytical prompts are transmitted to OpenAI's API endpoints in the United States for the purposes described in Section 5.
Superwall (Superwall, Inc., United States) renders our subscription paywall and reports subscription status back to the app. Superwall receives device identifiers it manages itself, paywall impression and conversion events, your subscription status, and the product identifiers you interact with. Superwall does not receive your email, your name, your photos, or your scan history. See Superwall's privacy policy.
NotMyColor uses Apple's identity service (Sign in with Apple) and Apple's In-App Purchase system (StoreKit). Apple processes your authentication credentials and your payment information directly; we do not see your Apple ID password or your payment details. See Apple's privacy policy.
PostHog (PostHog, Inc.) provides our product analytics, hosted on PostHog's European Union infrastructure (eu.i.posthog.com). PostHog receives the usage events described in Section 1.15 (onboarding steps, account creation/login, scan and wardrobe-item additions, paywall impressions, app-lifecycle events), an anonymous PostHog-generated device identifier, standard device properties (app version, iOS version, model, language, time zone), and — once you are signed in — your user ID and email. PostHog may process your IP address transiently for coarse geolocation. PostHog does not receive your photos, physical characteristics, color corrections, or detailed wardrobe contents, and this data is not used for advertising. See PostHog's privacy policy.
Other than PostHog (product analytics, Section 6.5), we do not use Firebase, Google Analytics, Mixpanel, Amplitude, RevenueCat, Sentry, AppsFlyer, Adjust, Facebook SDK, or any third-party advertising or attribution SDK. NotMyColor does not perform any cross-app tracking for advertising purposes and declares NSPrivacyTracking = false in its iOS privacy manifest.
Color season analysis involves processing visual characteristics of your appearance, including skin tone, hair color, eye color, wrist undertone, as well as photos of your face, wrist, and (if you upload them) full-body or selfie photos. Under GDPR Article 9 and equivalent provisions of certain U.S. state laws (notably California CCPA/CPRA), this information may qualify as sensitive personal data.
We process this information solely to provide the color-analysis and garment-scoring service you requested, and — if you consent — to improve the AI models that power those features (Section 5). The lawful basis for this processing is your explicit consent, given during onboarding. We share this data only with OpenAI and Supabase as described in Section 6, and never with advertisers, marketers, data brokers, or any other party for commercial purposes unrelated to the Services.
scan-photos) for as long as your account is active, and locally on your device until you delete the corresponding scan. Deleted immediately when you delete the scan, or within 30 days after account deletion. Each scan photo is also transmitted to OpenAI, which may retain the API request for up to 30 days under its abuse-monitoring policy.wardrobe_items, wardrobe-images, profiles.wardrobe_insights) for as long as your account is active and the item exists in your wardrobe. Removed immediately on item deletion or within 30 days of account deletion. OpenAI may retain the corresponding API requests for up to 30 days under its abuse-monitoring policy.You can delete your account at any time from Profile → Delete account. On deletion, all personal data associated with your account in our database is permanently removed within 30 days. Local data on your device is removed immediately on sign-out or account deletion.
You can delete your account at any time from the Profile tab inside the app. Deletion triggers a server-side Edge Function (delete-account) that:
wardrobe-images Storage bucket (both originals/ and renders/).wardrobe_items table that belong to you.scan_corrections table that belong to you.scans table that belong to you.profiles table (including the cached wardrobe_insights payload).auth.users, which revokes your tokens.The app then wipes all local data, including the Keychain tokens, the UserDefaults cache, the on-device scan photo folder, the on-device wardrobe renders folder, the avatar cache, and any pending offline-sync queues. Deletion is irreversible: we cannot restore the account.
| Processing activity | Lawful basis |
|---|---|
| Account creation, authentication, color analysis, garment scoring, scan history, subscription management | Performance of a contract (Article 6(1)(b)) |
| Processing of photos and sensitive physical-trait information | Explicit consent (Article 6(1)(a) and Article 9(2)(a)) |
| Use of your data to train and improve our AI models | Explicit consent (Article 6(1)(a) and Article 9(2)(a)) — recorded as ai_consent_at in your profile |
| Abuse prevention, security, fraud detection | Legitimate interest (Article 6(1)(f)) |
| Responding to support requests | Legitimate interest and, where applicable, performance of a contract |
| Complying with legal obligations, responding to law-enforcement | Compliance with a legal obligation (Article 6(1)(c)) |
If you are located in the European Economic Area, Switzerland, or the United Kingdom, you have the following rights regarding your personal data:
To exercise any of these rights, contact us at contact@notmycolor.app. We will respond within 30 days.
If you are a California resident, you have the right to:
The table below summarizes the categories of personal information we collect and how we use them, in the format required by California law.
| Category | Examples | Source | Business purpose | Disclosed to |
|---|---|---|---|---|
| Identifiers | Email address, Apple user identifier, internal UUID, anonymous PostHog device identifier | You; Apple (Sign in with Apple); PostHog | Account creation, authentication, support, product analytics | Supabase, PostHog |
| Protected classification characteristics | Age range, gender | You | Personalization of the Services | Supabase |
| Commercial information | Subscription status, product identifier, free-trial counter | Apple StoreKit; Superwall; you | Subscription management, free-trial enforcement | Apple, Superwall, Supabase |
| Audio, visual, or similar information | Face, wrist, selfie, garment scan photos; wardrobe garment photos and AI-generated renders; avatar | You (camera, photo library) | Color analysis, garment scoring, wardrobe rendering, AI model improvement (with consent) | OpenAI; Supabase (garment scans, avatar, and wardrobe images) |
| Sensitive personal information | Photos that may identify you; physical characteristics (skin tone, hair color, eye color, wrist undertone) | You | Color analysis; AI model improvement (with consent) | OpenAI, Supabase |
| Inferences | Detected color season, runner-up season, garment compatibility scores, recommended colors | Derived from photos and questionnaire by AI | Personalization of the Services | Supabase |
| User content | Questionnaire answers, color corrections, support emails | You | Personalization of the Services; AI model improvement; support | Supabase, OpenAI (corrections used to regenerate descriptions) |
| Usage and activity data | Usage events (onboarding steps, scans, wardrobe additions, paywall), app-lifecycle events, device properties (app version, iOS version, model, language, time zone) | Your use of the app | Product analytics, onboarding-funnel analysis, product improvement | PostHog (hosted in the EU) |
To exercise these rights, contact us at contact@notmycolor.app.
Residents of certain other U.S. states (including Virginia, Colorado, Connecticut, Utah, Texas, and Washington) may have rights similar to those described in Section 12 — including the right to access, correct, delete, and (where applicable) opt out of targeted advertising, the sale of personal information, or certain profiling. Because we do not engage in targeted advertising or the sale of personal information, those opt-out rights are effectively already honored by default. To exercise any other right, contact us at the email below.
Washington residents: NotMyColor does not market itself as a health or wellness service and is not subject to the Washington My Health My Data Act, but we will still honor the access and deletion rights described above.
Our processors Supabase, OpenAI, Superwall, and Apple host data in the United States and may operate datacenters in other regions. Our product-analytics processor, PostHog, hosts its data in the European Union. If you are located in the European Economic Area, Switzerland, or the United Kingdom, your personal data may be transferred to a country that does not provide the same level of data protection as your home country. We rely on the European Commission's Standard Contractual Clauses (and the UK addendum / Swiss equivalent where applicable) with each of our processors to ensure an adequate level of protection.
NotMyColor is not intended for users under the age of 13 (United States) or under the age of 16 (European Economic Area). We do not knowingly collect personal data from children under these ages. If you are a parent or guardian and believe a child has provided us with personal information, please contact us and we will delete it promptly.
We use industry-standard security measures to protect your data in transit (HTTPS / TLS) and at rest (encrypted storage on Supabase). Authentication tokens are stored in the iOS Keychain with the kSecAttrAccessibleAfterFirstUnlock protection class. Access to our production database is restricted to a small number of authorized personnel and protected by multi-factor authentication. However, no method of transmission over the internet is 100% secure, and we cannot guarantee absolute security.
We may update this Privacy Policy from time to time to reflect changes in our practices, the Services, or applicable law. We will notify you of significant changes via the app or by email, and we will update the "Last updated" date at the top of this page. We encourage you to review this Policy periodically.
If you have any questions about this Privacy Policy, our privacy practices, or how we handle your data, you can reach us at: