Uploading images
Images enter Pindeck through Upload in the app (sidebarU or top bar). Every source converges on the same library record and storage path.
Ingest paths
For step order in the product, see Product workflow. For the full backend diagram, see Architecture overview.
What happens after upload
- Convex stores the upload handle and creates an images row.
- Trigger (when enabled) runs finalize upload: persist to RustFS, generate preview/webp derivatives.
- Palette extraction fills
images.colors. - VLM analysis (OpenRouter) fills group, genre, shot, style, and tags when configured.
- Status becomes active — the image appears in Gallery and Table.
RustFS object path format
pindeck bucket. See RustFS storage.
Image metadata
Every image record includes:Persistence tracking
Each image tracks its durable storage status:Backfill failed uploads
Reschedule persistence for uploads stuck in Convex storage:sourceType = "upload", storageProvider = "convex", and storageId is still present.
Sources
- Direct upload — Upload → Local Upload tab
- Discord — Bot emoji / commands → review queue (Discord bot)
- Pinterest — Import tab or RSS sidecar
- AI — Variations from the image drawer (AI generation)