Privacy Policy

Effective October 19, 2026

Alate ("we", "our", "the app") is a mobile application developed by Tessellate Studio that helps you predict whether clothing items will fit based on your body profile. This policy explains what data we collect, how we use it, and your rights.

TL;DRYour body profile lives on your device. When you run a fit check it is sent to our own server to compute the result, then immediately discarded — never sold, never shared with anyone for their own use, and your stored profile is never sent to an AI service. The one exception is a feature you have to go and use: if you scan a tailor's measurement sheet, that photo goes once to our AI provider to read the numbers off it, and is not stored (section 1i). If you choose to sign in, a copy of your profile, fit history and bought pieces is kept in your account so your other devices can pull it, and is deleted when you delete the account. Product URLs you paste are read in real time and discarded — the links we keep are the ones in things you saved: the fit card, a piece you marked "Bought it", a restock alert. One more is held briefly when a store is too slow to read while you wait, just long enough to finish the job and hand the result to your app (six hours at the very most). We don't sell data, don't run ads, don't track you across apps.

1. Data We Collect

a) Body Profile Data

When you build your profile, you answer eleven quick questions: which sizes you shop (women's, men's or unisex), your height, and the shape or length of your shoulders, arms, bust, torso, legs, waist, tummy, hips and thighs. If you have Advanced features (section 1n), you can also enter exact measurements in cm or inches. This data is stored on your device, in the app's private storage. When you run a fit check, your body profile is sent to our own backend so our fit algorithm can compute the prediction. It is used in memory for that single request and then discarded — it is not logged, not used to build any profile of you, and never sent to any third party or AI service. If you sign in (optional), a copy of your profile is also stored in your account so it can be restored on your other devices — see section 1e.

One clarification, because the sentence above is absolute and one optional feature sits outside it: the profile we hold is never sent to an AI service. If you choose to scan a tailor's measurement sheet, you are handing us a photo of a measurement sheet — which you can crop first to leave out the customer's name and number — and that image is read once by our AI provider — see section 1i for exactly what happens to it. Your stored profile is not part of that request.

b) Product URLs (ephemeral, except the ones you save)

When you paste or share a product URL, we send that URL to our backend to read publicly available product information (name, price, image, description, material, sizes) from the source website. The URL is processed in real time and discarded, and we do not persist URLs with your name, email or account. Tracking tags in a link (such as utm_ tags or ad-click codes) are removed before a link is stored or sent to an AI service. One exception: some stores are too slow to read while you wait. When that happens we save that link, together with your device's random app identifier, so we can keep trying in the background and hand the result to your app the next time it asks. That entry is deleted the moment your app confirms it has the result, within 15 minutes of delivery if it never confirms, and in every case within six hours. It is used for nothing else. The links you keep are the ones in things you saved: the fit card itself keeps the product's link (section 1c), a piece you mark "Bought it" keeps it too (section 1e), and a restock alert keeps it while the alert is live (section 1j). Those are yours to delete, with the card, the piece, the alert or the account.

Links on your clipboard. When you open the fit-check panel, the app looks at your clipboard to see whether it holds a link, so it can offer to check it — your phone may show its own notice when it does. If the link is a shop's product page, the app sends the address of that page, without anything after a ? or #, to our backend to look up the brand and the product's name, so the panel can say what the link is before you tap. Nothing else on your clipboard is sent: text that is not a link, and links that are not a shop's product page (a sign-in link, a document, an order page), stay on your phone. The lookup reads no photo, runs no fit check, and is neither stored nor logged. A fit check still runs only when you tap.

c) Fit Check History

Results of your fit checks (the product's link, its name and image address, the fit score, warnings, the recommended size and timestamps) are stored locally on your device. If you sign in, your most recent fit checks (up to 50) are also stored in your account for cross-device sync — see section 1e — and that copy includes the product link, so the card can take you back to the item on any device you sign in on. It stays until you clear that card, clear your history, or delete your account.

d) Device Identifier

On first launch, the app generates a random UUID stored locally and includes it as an X-Device-Id header on backend requests. It is not an advertising ID and is never tied to your body profile. It is used for rate-limiting (to prevent abuse) and to route things you asked for back to this install: a slow store read finishing in the background (section 1b), a restock alert and its push notification (sections 1j and 1k), and — in a scrambled, per-product form — a size-range tap (section 1l). On its own it carries no name, email or account, but where you give us those for a feature it is stored in the same record: a restock alert keeps it next to your email and account id if you are signed in, an Advanced features request keeps it next to the email you gave (section 1n), and the push-token record keeps it next to your account id if you are signed in. That is why section 13 treats it as linked to you. It is regenerated if you reinstall the app.

Our crash-reporting tools generate a second, separate per-install identifier of their own, described in section 1f. That one is never stored with your name, email or account, and neither identifier is an advertising ID.

e) Google Account and Cloud Sync (optional)

If you choose to sign in with Google on the Profile screen, we receive your email address and profile name via Supabase Auth. Sign-in is optional. Your body profile, fit history, and calibration work fully without an account.

Signing in turns on cloud sync. The following are stored in your account in our database (Supabase) and pulled to any device you sign in on: your body profile, exact measurements if you entered them, your budget range, your fit-calibration garments, your most recent fit checks (up to 50), and the pieces you marked "Bought it" (up to 100). For a bought piece that is the product link, the size, when you bought it and, if you answered "How did it fit?", your answer — too small, just right or too large, the size you got, where it was off and how it sits. A note you type about the fit stays on your phone: it is never synced to your account or sent to us (section 1o). Signing out clears them from that device; the account copy stays until you delete the account (section 7). Synced data is protected by row-level security so only your signed-in session can read or write it, and it is never used for any purpose other than restoring your own profile.

f) Crash Reports

We use Sentry and Firebase Crashlytics to collect crash reports and performance traces. These include stack traces, device model, OS version, app version, and a random identifier that stays the same for as long as the app is installed. That identifier is what lets us tell one person hitting a bug fifty times from fifty people hitting it once — it is not tied to your name, email, account or body profile, and it is regenerated if you reinstall.

No body profile data, account details, or the addresses of products you look at are included in crash reports. Where a crash report needs to name a website, it records only the site (for example assets.example.com) and never the full address, because the rest of the address would reveal the specific item you were viewing.

We do not collect your location. Before a crash report is sent we remove the approximate country that could be inferred from your IP address, and we instruct our provider not to store IP addresses. Crash data helps us fix bugs and is retained for 90 days.

g) Brand Request Data (server-side)

If you paste a URL from a brand we don't yet support, the URL and brand domain are recorded in our backend so we can prioritise which storefronts to onboard next. We do not contact the brand on your behalf, and your body profile is never associated with the request.

Optionally, you can tap to be told when we add support for that brand. The app then remembers the brand on your device and tells you inside the app. If you are signed in with Google, the same tap also sends us your Google account's email address, so we can email you once as well; if you are signed out, no email is taken. That email is stored alongside the brand entry for the sole purpose of sending that single notification — never used for marketing, newsletters, or any other communication. We keep it until that notification is sent, then remove it within 30 days; if we haven't been able to send it within 90 days of your request, we delete it then (section 6). We do not store your account id with brand requests. To know when to tell you in the app, it occasionally asks our server whether the product you pasted can be checked yet — that request carries only the product link, which is read and discarded like any other (section 1b).

h) Shared Measurement Snapshots (optional, server-side)

If you choose to share your measurements, the specific values you select are stored on our servers with no name, account, or device identifier attached, behind a random link. You pick how long the link lives (from 1 week to 3 months); the snapshot is automatically deleted within a day of expiring. You can also stop a link at any time from Shared links in the app: its measurements are deleted at once, and anyone who opens it is told it was stopped. We count how many times a link is opened, as a single number — no IP address, device or time is recorded with it, so we cannot tell who opened it. The list of links you have sent is kept on your phone only. Sharing is entirely optional, and only the fields you tick are included.

i) Measurement Sheet Scanning (optional, not stored)

If you choose to scan a tailor's measurement sheet, the photo is sent once to our AI provider — Google (Gemini), or OpenAI if Google is unavailable — solely to read the numbers on it. Before the photo is sent, the app lets you crop it so that names, phone numbers or anything else you don't want read are left out, and we instruct the AI to ignore any personal details that remain. Under both providers' paid API terms, that image is not used to train any AI model, and we do not store the photo. The provider may keep a copy for a limited time to detect abuse of its service, then deletes it — OpenAI states up to 30 days; Google says a limited period without naming one. Only the values you review and approve are saved, and they stay on your device (and in your account, if you are signed in).

j) Restock Alerts (optional)

If your recommended size is sold out, you can tap Notify me to hear when it returns. We store the product URL, the size and your device's random app identifier (section 1d), so the app can tell you in its notifications inbox. If you are signed in with Google, we also store your Google account's email address and your account id, and email you when the size is back; if you are signed out, no email is taken. All of this is used solely for that back-in-stock notification. Stock is re-checked against the live store; we never store the merchant's inventory. The email is never used for marketing, and you can unsubscribe from any alert email.

The product URL is kept for three reasons and no others: it is the page we re-check to see whether your size has come back, it is the link in the notification that takes you to the store, and it is what opens the product page when you tap the push notification. Once the notification is sent, you unsubscribe, or the alert expires, we remove your email address and any account or device identifier from the alert at that moment. The brand, product link and size remain only as a count of demand for that size, with your email and identifiers removed.

k) Push Notification Token (optional)

If you allow notifications, your device is issued a push token by Expo’s push service, and we store it so a restock alert can reach you on the device that asked for it. The row holds the token, the random device identifier from section 1d, your account id if you are signed in, and whether the device is iOS or Android — nothing else. It is used only to deliver alerts you asked for, never for marketing, and it is revoked when you turn notifications off. The app's notifications inbox (and email, if you are signed in) remains the guaranteed channel; push is an addition to it, not a replacement.

l) Size-Range Interest (optional)

When a brand doesn't make a size that fits you and we can tell which end of its range you fall off, the fit result offers a tap to show the brand you'd buy a bigger (or smaller) size. If you tap it, we record only the store, the product, and whether you wanted bigger or smaller — no size, no measurement, no name, email or account. To count each person once, we also store a one-way scrambled code made from your random app identifier (section 1d) together with that store and product. The code can't be turned back into the identifier, and taps on two different products produce unrelated codes, so they can't be linked into a history. The brand sees only a count, through Alate for Brands, our tool for stores. Entries are deleted after 90 days.

m) Usage Statistics (optional, off unless you turn it on)

If you switch on "Share usage stats to help improve Alate" (on the privacy screen, or later in Profile), the app sends short event records to PostHog, hosted in the EU, so we can see where a fit check gets stuck: a link was received, the product was found or not, a fit result was produced and viewed, the store was opened, and — if you answer it — how the item fitted. Each record carries only the step, a few fixed labels (for example whether the link came from sharing or pasting, or how confident the result was), the store's web address without the page (for example brand.com), the app version and whether the phone is an iPhone or Android, and a random identifier that is not your account, email or device advertising identifier. It is replaced when you sign out. No body measurements, sizes, fit scores, product links or names, and nothing that identifies you is ever sent. We do not record your screen, taps or typing, and we do not use your IP address to locate you. Turning the switch off stops it immediately; it is off unless you turn it on.

n) Advanced Features Requests (optional)

Some features — entering your own measurements, scanning a measurement sheet and sharing your measurements — are available on request. If you ask for them, we store the email address you give (with one tap, your Google account's address if you are signed in), your device's random app identifier (section 1d), your account id, when you asked, and whether the request has been approved. We email your request, with that address, to our own inbox through Resend so we can review it and reply. The address is used only for that — never for marketing. Access is granted to the email address on the request: Advanced features work only while you are signed in with that address (a Google address Google has verified), on every device signed in to that account, and stop when you sign out. If you asked while signed out, the request is linked to your account id when you later sign in with the same address, on any device. The full address is never sent back to the app; if the phone that made a request is signed in with a different address, the app shows a partly hidden form of the requested address (for example ra•••@gmail.com) so you know which one to sign in with. The request is deleted when you delete your account, or earlier if you email us (section 7).

o) Fit Feedback (when a piece fits badly)

If you answer "How did it fit?" with Too small or Too large, the size you got, the areas where it was off and any note you type stay on your phone. They are used there to tune the next size we suggest for you, and are not sent to us. If you turned on usage statistics (section 1m), one event says which answer you gave, whether you took the size we suggested and how confident we were — never the size, the areas or the note. If you are signed in, the answer itself (too small, just right or too large, the size you got and where it was off) is part of the bought piece synced to your account (section 1e); the note is not. The only parts of a "How did it fit?" answer that reach our server are the optional see-through answer (section 1p) and the optional length and sleeve answers (section 1q).

p) See-Through Answers (when you answer "How did it fit?")

After you mark a piece as bought, the "How did it fit?" sheet can also ask whether you could see through it: Not at all, In bright light or Yes, needs a layer. The answer is optional. If you give it, we store only: the product (the store and the product's page address, without any tracking codes), your answer, and when it was given. To count each person once per product, we also store a one-way scrambled code made from your random app identifier (section 1d) together with that product; if you answer again, your new answer replaces the old one. The code can't be turned back into the identifier, and answers about two different products produce unrelated codes, so they can't be linked into a history. We keep no name, email, account id, size or body data with it. Shoppers who check the same product then see how many buyers answered and what they said, alongside a separate estimate read from the product photo (section 4).

q) Length and Sleeve Answers (when you answer "How did it fit?")

When you answer "How did it fit?" — including Just right — you can also say whether the body length and the sleeves were too short, just right or too long. Both are optional. If you give either one and send your answer, the app sends us only: the brand name, the kind of garment (top, bottom, dress or outerwear), whether the store lists it as women's or men's (read from the store's page, never from your profile), your length and sleeve answers, and the day. We keep no name, email, account id, device identifier, IP address, product link, size or body data with it, and it is not synced to your account. To count each person once per brand, garment type and line, we also store a one-way scrambled code made from your random app identifier (section 1d) together with that brand, garment type and line; if you answer again, your new answer replaces the old one. The code can't be turned back into the identifier, and answers about two different brands produce unrelated codes, so they can't be linked into a history. We count these answers per brand, garment type and line, and only when enough answers clearly agree does the app show other shoppers a note with the count (for example "7 of 8 buyers say this brand's tops run long in the body"). That needs at least 5 answers: with few answers, all must agree, and as answers grow, a clear majority of at least 60% is enough. The part of the note that applies the count to your own torso, arm or leg length is worked out on your phone; your profile is not sent for it. Because the answer holds no name, account or identifier we can look up, we cannot find or delete it on request.

2. Age Requirement

Alate is intended for users aged 16 or older, and 18 or older in India. On first launch, the app asks you to confirm your age; if your phone is set to India, it asks you to confirm you are 18 or older. If you indicate you're under the required age, the app will not collect body profile data from you. Users under the required age who circumvent the age gate by providing inaccurate information are not our intended audience; we will promptly delete any data we discover was collected from them.

3. How We Read Product Data

Alate fetches publicly accessible product pages to extract fit-relevant information. Our practice:

4. Service Providers

We use the following service providers strictly to operate the app. Your body profile is processed by our own backend (hosted on Vercel) transiently to compute a fit check, and — only if you sign in — stored in our database (hosted on Supabase) for sync. No other provider below receives your body profile data.

No personal data is sold to any party. We have not sold personal information in the preceding 12 months.

5. Security

6. Data Retention

7. Your Rights

At any time you can:

8. Brand Opt-Out

If you operate a storefront and prefer Alate not read your site, submit an opt-out request at this page. Your origin will be added to our blocklist within 24 hours. We honour the opt-out even if it conflicts with our technical ability to read the site; we do not require justification.

9. Additional Rights for EEA/UK Residents (GDPR)

If you are in the European Economic Area or the United Kingdom, you have additional rights under the General Data Protection Regulation:

10. California Residents (CCPA/CPRA)

If you are a California resident:

Categories collected: Identifiers (email and name if you sign in via Google; an email address you give us when you ask for Advanced features, section 1n); physical characteristics (body profile and measurements — on your device, and in your account only if you sign in); Sensory/Geolocation — none; Internet activity (product URLs are ephemeral, with two exceptions — a restock alert keeps the product URL linked to your email until the notification is sent, you unsubscribe, or it expires, section 1j; and the link to a store too slow to read while you wait is kept next to a random app identifier for at most six hours, section 1b; fit history — on your device, and in your account only if you sign in); random per-install identifiers (one for rate-limiting, one for grouping crash reports, a push token if you enable notifications, and a usage-statistics identifier if you turn those on — see sections 1d, 1f, 1k and 1m). App activity (which steps of a fit check you reached) only if you turn on usage statistics (section 1m).

11. Indian Residents (DPDP Act 2023)

Data Fiduciary: Tessellate Studio, a sole proprietorship in India. Contact: privacy@tessellate.co.in.

Consent: Before the app collects body profile data, it shows you this policy after the age check and asks you to tap I agree. That tap is your consent; confirming your age is not. The profile setup screen also explains what the data is and what it is used for. You may withdraw at any time by deleting your profile. Usage statistics (section 1m) are a separate, optional choice that is off unless you turn it on, and can be turned off in Profile.

Purpose limitation: Body profile data is used exclusively to compute fit predictions and, if you sign in, to restore your own profile on your other devices. We do not process it for any other purpose.

Children's data: Alate is for users aged 18 or older in India. When your phone is set to India, the age gate asks you to confirm you are 18 or older, and the app collects no body profile data from anyone who says they are younger.

Grievance Officer:
Email: privacy@tessellate.co.in
Response time: within 15 days.

12. Children's Privacy

Alate is not directed at children. The app's age gate asks all users to confirm they are 16 or older (18 or older in India). We do not knowingly collect data from anyone under that age. If we become aware of such collection we will delete the data promptly. Parents or guardians who believe their child has submitted data to Alate may email privacy@tessellate.co.in for deletion.

13. App Store Privacy Details

Tracking: Alate does not track you across other companies' apps or websites. We do not use the IDFA or any device advertising identifier.

Data linked to you: Email address and name (only if you sign in via Google). Body profile, measurements, budget range, calibration garments, fit history and bought pieces with your fit answers (only if you sign in — synced to your account). Brand-request notify email (only if you are signed in and tap "notify me when added"; held until the notification is sent and deleted within 30 days of sending, or deleted 90 days after you asked if it could not be sent). Advanced features request (the email you gave, the app identifier, your account id once linked — when you ask while signed in, or when you later sign in with that address — and approval status — until you delete your account or ask us to delete it). Restock alerts (the product URL, the size, the app identifier, and your email and account id if you are signed in, until the notification is sent, you unsubscribe, or the alert expires — after which only a record of the brand, URL and size remains, with your email and identifiers removed). Our per-install identifiers — the rate-limiting id, the crash-grouping id, and the push token — are treated as linked to you, because when you are signed in the push-token record holds your account id in the same row. Crash reports are treated as linked for the same reason, even though they carry no name, email or account details themselves.

Data not linked to you: Body profile and fit history when you are not signed in (stored on your device; the profile is sent to our backend transiently for each fit check and discarded), product URLs from successful reads (ephemeral), the link to a store too slow to read while you wait plus a random app identifier (at most six hours, see section 1b), unsupported-brand URL + brand domain (demand signal when no notify email is provided), size-range taps (store, product and a scrambled per-product code, section 1l), and usage statistics if you turn them on (product interaction, with a random identifier that is replaced when you sign out, section 1m).

Data used to track you: None.

14. Changes to This Policy

We may update this policy. Every change is posted on this page with a new effective date. If a change materially affects how we handle your personal data, we will tell you in the app before it takes effect and, where the law requires it, ask for your consent again.

15. Contact

Publisher: Tessellate Studio (sole proprietorship, India)

Email: privacy@tessellate.co.in