Skip to content

Cull a shoot, end to end

A learning-oriented walkthrough: take a full day's wedding shoot from a folder of RAWs to an album-ready, exported keeper set — and understand what krites is doing at each step. Allow 20–30 minutes plus culling time.

You'll need krites installed (see Getting started) and a folder of frames to work on. Nothing you do here touches your originals.

If you haven't already, initialise your config once — it seeds the wedding-default cull profile the rest of this walkthrough leans on:

krites init

It's idempotent, so it's safe to run again if you're not sure.

1. Register the shoot

krites works on a shoot — your originals plus a .krites/ sidecar it creates alongside them:

krites ingest ~/Pictures/smith-wedding

Ingest scans the folder, records each frame in the shoot manifest, and sets up the sidecar. Your files are only read. From here on, pass --shoot ~/Pictures/smith-wedding (or run the commands from inside that directory).

2. Judge every frame

krites cull --shoot ~/Pictures/smith-wedding

Cull analyses each frame and assigns a keep / maybe / reject verdict with reasons: sharpness and motion blur, exposure, and — with the face/eye provider enabled — closed eyes and blinks. It also groups near-duplicate bursts so you're not choosing between ten near-identical frames blind.

The verdicts are records in the sidecar, not changes to your photos. The judgement comes from a cull profile (wedding-default out of the box) — a set of thresholds you can tune to your taste.

Inspect the burst clusters it found:

krites dedup --shoot ~/Pictures/smith-wedding

3. Review in the studio

The studio is where krites is meant to be driven:

krites studio --shoot ~/Pictures/smith-wedding

This opens a localhost-only web UI over the same shoot. Work the cull grid: confirm the keepers, rescue anything the profile was too harsh on, and reject the rest. The grid stays responsive across thousands of frames.

The grid defaults to justified rows — full, uncropped frames at a consistent scan height with your shot order preserved, the way Lightroom lays out a filmstrip. Use the Rows / Grid toggle at the right of the filter bar to switch to a dense, uniform (cropped-to-fill) lattice; your choice is remembered.

Prefer the CLI, or scripting a correction? Override a single frame's verdict directly:

krites verdict IMG_2043.CR2 keep --shoot ~/Pictures/smith-wedding

4. Correct the keepers

On the keepers, krites proposes non-destructive edits — each a reversible record:

krites straighten IMG_2043.CR2 --shoot ~/Pictures/smith-wedding   # level horizon
krites crop       IMG_2043.CR2 --shoot ~/Pictures/smith-wedding   # composition crop
krites develop    IMG_2043.CR2 --shoot ~/Pictures/smith-wedding   # apply a look

Need to erase a distraction — a stray guest, an exit sign? See Remove an object. Made a wrong call on a frame? Undo everything on it:

krites reset IMG_2043.CR2 --shoot ~/Pictures/smith-wedding

5. Export

krites export --shoot ~/Pictures/smith-wedding

Export is the only step that writes pixels. It renders the keepers with every edit baked in — in order removals → straighten → crop → look — into the shoot's export/ directory, and writes XMP sidecars so the cull and edits show up in Lightroom. Run it as many times as you like; given the same records it produces the same output.

What you did

You took a shoot from import to an album-ready export without ever altering an original: every verdict and edit was a reversible record, and only the final export rendered pixels. From here: