Your gallery is the product. It shouldn't look like a file host.
Private collections on your own domain, with proof comments, favourites, frame-accurate video notes, natural language search and face recognition — served straight from object storage so it stays fast and cheap at ten thousand frames.
See pricingFind any face across thousands of frames.
Upload a reference photo and the system finds every frame they appear in. Faces are indexed in the background while you upload, and the search runs on-device.
- On-device embeddings, matched against gallery_face_index.
- Selfie gate for guests — no manual tagging.
- Results filter the gallery instantly.
Or just type what you're looking for.
Guests type “candid laughter”, “haldi” or “rings” and the collection narrows. Vision tags build quietly as you upload, and queries hit a Postgres GIN index — zero model calls at search time.
- Subjects, emotions and key_elements in gallery_asset_tag.
- search_vector @@ plainto_tsquery with ts_rank + composition_score.
- Debounced 300 ms in console and portal, with one-click clear.
Natural language search — same index, different query.
Frame-accurate notes on video. In-browser.
Clients leave timecoded comments on video cuts directly from their portal. No Frame.io, no vague timestamps over email.
- Millisecond pins on the timeline.
- Notes attach to gallery_proof with author and timestamp.
- Digest rollup knows films in revision vs approved.
“Love the light on her here — can we keep the color grade as-is?”
Proof comments and favorites, per asset, per person.
Delivery that doesn't bill you for showing the work.
Bytes go straight from R2, not through a function. Images get a 5-minute presign, films get 12 hours so seeking doesn't 403 mid-watch, and downloads respect your tier.
- 302 to a direct R2 URL (or public domain) — Dashboard hides bytes.
- Web variants 2048px on first request; video never resized.
- Download tiers off · web · full enforced at the ZIP and raw choke points.
- Cloudflare Worker ZIP off-origin with HMAC tickets.
Direct R2 delivery, variants generated on miss and cached.
Every reception becomes a lead source.
Guests scan a 5×7″ standee, find themselves with a selfie, and leave their number to see every match. Those details land in your CRM with the event and match count attached.
- Printable QR standee, on your domain, safe to rename anything.
- Lead gate required / optional / off per gallery.
- Leads sync to Clients with one-tap WhatsApp follow-up — Collective.
Guests find themselves · their details land in your CRM · you reply in one tap
A table standee, a few matches, a phone number.
See what the crowd loved — without cookies.
Anonymous, salted daily hashes capture views, dwell and downloads, rolled into Top 40 crowd favorites. No IP ever stored.
- engagement_event → engagement_daily nightly rollup.
- GalleryInsightsPanel: views, unique visitors, dwell, downloads.
- Ranked by favorites×3 + downloads×2 + views for album curation.
Ranked by favorites ×3 + downloads ×2 + views · nightly rollup to engagement_daily
Crowd favorites scored for album and social picks.
Full product · One real project · No credit card