File kinds and collections
Each item has a kind that drives its display and its filters. The main page filters by kind and by collection, with a full-text search over alt-text, caption and generation prompt. Collections are named folders with their own dedicated pages.
- Kinds: photo, logo, icon, Open Graph, avatar, AI generated, video, document, other
- Shipped collections: persona, brand, inspiration, product shots, OG
- Full-text search over alt-text, caption and generation prompt
- Every file carries free tags, editable at any time
Upload, dedup and quota
An upload computes a SHA-256 checksum and looks for a duplicate in the workspace. If the file already exists and is not archived, you get the existing one, not a copy. Before writing, the workspace checks its byte quota: if the upload would exceed it, it is refused. A cross-workspace dedup pass also runs on a schedule: for a given checksum it keeps the oldest and archives the rest.
Signed URLs and public assets
Private files are served by short-lived signed URL, one hour by default. Files filed under a public prefix come out as a stable public URL. Opening a file's detail mints a fresh signed URL each time, so a copied link expires, which is intended.
Cross-module usage tracking
When another module places a file on an entity, it records the usage: the entity type, its id, and the field involved. The record is idempotent on the file, entity, field triple, so no double counting. On a file's detail you read the list of entities that reference it, and the usage count shows on the thumbnail.
- Studio: post visuals and generated YouTube thumbnails
- Pages: images placed inside a page block
- Ads: ad visuals and brand kit
- Booking: avatar on the booking page
Lineage of generated images
An AI-generated image keeps its parents (the reference images passed to the model) and records its model, its prompt and its generation metadata. The file detail shows the source images at the top and the derived images below. You can trace a final visual back to the references that produced it.
Reference personas
A workspace can mark a small selection of files as active personas. These are the images that Studio generation passes to the model by default as references, to keep a face or a style consistent. The selection is validated: each id must belong to the workspace.
Orphans and purge
A file with no recorded usage, older than a threshold, surfaces in an orphan report sorted by size. On the platform side, MCP tools give per-workspace usage, the orphan list, quota setting, and the hard purge of files archived long enough.