Black Swan Group

Applied software and automation

Black Swan Photo

Prototype · Active 2026 · Last verified 2026-09-29

Problem

A large personal photo archive mixes camera RAW, phone HEIC, and JPEG, and is full of bursts and near-duplicates. It is too big to cull by hand, and the tools that help either lock the library into one vendor's catalog or delete on the software's judgment.

Product

Black Swan Photo is a self-hosted archive and analysis pipeline. It ingests a mixed-format collection into a verified archive, generates proxies, scores every image for technical quality and — through a locally hosted vision-language model — aesthetic merit, groups bursts and near-duplicates, and produces an advisory cull/keep/review triage. Nothing is deleted without an explicit human decision.

Intended user

Photographers and individuals with large mixed-format archives who want help culling without surrendering the original files or the final decision to software.

Thesis

Culling should be assisted, not automated. Software should do the tedious measurement across the whole archive and leave every destructive decision, and the originals, under the owner's control.

Pipeline

  1. 01Ingest and verify (RAW, HEIC, JPEG)
  2. 02Generate proxies
  3. 03Technical analysis
  4. 04Group bursts and near-duplicates
  5. 05Aesthetic review (local vision model)
  6. 06Advisory triage
  7. 07Human review decision

Architecture

The local filesystem archive is the source of truth. The source collection is treated as read-only input; every derivative and result is written to a separate store behind a narrow storage interface, so the originals are never modified by the pipeline.

One package, one container image, two processes: a versioned API and a worker that drains its job queue. Analysis programs run in-process against a proxy derivative and commit one result per asset as they go, so a long run that stops partway keeps everything it already finished. The command-line client is an HTTP client of the same API.

Triage is advisory by construction: it proposes cull, keep, social, or review for each asset but never writes a review decision. Every pipeline step appends to a hash-linked provenance chain per asset that can be re-verified later.

An earlier iteration ran storage and job execution on a separate multi-tenant storage-and-compute service, validated against S3 and AWS workers. We removed that dependency in September 2026: for the immediate goal — running the whole pipeline against real data and finding what breaks — it added a second service, credentials, and a signup flow just to ingest one photo. The storage interface, a user-scoped data model, and an off-by-default API-key gate are left in place as the seams for a hosted version.

Evidence

  • Resumable, hash-verified ingest of camera RAW, HEIC, and JPEG, with edit-sidecar pairingImplemented
  • Multi-resolution proxy generation, including HEIC and Canon RAWImplemented
  • Technical analysis: sharpness, exposure, dynamic range, noise, blur, and highlight clippingImplemented
  • Aesthetic review by a locally hosted vision-language model with schema-constrained outputImplemented
  • Burst and near-duplicate grouping by perceptual hash and capture timeImplemented
  • Advisory cull/keep/social/review triage that never writes a review decisionImplemented
  • Non-destructive review workflow (keep/reject/highlight, multi-level undo)Implemented
  • Append-only, hash-linked provenance chain per assetImplemented
  • Full pipeline run end-to-end on a real mixed camera-and-phone exportValidated locally
  • Calibrated keeper scoring from the vision modelPlanned

Open assumptions

  • Whether a locally hosted 7-billion-parameter vision model can be calibrated to separate a genuine shortlist. On the first full run it rated almost every finished photo as keep-worthy.
  • How much of the culling value comes from technical scores and burst grouping alone, before any aesthetic judgment.
  • Whether, and when, a hosted version is worth building. The reasoning for multi-tenant storage, sandboxed analysis, and metered billing exists; no plan is sequenced.

Next milestone

Calibrate the vision model's keeper scoring against human review decisions, so triage separates a genuine shortlist instead of rating nearly every finished photo as a keeper.

Future direction

A hosted, API-first version remains a direction, not a plan: accounts and API keys, per-tenant storage, sandboxed analysis programs, and usage-based billing anchored on metered compute. The architecture keeps the seams for it; no hosted product, pricing, or timeline exists.

Partnership

Black Swan Group is interested in photographers with large mixed-format archives willing to compare the triage against their own culling decisions — the data the calibration step needs.