Not yet reviewed by a lawyer
This policy was written from the repository rather than from a template, so the factual claims track the code. It has not been reviewed by a lawyer. Everything in it is true of the service as built; where a control does not exist yet, the policy says so plainly rather than describing it.
The parts most worth a lawyer's time here: the third-party transfer paragraph in section 5 , which describes transfers to four independent processors, and the retention statement in section 6 , which describes two different automatic deletion rules a reviewer can verify against the bucket configuration.
Effective from the first public release of the app.
On this page
Summary
Account and identity
What you give us
What the service produces about you
Your face, and what Luxim does with it
Third parties, and what leaves the service
Retention
Provider API keys
Security
Your rights
Children
Changes
Contact
This policy describes what Luxim collects, where it goes, how long it is kept and how to get it back or get rid of it. Luxim turns a written sentence into a short film, and it does that by sending your words and your reference images to third-party generation services. That transmission is the central privacy fact of the product and it is described plainly in section 5 .
Luxim is published by Alessandro Giulianelli, a sole trader established in Abu Dhabi, United Arab Emirates.
Contact: support@luxim.app
1. Summary
Data
Why it exists
How long it is kept
Who processes it
Apple account identifier (the stable user identifier Sign in with Apple returns) and, if you choose to share it, your name
Creates and identifies your account; every stored object is namespaced under it
Until you ask for the account to be deleted
Apple, Google (Firebase Authentication)
Images and video you upload as references
Supplied to the generation provider as reference material for the frames and clips it produces
Kept until you delete them
Google (Cloud Storage), plus the generation provider fulfilling that request
Prompts, story text, character profiles, place descriptions, style and skill text
The instructions the models are asked to follow
Kept until you delete them
Google (Firestore), plus the generation provider or model fulfilling that request
Intermediate frames and per-shot video clips
Working artefacts of a render
Deleted automatically 30 days after they are written
Google (Cloud Storage)
Finished films and exported PDFs
The output you asked for
Kept until you delete them; no automatic deletion
Google (Cloud Storage)
Job records, per-shot state, provider request and response logs
Shows a render's progress, supports retries, and records what was sent
Kept until you delete the film; see section 6.4
Google (Firestore)
Spend ledger and credit ledger (monthly totals in US dollars and provider credits)
Enforces the monthly spending cap and shows you what a render cost
Retained; deleting a film does not rewrite it
Google (Firestore)
Nothing you supply
You hold no provider credentials. Generation runs on Luxim’s own accounts
Not applicable
Not applicable
Device push token
Delivers the notification that a render finished or needs a decision
Until the token is replaced or the account is deleted
Google (Firebase Cloud Messaging), Apple (APNs)
Ratings, favourites, film names, skill marks
Your own annotations; the app reads them, the backend does not
Kept until you delete them; ratings deliberately survive deletion of the film they describe
Google (Firestore)
2. Account and identity
Luxim signs you in with Sign in with Apple. The app requests only the name scope from Apple.
It does not request your email address, and no email address is asked for anywhere else in the app. If you use Apple's Hide My Email feature, that has no effect here, because the app never asks Apple for an address in the first place.
What the backend holds is the account identifier Firebase Authentication derives from your Apple credential. Every document and every stored file belongs to that identifier and is addressed by it.
An anonymous sign-in path exists in the code, but it is restricted to local development against the Firebase emulator suite and cannot create an account on the production project.
3. What you give us
Uploads. You upload images, and for video-to-video work short video clips, from your device. They are stored under your own uploads folder. A single image upload is limited to 15 MB and a single video upload to 50 MB, and an account is limited to 2 GiB of uploads in total.
Text. Prompts, the sentence a film starts from, shot descriptions, character profiles, place descriptions, named render styles and prompt-craft overrides. These are stored as documents belonging to your account.
No provider credentials. You do not connect accounts to the generation services and you never hold a key for one. Luxim runs them on its own accounts and charges you in Lumens. Section 7 describes what that means for your data.
Device push token. If you allow notifications, the device registers a token so the backend can tell you a render finished or is waiting on a decision.
4. What the service produces about you
Rendering a film writes records to your account: a job document holding per-shot state, the prompts that were used and what each shot was billed; a per-shot log of the request sent to the provider and the response that came back, with key material excluded; monthly spend and credit totals; cost estimates; and reconciliation alerts when billed cost drifts from the estimate.
You can read all of this. You cannot write it, and neither can a compromised copy of the app: those collections are written only by the backend.
4.1 Your face, and what Luxim does and does not do with it
When you build a character from a selfie, Luxim sends the photograph to a vision model that writes a description of the person in words, their face, hair, build and manner, and then generates a set of reference drawings from that description. The character that persists across your films is that written description and those drawings. It is what lets the same character appear again without you re-uploading anything.
What Luxim does not do: it does not run facial recognition, it does not measure the geometry of your face into a template, and it does not build a faceprint that could identify you across photographs or anywhere else. Nothing in the product compares your face to another to decide who you are. The description and drawings exist to redraw your character, not to recognise you, and they are never used for advertising, analytics or building a profile of you.
Because some laws treat any handling of a face as sensitive whatever the purpose, Luxim treats it that way regardless of whether it is legally required to. So: building a photorealistic character from a photo asks for your confirmation first, that the photo is of you or of someone who agreed to it, and it will not proceed without that. Your uploaded photo and everything derived from it are kept only for as long as the character exists, are deleted when you delete the character or your account, are never sold, and leave the service only to the generation providers named in section 5 and only to do the work you asked for. This is the written policy that handling requires, and it is the whole of it.
5. Third parties, and what leaves the service
Prompts and reference images are transmitted to the generation provider that fulfils a request. This is not incidental. It is how the product works. When you generate, the text of the prompt and any reference images bound to that shot are sent to a third-party provider's API, either as base64 bytes in the request body or as a time-limited signed download link valid for one hour.
The text that reaches a provider is not always byte-identical to the text you wrote. Before a request goes out, the backend rewrites certain words: brand names are replaced by descriptions of the thing, a small registry of words that providers have previously refused is replaced by equivalent descriptions, and numeric ages are replaced by adult age bands. The document you saved keeps your words; only the outbound request is rewritten.
The processors, named individually:
Google LLC / Google Cloud (Firebase). Authentication, Firestore, Cloud Storage, Cloud Functions, Cloud Tasks, Cloud Messaging, App Check and Secret Manager. This is the platform the whole backend runs on.
Apple Inc. Sign in with Apple, and the Apple Push Notification service that carries notifications to your device.
fal.ai. Video generation and video composition. Requests go to queue.fal.run. fal is also called back by a webhook when a render finishes.
Higgsfield. Video and image generation over the Higgsfield gateways (mcp.higgsfield.ai, fnf-api-gw.higgsfield.ai, platform.higgsfield.ai), with authentication through clerk.higgsfield.ai. On this route, reference images are uploaded into your own Higgsfield account.
Google (Gemini API). The vision model that reads an uploaded reference and extracts a workflow, and the image model that produces frames. Requests go to generativelanguage.googleapis.com. This is a separate API from the Firebase platform above and is called with the key you supplied.
Anthropic. A vision and authoring model used for story understanding and direction suggestions. Requests go to api.anthropic.com.
Each provider handles what it receives under its own privacy policy and terms, on Luxim’s account rather than one of yours. Luxim does not control that handling. A provider may retain the prompt or the reference image it received, and at least one of them reserves the right in its own terms to use what it receives to improve its models. Luxim never trains anything on your work, and it cannot make that promise on a provider’s behalf, so it does not.
International transfer. The Cloud Functions backend deploys to the me-central1 region by default.
The Firestore database and the Cloud Storage bucket are both in me-central1, which is Google’s Doha, Qatar region. Your account records, uploads, frames and finished films are stored there.
Independently of where the backend runs, the providers above are operated from their own regions, so generating a film transfers your prompt and reference images across borders. Luxim is not offered in the European Economic Area, the United Kingdom or Switzerland, and the App Store listing excludes those territories. If that changes, this section will name the transfer mechanism relied on for each provider before the app becomes available there.
Crash diagnostics. When the app closes unexpectedly, a crash report is sent to Google Firebase Crashlytics. It contains what the app was doing at the moment it failed — a stack of function names, the device model and the iOS version — and your account identifier , so that somebody writing in to say "the app keeps closing on me" can be matched to their own reports rather than searched for among everyone else's. It carries no films, no prompts and no pictures. The identifier is cleared the moment you sign out, so a crash after that is not attributed to you.
6. Retention
Retention is enforced by two automatic bucket rules and by your own deletions. Both automatic rules are stated exactly as configured.
6.1 Intermediates: 30 days
Every frame and every per-shot video clip the render worker writes is tagged with a custom time when it is stored, and the first lifecycle rule deletes any tagged object 30 days after that time. These are the files under frames/ and clips/.
6.2 There is no second rule, and your uploads are not deleted on a timer
A 180-day rule on every image under users/ was configured and is now removed. It could not tell one image from another: the photographs you upload, the reference sheets that define your characters, and the places a film discovered and you chose to keep are all .png and .jpg under users/, so it would have deleted the things you made the account for alongside the working files it was meant to clear. Storage lifecycle rules match on a path prefix or a filename suffix and cannot look inside a path, so there was no way to aim it at the working files only. Those files are reached by the tag instead, which is what 6.1 describes. Your uploads, character sheets and kept places are now held until you delete them.
6.3 Everything else in storage
Video files and PDF exports under your finished outputs and exports folders carry no custom time and are not images, so the rule cannot reach them. They are kept until you delete them.
6.4 Documents
Stories, characters, places, styles, skills, jobs, ratings and annotations are kept until you delete them. Deleting a film deletes its stored files, its job record and the story it was made from. Three things deliberately survive that deletion: your ratings, because they are feedback about craft rather than about the file; places that film discovered and that were promoted into your own library; and the character plates, which belong to the character rather than to the film.
6.5 The spend ledger is not rewritten
Deleting a film does not reduce the monthly spend or credit totals. Spend that happened happened, and the ledger is the record of it.
6.6 Provider request and response logs
These are stored under the job they belong to and are removed when that job is removed. They also expire on their own schedule: a provider log is deleted 30 days after it is written, whether or not the film it belongs to still exists.
7. Credentials
You hold no credentials for the generation services, so there is nothing of yours to lose here. Luxim authenticates to those services with its own keys, held in Google Secret Manager and never sent to a device.
There is no endpoint anywhere in the backend that returns a stored key to a client, and the response types are structurally incapable of carrying one. As a second layer, the database rules reject any write to a provider pointer document that contains a field named key, apiKey, api_key, secret, secretValue, token, keyValue, credential or credentials, even when the write comes from the account that owns the document. Key values are excluded from logs, URLs and error messages.
Because the accounts are Luxim’s, the generation providers bill Luxim and never you. What you pay is the Lumens quoted before a render starts, through Apple, and nothing beyond that.
8. Security
Per-account isolation. Database and storage rules permit a request only where the authenticated account identifier matches the path being read or written. Everything not explicitly matched is denied.
Backend-only writes for anything that costs money. Jobs, spend, credits, estimates and provider logs are written only by Cloud Functions. A client can read its own records and cannot fabricate a job, a cost or a state change.
App Check. Every callable endpoint enforces Firebase App Check in addition to authentication, using DeviceCheck on release builds. Possession of the app's Firebase configuration is not authorisation.
Secret Manager. Provider keys are never stored in the database and never returned to a client. See section 7 .
Reference paths are validated server-side. A reference must name a file inside your own uploads folder. The backend refuses a path outside it rather than reading it, because the backend reads with administrative credentials that bypass the storage rules.
One thing you control rather than we do: sharing. The player has a share button. It shares a direct download link to the film's file. Anyone who receives that link can open the file without signing in to Luxim, because the link carries its own access token rather than relying on your account. Treat a shared link as public.
No system is perfectly secure, and this policy does not promise that one is.
9. Your rights
Access. Everything Luxim holds about you is readable in the app: your stories, characters, places, films, ratings, monthly spend, cost estimates and the per-shot provider logs.
Export. Finished films and PDF exports can be saved out of the app. There is no single-button archive of the whole account today. A single-file export of everything on your account is being built into the app. Until it ships, ask at support@luxim.app and the archive is assembled by hand and sent to you within 30 days.
Correction. Stories, character profiles, place descriptions and styles are editable in the app.
Deletion of individual items. A film, a draft story, a character look, a supporting cast member and a place can each be deleted from the app. Deleting a film removes its files, its job record and the story behind it, subject to the exceptions in section 6.4 .
Deletion of the account. Open Settings and choose Delete my account . You will be asked to sign in with Apple again first, which both proves it is you and lets us revoke Apple's own sign-in token as Apple requires. It usually finishes while you wait; if a step fails it is retried automatically until it completes, and in every case everything is removed within 30 days: every film, character, place, draft, upload and rendered file, the account record itself, and the provider keys held for you. Two things survive by design and are named in section 6.5 : the monthly spend and credit totals, which are kept as an accounting record with your identity stripped out, and anything a generation provider retains under its own terms, which Luxim does not control.
Objection and complaint. Write to support@luxim.app and say what you object to. Luxim is operated from the United Arab Emirates and is not offered in the European Economic Area or the United Kingdom, so no EU or UK supervisory authority oversees it; a complaint about the handling of your data can be raised with the UAE Data Office.
Requests about any of the above go to support@luxim.app .
10. Children
Luxim is not for children. The minimum age to use it is 18. That is not a cautious round number: the generation providers Luxim depends on require in their own terms that end users be adults, so it is a condition Luxim passes on rather than one it chose. Accounts are not knowingly created for anyone below that age, and an account discovered to belong to someone below it is deleted.
11. Changes
Material changes to this policy will be posted here with a new effective date, and where the change affects how your existing content is processed, notice will be given in the app before it takes effect.
Alessandro Giulianelli, sole trader, Abu Dhabi, United Arab Emirates. Privacy requests go to support@luxim.app .
Terms of Use · Support