Skip to content

Take a full wedding from card to Lightroom

By the end of this you'll have taken a real wedding shoot — three or four thousand frames — from a folder on disk to a keeper set your Lightroom catalog can see, and you'll know which of the two handoff routes you want.

This is the scale version of Cull a shoot, end to end. That one teaches the pipeline on a handful of frames; this one is about what changes when there are thousands, which is mostly: you stop using the CLI for the judging, and you start caring about what the machine does while you're not watching.

Allow about half an hour of your attention, plus however long the first cull takes. Nothing here touches your originals.

Before you start

You'll need:

  • krites installed, and krites init run once — see Getting started;
  • a folder of frames, all in one directory. Ingest does not recurse, so a card dump with frames under DCIM/100CANON/ needs flattening first;
  • frames in .jpg, .jpeg, .png, .arw, .cr2, .nef or .dng. Anything else is skipped silently — no warning, no line in the report — so check the count ingest reports against what you expect.

If you shoot RAW+JPEG, pick one and ingest only that. Both map to the same .xmp filename later, and you'll lose half your verdicts to the collision.

1. Register the folder

krites ingest ~/Pictures/smith-wedding
Registered shoot "smith-wedding" — 3814 frames (/home/hailey/Pictures/smith-wedding)

Check that number. It counts only the extensions krites recognises, directly inside the folder. If it's short, something was skipped.

Nothing was copied or moved. krites added a .krites/ directory beside your files and wrote a manifest into it. That's the whole of ingest.

2. Decide whether to turn on face analysis — before the first cull

At a wedding, the frames you most want caught are the blinks, and krites will not catch them without the face provider. It's off by default because it costs a model pass per frame and because an eye-open probability is an estimate; the reasoning is in Why the heavy providers are opt-in.

Turn it on now if you want it:

krites config set face.enabled true

The first run downloads and checksum-verifies the models. Everything stays on your machine.

Do this before the first cull rather than after. Switching it on later invalidates the analysis cache and re-analyses all 3,814 frames from scratch — which is exactly the slow part.

3. Run the first cull

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

This is the expensive pass: every frame is decoded, measured for focus and exposure, hashed for near-duplicate detection, and — with face analysis on — run through the models. On a full wedding, expect minutes rather than seconds.

You'll get a verdict with reasons for every frame:

Shoot "smith-wedding" — 3814 frames
  keep 1204   maybe 1876   reject 734

  keep   IMG_2043.CR2
  reject IMG_2044.CR2  — out of focus (sharpness 31 below 50)
  maybe  IMG_2045.CR2  — subject blinking (18% eye-open, below 50%)

The pile in the middle is the point. krites is not trying to hand you 1,200 finished frames — it's trying to make sure the 734 it rejected are ones you'd have rejected too, and to sort the rest so your eyes go to the right places.

4. Tune the thresholds, and re-cull as often as you like

Look at that first output and decide whether the machine is harsher or softer than you are. Then change a threshold and run it again:

krites config set cull.profile.soft_sharpness 180
krites cull --shoot ~/Pictures/smith-wedding

The second cull is near-instant. Measuring and judging are separate: the measurements are cached, and changing a threshold only re-runs the judging. You can do this five times in a minute on a four-thousand-frame shoot.

A few settings do force the slow pass again — min_face_box, and turning face analysis on or off. The analysis cache lists them.

Every threshold with its default is in the configuration reference. If you want this shoot to differ from your usual settings, set the same key in ~/Pictures/smith-wedding/.krites/config.yaml and it overrides the global for this shoot only.

5. Do the actual reviewing in the studio

krites studio

The studio takes no --shoot flag — it opens onto a library of shoots. If smith-wedding isn't listed, add it with Browse… on the Shoots page.

This is where the hours go, and where krites is meant to be driven. Three things matter at this scale:

Work the bursts, not the frames. The Survey mode walks you through one near-duplicate cluster at a time; you crown the keeper and its siblings drop to maybe. On a wedding that's where most of your 1,876 maybes live, and it's much faster than scrolling past ten near-identical frames ten times.

Select in bulk. Shift-click or ⌘-click a range, then keep, reject or star-rate the whole selection in one action.

Let long jobs run. A re-cull started from the studio runs in the background. Closing the tab does not cancel it — you can go and make coffee, come back, and reattach. Restarting the studio does lose a running job; it'll tell you the cull was interrupted rather than pretending it finished.

Anything you decide by hand is marked as yours, and survives every subsequent re-cull.

6. Correct the keepers

Straighten, crop and colour are all reversible records, applied to your keepers without altering an original:

krites straighten --all --shoot ~/Pictures/smith-wedding
krites crop       --all --shoot ~/Pictures/smith-wedding

Be aware of the limit before you plan around it: the look catalog currently contains one entry, neutral, which is the identity transform — so there's no colour grade to apply yet. See Limitations. Grading is a Lightroom job for now, which is fine, because that's where you're heading anyway.

7. Choose your handoff route

This is the decision the whole workflow builds to, and there are two answers.

Route A — sidecars on your originals

Use this when you want to finish in Lightroom from your own RAWs. It is the common case.

krites xmp write --shoot ~/Pictures/smith-wedding
Wrote 3814 XMP sidecar(s) beside the originals in /home/hailey/Pictures/smith-wedding

Point Lightroom at the original folder. Each frame arrives with its verdict as a star rating (keep 5, maybe 3, reject 1) and a colour label, plus the crop and straighten angle for anything you developed. Filter by rating, and you're looking at your keepers with full RAW latitude intact.

Note that this writes .xmp files into your own folder, and no krites reset ever removes them.

Route B — a rendered keeper set

Use this when you want finished JPEGs, or when a keeper has an object removal in it.

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

That renders the keepers into ~/Pictures/smith-wedding/export/, with every edit baked in, in the order removals → straighten → crop → look. Import that folder instead of the originals.

export does not write XMP sidecars — the two commands are separate. Run both if you want both.

Why the choice matters

Object removals and colour looks cannot be expressed in Camera-Raw XMP, so they only exist in Route B's rendered files. Everything else — the verdict, the crop, the straighten — travels either way.

So: if you inpainted a stray exit sign out of the first-dance frame, that frame has to come from export/.

What you did

You took a full wedding from a folder to a Lightroom-ready keeper set: registered it in place, judged it once expensively and re-judged it cheaply until the thresholds matched your eye, did the real reviewing in the studio, and handed off by whichever route your finishing workflow needs. Your originals were never altered.

Next: