Privacy Policy

Effective 2026-11-09 · Applies to the StencilPort app for iPhone and iPad

To draw a stencil, StencilPort sends the photo you choose to our server and to our AI providers, fal.ai and ByteDance (BytePlus). This policy explains what is sent, who receives it, what is stored and for how long, and what you can do about it.

Who is responsible

StencilPort is provided by Mohamed Douzi (ScaleWebOps) ("we", "us"), the controller of personal data described here. Contact: support@scalewebops.com.

Your photos and how a stencil is made

  1. You choose one photo. The app only receives the images you pick. It shrinks the photo to a JPEG of about 1600 pixels on the long side.
  2. The first time, the app tells you the photo goes to our AI providers and asks you to agree before you choose one.
  3. The app sends the photo to our server, which runs on Supabase in the European Union.
  4. Our server passes the photo and a style instruction to fal.ai, which runs Seedream, an image model made by ByteDance. fal runs an automated safety check on the request, and a photo it blocks does not produce a stencil.
  5. Our server receives the finished stencil, stores it privately and shows you a low-resolution preview. The full-resolution file only reaches the app after an active trial or subscription is confirmed.

A photo can show a person, such as a client. Only use photos you have the right to use, and see our Terms of Use.

If the AI service is unavailable, subscribers can choose a basic look instead. That look is made inside the app and the photo is not sent to us or to our AI providers.

What our server stores and for how long

DataWhat it isHow long we keep it
Your reference photo Held in memory while the request is handled and passed to fal.ai. We do not write it to our database or file storage. A redo sends the photo again. Not stored by us after the request
Full-resolution stencil The image returned by the AI model, in private storage. Only our server can reach it, and the app gets a link that lasts 5 minutes. Deleted when the app confirms it has saved the file, or after 7 days if that comes first
Preview A low-resolution copy of the stencil, in the same private storage. 7 days
Job record Your install ID, the type of job, style, status, error code, image dimensions and file size, estimated cost, timestamps, and fal's request ID and links for that job. Removed about 30 days after the job finishes
Device record Your install ID, App Attest key ID and public key, the signature counter, and whether this device has used its free preview. Until you use Delete my data. It does not expire on its own
Subscription link Your install ID and a SHA-256 hash of the subscription's identifier, so an iPhone and iPad can share one subscription. Until you use Delete my data. It does not expire on its own
Stencil counts The same hash, the period, and how many stencils were used. It does not include your install ID. Kept after Delete my data, so deleting data cannot refill a monthly allowance. It does not expire on its own
Abuse-prevention data Request counts per install ID and hashes of one-time security codes. About 2 hours or less
Server logs Our code logs event names and non-identifying values such as the job type. As our host, Supabase may also keep standard request logs, which can include your IP address, under its own terms. Set by Supabase

We do not use your photos or stencils to train AI models.

What our AI providers do under their own terms

fal.ai and ByteDance handle your photo on their own systems and under their own terms. We do not control those systems. This is what their published terms said when we checked them on 9 November 2026.

fal.ai. Your photo and the generated stencil pass through fal. fal's API Services terms say fal will not use client content to create, train or develop its products or services. That commitment does not apply to models fal marks "Pending Enterprise Ready". When we checked, fal's listing for this model carried a "Partner" label and no "Pending Enterprise Ready" label; fal can change its labels. fal's general Terms of Service also allow it to use usage data, which can be derived from what customers send, to develop its products, services and AI models.

ByteDance (BytePlus). fal's API Services terms say that content sent to a third-party partner's model is transferred to that partner. Seedream is ByteDance's model and fal lists it as a partner model, so your photo reaches ByteDance, which offers its AI models through BytePlus. BytePlus's General Terms for AI Services say it will not use customer data to train the foundation models behind those services, apart from feedback or with written consent, and that it may retain data about use of the services to provide and maintain them and to protect against fraud, abuse and security threats. We reach Seedream through fal and have no contract of our own with BytePlus, so we cannot say how those terms apply to a particular request.

Deletion at fal. With every job we ask fal not to store the request's input and output, we set generated files to expire after 1 hour, and after the job we ask fal to delete the request data. We cannot confirm that fal has deleted a given photo or stencil at a given time, and we cannot delete anything held by ByteDance.

How the app identifies a device

StencilPort has no accounts. These identifiers let our server recognise an installation and stop abuse. We do not use the advertising identifier (IDFA) or the vendor identifier (IDFV).

What stays in the app

Purchases and subscriptions

Payments are processed by Apple. We never receive your payment details or Apple Account email.

To check and restore subscriptions we use RevenueCat (RevenueCat, Inc.) as a service provider. When the app starts, when you open the subscription screen, purchase or restore, the app sends RevenueCat your install ID, App Store transaction information for StencilPort, product identifiers, app and iOS version, locale and storefront; RevenueCat's servers also see your IP address. Our server also asks RevenueCat whether your install ID has an active subscription. This is used to provide and verify StencilPort Pro. It is not used for advertising or tracking. See RevenueCat's privacy policy and Apple's privacy policy.

Optional analytics and crash reports

The current version of StencilPort is built without analytics and crash reporting, so nothing is collected and the two switches in Settings → Privacy & diagnostics show as unavailable. If a later version includes them, Share usage analytics and Share crash reports are separate and both are off by default, and we will update this page first. Turning a switch off later stops collection; turning analytics off also clears its local identifier, and crash reports that were not sent are deleted.

In those versions, if you turn them on, we use Google's Firebase Analytics and Firebase Crashlytics:

SwitchWhat is sentWhyKept for
Share usage analytics A fixed list of app events (for example "stencil previewed", "paywall viewed", "print result") with simple values such as paper size, a duration range or "pdf/png"; a random Firebase app-instance identifier; device model, iOS and app version, language; an approximate region derived by Google from the IP address. Understanding which features work and where people get stuck. Up to 2 months (event-level data), then aggregated
Share crash reports Crash stack traces and short error codes with personal details removed; device model, iOS and app version, memory and storage state at the time of the crash; a random Firebase installation identifier. Finding and fixing defects. 90 days

Analytics and crash reports never contain your photos, stencils, thumbnails, file names, folder paths, project titles, notes, receipts or email address. We do not ask to track you, and we do not combine this data with your install ID or any other identifier. See Firebase privacy and security.

Support requests

If you email us, we receive your email address and what you write, plus the short technical summary the app adds to the draft if you keep it (app version, iOS version, device type, storage and project-count ranges, free/Pro state and recent error codes). You can read and edit the draft before sending. We use it only to answer you and keep the correspondence for up to 2 years, unless you ask us to delete it sooner. Please do not attach photos you do not want to share.

This website

These pages use no cookies, analytics or scripts. The hosting provider may keep standard server logs (such as IP address and pages requested) for security and operations.

Who receives data

Supabase (hosting, database and file storage), fal.ai and ByteDance (BytePlus) (drawing the stencil), Apple (purchases, App Attest and DeviceCheck), RevenueCat (subscriptions) and, in versions that include them and only if you opt in, Google Firebase, as well as anyone you choose to share files with. We do not sell or rent personal data and we do not use it for advertising.

Our server is in the European Union. fal.ai, ByteDance (BytePlus), RevenueCat, Apple and Google may process data in the United States and other countries where they operate, including countries outside the EEA and UK, under their own safeguards.

Your choices and rights

Legal bases (where GDPR applies): performing our contract with you (drawing stencils, purchases and restoring access), our legitimate interest in preventing fraud and abuse (device verification and usage limits) and in answering support requests, and your consent (optional analytics and crash reports, which you can withdraw with the switches).

Children

StencilPort is a professional tool for tattoo artists and is not directed to children. We do not knowingly collect personal data from children.

Changes

If we change how StencilPort handles data, we will update this page and its effective date before the change takes effect, and update the App Store privacy information.