CullMaster Pro

CullMaster Pro

Helping humans cull their shoots, fast AF.

Built for Mac · Lightroom Classic

It's as if Photo Mechanic, Adobe Bridge, and Lightroom Library all committed their DNA to a single baby. Super fast, efficient, and delivering exactly what photographers need to see to judge the worthiness of a photo at lightning speed.

Built for power users who want culling in their own hands — with technology backing you up like you've never had before. You decide; it makes deciding fast.

macOS 15+ · Apple Silicon and Intel · free · nothing leaves your machine
How to installWhat’s new in v1.9
  • Every face at 100% the instant you landNo building 1:1 previews to check focus
  • Finds everyone in a group17 of 17 on a family photo, not just the front row
  • Shows where the camera focusedRead straight from Nikon and Canon files
  • Nothing to wait forRenders ahead of you while you cull
  • Culls like LightroomP, stars, labels, X — synced with your catalog both ways, with ⌘Z undo
  • Won't slow Lightroom downAll the work happens outside it
  • Paste a client's edit listEach photo carries its request, with a Mark done button and a running count
  • Slideshow and JPEG exportCrossfades and Ken Burns straight from the culled set
  • Any module, any viewLibrary grid, single photo, Develop
  • Stays out of your wayMovable, resizable, rolls up in one click
The culling browser

Bridge's folder tree, Photo Mechanic's speed, Lightroom's flags — with every face at 100% beside the photo.

CullMaster Pro — Browser (Filmstrip)
  • Contact sheet (G), filmstrip (E), full-screen review (Space) — straight off the camera JPEG with no 1:1 previews to build.
  • Your picks (P), stars (0–5), labels (6–9), and rejects (X) flow into Lightroom automatically, and LR's flow back.
  • Every face in the selected photo as a true 100% crop from the RAW (F floats them over full-screen), plus where the camera focused (Z zooms to 1:1).
  • Edited Preview (A): your develop settings simulated on the RAW — close to your edit, not exact, one key to flip.
Everything in Browser mode →
Browser mode

Cull a folder like a browser. Sync it like Lightroom.

Point it at a folder and cull — before Lightroom ever sees the shoot, or without Lightroom at all. A folder tree that includes your cloud drives, a contact sheet (G), a filmstrip (E), and a full-screen review (Space) with every face floating over the photo (F). All of it runs off the camera's own JPEGs, so a thousand-photo shoot browses instantly with nothing to build first.

Lightroom's keys, Lightroom's meanings
P flags, 0–5 stars, 6–9 labels, X rejects, ⇧ auto-advances — and ⌘Z undoes any gesture, multi-select included.
Synced both ways
While Lightroom runs, verdicts land in the catalog within seconds and Lightroom-side changes flow back. Culling before import writes XMP sidecars that import clean.
Filters that keep up
Flag, stars, labels, camera bodies, blink tint — or paste a client's favorites list (⌘⇧V) and see exactly those photos.
A client's edit list becomes a checklist
Paste the email. Each photo carries its request with a Mark done button and a running count, and the list lives in a plain text file beside the RAWs.
From cull to deliverable
Resize-and-export JPEGs, or a slideshow video with crossfades and Ken Burns (⌘⇧M). One click imports the keepers into Lightroom.
Watches the folder live
Files arriving from an export or a card ingest fill in as they finish — thumbnails, previews, and marks, no refresh.

Full-screen is a complete culling surface of its own: floating face tiles, a ghost filmstrip while you navigate, a zoom that lands on the spot you click, and TAB sweeps everything but the photo away.

LR Companion

The panel that rides shotgun in Lightroom

Drag it anywhere on screen and drag its edges to size it. Both are remembered, including after a restart, and neither moves on its own — only the height changes with how many people are in the photo.

It floats above Lightroom, even in full screen, and never takes focus, so your keyboard stays in Lightroom while you cull.

Any module, any view
Library grid, single-photo view, Develop — it makes no difference. The LR Companion follows your selection wherever you are, so you can cull in the grid and it keeps up, or sit in Develop and it is already showing you the faces at 100%.
Double-click the top bar to roll it up
It collapses to a single strip and pops back instantly, keeping its place. That's the move when it's covering something you need to see — faster than moving it, and it comes back exactly where it was.
Drag the edges to resize — it reveals, it never zooms
Tiles are always true 100%, so a bigger window shows MORE of each crop rather than scaling it up. Drag until you can see as much around each face as you want.
Closing the companion panel quits the app
Roll it up instead — or switch to Browser mode, where the app lives as a full window with a complete menu bar. If you do close it, start the bridge again in Lightroom and it returns.
Why

We finish our 1:1 pass before Adobe finishes the first lap

Did I nail focus? On a family of six that is six separate questions, and Lightroom answers them one zoom at a time. Somebody blinked, somebody drifted off the plane of focus, and finding out which means building 1:1 previews for the whole folder and pushing into every face on every photo.

There is no pass to run. Open a folder and start culling — the faces are there. The app renders quietly in the background as you work, always a few photos ahead of where you are, so it is ready before you arrive. No progress bar, no go-make-a-coffee break, no deciding in advance which folder you will need later.

Land on a photo nobody has looked at yet and it takes about half a second. Every photo after that is single-digit milliseconds, because it was rendered while you were looking at the last one.

You can also render a whole folder up front, if you would rather have it done before you sit down. Here is that against Lightroom building its 1:1 previews for the same folder — and the times are the smaller half of the story.

313 photos
CullMaster Pro1 min 56 s
Lightroom 1:1 previews2 min 58 s
Both timed on the same folder, same Mac. But this was never an apples-to-apples race: while Lightroom builds previews it is basically unusable — a wait you sit through before culling can begin. Ours runs in the background, on the fly, as needed, while you cull. The pass exists so you never have to think about it. And the finish lines differ — when Lightroom’s pass ends you still have to zoom into every face yourself, one at a time. When ours ends, every face is already cropped to 100% and waiting.
What you get

Every face, in your face.

Every face, at true 100%
One tile per person, ordered left to right the way they appear in the photo, each centred on the eye line. Never scaled — a bigger window reveals more of the crop, it does not stretch it. In full-screen they float over the photo (F), and one key zooms the photo itself to 1:1 on the faces (Z).
Where the camera actually focused
A crosshair on the face the camera locked onto, read straight out of the Nikon or Canon file. Which also tells you when it locked onto the wrong person.
Groups, not just couples
Seventeen people in the photo means seventeen tiles. Finding everyone in a crowd took real work, and it's the part most tools quietly skip.
Fast enough to be always-on
First pass through a photo is about half a second. After that it's instant — and it caches the whole shoot in the background while your machine has capacity to spare, so you stop hitting cold photos at all. Every feature has a key; press ⌘/ in the app for the whole map.
GoodEye Labs

Extras, when you want them. Never in the way.

CullMaster Pro is a culling tool and stays one. Labs is where anything else lives: each module explained in plain language, off until you turn it on, and none of it changing how the rest of the app behaves. It is how a new idea reaches you without the app you use every day getting heavier. Open it from the CullMaster Pro menu.

Face Swap
Someone blinked, or the wind put a strand of hair across a face, and the next frame is perfect apart from them. Pick the two photos, click the face you want, and it moves onto the frame you are keeping. Your real pixels — the same head swap a retoucher does by hand, aligned and blended for you, with nothing invented. Paint the mask if you want it different, then export a JPEG or a layered PSD with the new face on its own editable layer. Included in the app.
Filter by Person
Find every photo of one person in a shoot by their face — the bride, one child, the two of them together — recognised across the whole shoot whatever they are wearing. This one needs a face-recognition model, which is why it is a download rather than part of the app: it is larger than CullMaster Pro itself, and most culling never needs it. It runs entirely on your Mac; no photo, and nothing derived from one, ever leaves it.
Setup

Install and setup in 2 minutes flat.

  1. 01Drag CullMaster Pro into your Applications folder and open it. A narrow dark panel appears saying “bridge not running” — that is expected, it has nothing to follow yet. The app installs its Lightroom plug-in on its own (upgrading from GoodEye Loupe? double-click the app on the disk image and it replaces the old copy, settings and cache kept).
  2. 02Quit and reopen Lightroom. It only looks for plug-ins at startup. From then on the bridge starts with Lightroom; if it ever does not, Library ▸ Plug-in Extras ▸ CullMaster Pro — start bridge.
  3. 03Click any photo. The LR Companion fills in.
  4. 04To cull without Lightroom, click the browser control in the header (or drop a folder from Finder onto the window) and open a shoot. Press ⌘/ in either mode for every key.

After that, step four is the only thing you ever do — and it launches the app for you, so one menu item starts everything.

See it working

Watch it work

Seventeen people in the photo, seventeen tiles. Two columns kick in past four.
Seventeen people in the photo, seventeen tiles. Two columns kick in past four.
A couples session in one column, with the crosshair marking whoever the camera locked onto.
A couples session in one column, with the crosshair marking whoever the camera locked onto.
A family of four, each one cropped to 100% and stacked in the order they are standing.
A family of four, each one cropped to 100% and stacked in the order they are standing.
How it works

We read your RAW files. The catalog is written through Lightroom's own front door.

The Lightroom plug-in tells the app which photo you are on and which filter you are working under — and it carries your verdicts back. Flags, stars and labels land in the catalog through Lightroom's own plug-in API, the same doorway Adobe gives every plug-in, applied within a couple of seconds while Lightroom runs. Nothing is injected behind Lightroom's back.

Two honest exceptions to "everything goes through Lightroom". Culling a shoot before it's imported? Your verdicts merge into the photos' XMP sidecars surgically — the develop settings already in those files are preserved byte for byte. And folder colour labels, which Lightroom's API has no way to set, are written directly to the catalog only while Lightroom is closed — the exact value Lightroom itself would write. Your develop settings are read (that's the Edited Preview), never written; your previews are never touched at all.

The app then opens that RAW itself, in its own process. So it is not riding on Lightroom’s speed — it never waits for Lightroom to render anything, does not care how big your previews are or whether you have built them at all, and none of the decoding, face-finding or drawing happens inside Lightroom.

It will not slow Lightroom down either. The plug-in’s entire workload is checking a flag and writing one short line of text when you change photos. That is it. Everything expensive lives on the other side of the fence.

The honest consequence: by default you are looking at the unedited capture, so exposure and colour will not match your develop work. For judging focus that is what you want — sensor data, not a look. When you want the look, press A: the Edited Preview renders your develop settings from the sidecar. It's a simulation — close, not exact — usually nearer to your edit than the camera's own JPEG, and it's one key to flip on and off as needed.

Two views

Preview the raw faces, or our enhanced view that makes soft focus obvious.

Focus checkthe default
Monochrome, with the exposure normalised and a midtone curve applied. Colour and overall brightness are noise when the only question is whether the plane of focus landed on the eye — stripping them makes the answer readable at a glance. Every face is metered on its OWN skin, so two people with different skin tones land at the same brightness and stay honestly comparable side by side.
Naturalthe camera's own rendering
Colour, untouched, exactly as the camera saw it. Answers “what does this actually look like” rather than “is it sharp”. It's also the faster of the two, because it comes from the JPEG already inside the RAW and skips the demosaic entirely.

Both are cached separately, so flipping between them is instant after the first look at a photo. Exposure, contrast and sharpness are sliders too, and they repaint the photo live as you drag — nudge a shoot that runs dark without it sticking, or press Save tone to make it your new default.

The exposure track turns gold when the meter is driving it, and the second thumb marks where the exposure actually landed once the meter added its share. The gap between the two is what the app did on its own — visible rather than hidden, so a preview never quietly stops matching the file.

The options panel: preview mode, face brightness with an auto-exposure slider, and the tone adjustments
Every control, one panel. It stays folded away until you want it.
Closed eyes

It learns each person's eyes. Then it tells you.

Everyone's eyes are different. We measured it on a real family shoot: across ten people, the normal eyes-open look varied by nearly 70%. So a blink detector with one bar for every face is wrong about somebody in every photo — it flags people who naturally have narrower eyes, and it waves through half-lidded shots on people who don't. That's why most blink detection is garbage, and why we don't use a generic one.

Instead, the app learns each person in your shoot individually. While it caches in the background, it measures every face it renders — quietly building what YOUR bride's eyes look like open, what grandpa's look like open, in this light, on this day. A face only gets the red tint when its eyes drop well below that person's own normal. Not some stranger's normal averaged from a training set. Theirs, from the photos sitting in the folder.

And until it's seen someone enough times to be sure — a few dozen appearances — it says nothing at all. You'll see “eyes learning” with a percentage in the footer while it studies the shoot, and a small gold dot once it's confident. No tint until then, because a wrong “eyes closed” on a keeper is worse than staying quiet. When it does flag one, it's worth your glance.

It measures per shoot on purpose: the same person squints more on a bright beach than in a shaded forest, so their baseline comes from the conditions they were actually photographed in.

Why there's no AI

We tried AI culling. And honestly, it suuuuucks.

It turns out the reason you pick one photo and not another is more than a machine analyzing pixels – it takes a human to “feel” if the photo works or not. Our tool simply speeds up the human ability to quickly assess whether a photo is a keeper or not. Simple as that.

That isn’t a hunch. Before any of this existed I spent weeks trying to build the ranker, trained on 13,172 of my own photos across 11 real shoots, labelled by the keep-or-cull calls I had already made. Four different approaches. Within a burst — the near-identical shots where you actually need help — not one of them beat a coin flip.

How well each signal predicted a keeper
Sharpness at the focus point0.02
Face capture quality0.06
Eye openness-0.05
Everything combined0.001
Zero means no relationship at all. A photo being technically perfect told me essentially nothing about whether I would keep it — because a Z9 nails focus all day, and I am throwing away two thirds of a take on expression and moment.

So this tool does not rank, sort, star or reject anything. Culling stays in YOUR hands — power-user hands — and the technology assists you like it never has before. It puts the evidence in front of you faster than you could dig it out yourself, and then it gets out of the way.

Here is the division of labor that actually works. A human brain assesses the emotional content of a photograph in a split second — whether the moment is real, whether the photo works — and no AI can do that. What a human can't do is zoom into every face on every photo to check focus and eyes, thousands of times a shoot, without the judgment going numb. So the software takes exactly that half: where the camera focused, every face up close, instantly, photo after photo. You never stop to dig; you just decide.

The human judgment is the winner here. Good human intuition with good software wins the game every time.

Honest limits

What it won't do

Each tile carries a sharpness number, and it is measured on the untouched RAW so no display setting can flatter it. But it does not know what you intended. A photo can be perfectly sharp on the wrong thing, and a focus-and-recompose shot reads as a miss at the focus point while your actual subject is exactly right.

So nothing here is colour-coded red or green, and nothing gets sorted or rejected for you. It puts the evidence in front of you fast. You are still the one who decides.

A face turned fully away is not detected — it falls back to the focus point, then to the sharpest part of the photo. Hasselblad files get face tiles but no crosshair, because Hasselblad does not record the focus point in any readable form. Sony: faces yes, focus point no.

Compatibility

Which cameras get which features

Selection following, face and eye tiles, exposure metering and the closed-eye intelligence work with every camera your Mac can decode RAW for. Two features depend on what your camera writes into its files, so we measured — one sample raw per body, 77 cameras from the last eight years, probed through the exact code path the app runs.

Camera systemFocus-point crosshairJPEG fast mode
Nikon Z & DSLR (NEF)yes — Z bodies verified daily; DSLRs untestedyes — full-size on every body tested
Canon R, M & DSLR (CR3)yes — measured across the R seriesyes — full-size on every body tested
Sony (ARW)no — Sony encrypts itno — 1616 px preview only, every body tested incl. α1 / α7R V
Fujifilm X (RAF)not yetpartial — ~4,400 px embed (57–71% of sensor)
Fujifilm GFX (RAF)not yetno — 4,000 px preview
Panasonic (RW2)not yetno — 1,920 px preview
OM System / Olympus (ORF)not yetno — 3,200 px preview
Pentax (PEF / DNG)not yetyes — full-size
Ricoh GR (DNG)not yetyes — full-size
Leica (DNG)not yetyes — full-size
Sigma fp (DNG)not yetyes — full-size
Hasselblad X (3FR)no — the camera does not record itno — ⅓-size preview

JPEG fast mode renders from the JPEG your camera embeds inside each raw file — much faster, with your camera’s own sharpening. It is the default: where the embed is not full size, the app falls back to the true RAW render photo by photo, automatically, and a RAW-only mode is one click away in options. “Not yet” in the crosshair column means the camera records its focus point but we don’t read that maker’s format yet.

Every body we tested, with the measured embed size
Canon EOS 90D6960x46406960x4640 embedded100%
Canon EOS M6 Mark II6960x46406960x4640 embedded100%
Canon EOS R6720x44806720x4480 embedded100%
Canon EOS R106000x40006000x4000 embedded100%
Canon EOS R36000x40006000x4000 embedded100%
Canon EOS R55088x33925088x3392 embedded100%
Canon EOS R63408x22723408x2272 embedded100%
Canon EOS R6 Mark II6000x40006000x4000 embedded100%
Canon EOS R76960x46406960x4640 embedded100%
Canon EOS R86000x40006000x4000 embedded100%
Canon EOS RP3888x25923888x2592 embedded100%
Fujifilm GFX100S11648x87364000x3000 embedded34%
Fujifilm GFX100 II11648x87364000x3000 embedded34%
Fujifilm GFX50S II8256x61924000x3000 embedded48%
Fujifilm X-E46240x41604416x2944 embedded71%
Fujifilm X-H27728x51522944x4416 embedded57%
Fujifilm X-H2S6240x41604416x2944 embedded71%
Fujifilm X-Pro36240x41604416x2944 embedded71%
Fujifilm X-S106240x41604416x2944 embedded71%
Fujifilm X-S206240x41604416x2944 embedded71%
Fujifilm X-T36240x41604416x2944 embedded71%
Fujifilm X-T46240x41604416x2944 embedded71%
Fujifilm X-T57728x51524416x2944 embedded57%
Fujifilm X100V6240x41604416x2944 embedded71%
Fujifilm X100VI7728x51522944x4416 embedded57%
Hasselblad X1D II 50C8272x62004136x3100 embedded50%
Hasselblad X2D 100C11664x87503888x2918 embedded33%
Leica CL6000x40006000x4000 embedded100%
Leica M105952x39685952x3968 embedded100%
Leica Q28368x55848368x5584 embedded100%
Nikon D65568x37125568x3712 embedded100%
Nikon D7806048x40246048x4024 embedded100%
Nikon D8508256x55048256x5504 embedded100%
Nikon Z 56016x40166016x4016 embedded100%
Nikon Z 505568x37125568x3712 embedded100%
Nikon Z 6 26048x40246048x4024 embedded100%
Nikon Z 7 28256x55048256x5504 embedded100%
Nikon Z 88256x55048256x5504 embedded100%
Nikon Z 98256x55048256x5504 embedded100%
Nikon Z f6048x40326048x4032 embedded100%
Nikon Z fc5568x37125568x3712 embedded100%
OM System OM-35184x38883200x2400 embedded62%
OM System OM-5MarkII0x03200x2400 embedded0%
Olympus E-M1MarkIII0x03200x2400 embedded0%
Olympus E-M1X5184x38883200x2400 embedded62%
Olympus E-M5 Mark III0x03200x2400 embedded0%
Panasonic DC-G90x01920x1440 embedded0%
Panasonic DC-G9M25776x43361920x1440 embedded33%
Panasonic DC-GH64336x43361920x1440 embedded44%
Panasonic DC-GH75776x43361920x1440 embedded33%
Panasonic DC-S1R8368x55841920x1280 embedded23%
Panasonic DC-S1RM20x01920x1280 embedded0%
Panasonic DC-S50x01920x1280 embedded0%
Panasonic DC-S5M20x01920x1280 embedded0%
Panasonic DC-S96000x40001920x1280 embedded32%
Pentax K-1 Mark II7360x49127360x4912 embedded100%
Pentax K-3 Mark III6192x41286192x4128 embedded100%
Pentax KF6000x40006000x4000 embedded100%
Ricoh GR III6000x40006000x4000 embedded100%
Ricoh GR IIIx6000x40006000x4000 embedded100%
Sigma fp3840x21603840x2160 embedded100%
Sigma fp L9520x63289520x6328 embedded100%
Sony α18640x57601616x1080 embedded19%
Sony α64006000x40001616x1080 embedded27%
Sony α66006000x40001616x1080 embedded27%
Sony α67006192x41281616x1080 embedded26%
Sony α7C6000x40001440x1080 embedded24%
Sony α7CM27008x46721616x1080 embedded23%
Sony α7CR9504x63361616x1080 embedded17%
Sony α7M36000x40001616x1080 embedded27%
Sony α7M47008x46721616x1080 embedded23%
Sony α7RM49504x63361616x1080 embedded17%
Sony α7RM59504x63361616x1080 embedded17%
Sony α7SM34240x28321616x1080 embedded38%
Sony α9M26000x40001616x1080 embedded27%
Sony α9M36000x40001616x1080 embedded27%
Sony ZV-E14240x28321616x1080 embedded38%
Under the hood

Why it's fast, for anyone who cares

None of this matters to using it. But every number below was measured rather than assumed, and a few of them were surprises.

One demosaic, however many faces
A 45-megapixel RAW is developed once, and every face crop comes out of that single decode — about 0.47 seconds a photo, detection included. Developing only a region around one face benchmarked roughly twice as fast per crop, and is still the wrong shape here: a group photo needs many crops plus a detection pass, so one full decode is cheaper spread across all of them than repeated per face. Both RAW paths plateau at about four concurrent jobs anyway — the demosaic contends on shared hardware, so the other fourteen cores cannot be spent on it.
Finding faces is free; cropping them is not
Face detection runs on the Neural Engine at 20 ms a photo. The expensive part is pulling full-resolution crops. So detection happens on the JPEG already embedded in the RAW, kicked off in parallel with the demosaic, and only the pixels you actually look at come from the honest source.
More pixels do not find more faces
The obvious fix for missing people in a group is to hand the detector a bigger image. Measured, that finds FEWER — a 4096px pass came back 5% worse than 1600px. Vision's minimum face size is relative to its input, so downscaling the whole photo is invisible to it. What works is making the input smaller: overlapping tiles, plus a pass that finds bodies first and then looks for a face in each. That took a 17-person family photo from 5 faces to 17.
The window is a viewport, not a renderer
Each cached crop is deliberately oversized, and the window shows a moving window onto it. Dragging the edges reveals more pixels rather than scaling them, which is why resizing is instant and why a tile can never letterbox or blur — it can only show you pixels it already has.
It caches the whole shoot, but yields to Lightroom
Six photos either side after 1.2 seconds of stillness, then the rest of the shoot — in the direction you're moving, and only while the machine has capacity. The signal for that is total CPU: with Lightroom mid-export the load average reads 0.37 of eighteen cores and would call the machine idle, while CPU utilisation sits at 21–43% and notices. When it is busy the sweep waits and retries rather than giving up, because Lightroom pauses constantly between edits and a sweep that abandoned on the first busy reading would never finish a shoot.
Exposure is a multiply in light, not in the file
A RAW decode is gamma-encoded, so multiplying those numbers by four is not two stops — it stretches the deepest values far harder than the brighter ones, which amplifies noise unevenly and mottles the shadows. Lifting in linear light instead, then re-encoding, measured 44% less grain on the same face held at the same brightness. It runs through a 65,536-entry lookup table, because two pow() calls a pixel across 2.5 million pixels is not affordable while you drag a slider.
The focus point comes out of the file by hand
Nikon buries the autofocus point in a proprietary MakerNote block that neither Lightroom nor macOS exposes. This walks the TIFF structure itself to pull it out, with no external tools. Canon's lives in a different container again, with its Y axis pointing the other way and coordinates in sensor space — which took a control group of 61 photos to catch, because a flipped axis correlates exactly as well as a correct one.

Pretty nerdy, right? But here you are, reading it…

Roadmap

What's coming

Focus peaking
An overlay that lights up the pixels actually sitting on the plane of focus, so a focus-and-recompose shot reads correctly at a glance instead of looking like a miss. Built and in the app now, switched off by default while it earns its keep.
A sharpness line that is yours
Every tile already carries a sharpness measurement. What it can't know is where YOUR bar sits. The plan is a one-time calibration — you say which of a handful of real crops is acceptable, and it learns the line, once, and never asks again.
More cameras
Nikon and Canon focus points work today. Sony encrypts the field, and drone files are untested. Hasselblad doesn't record it at all — settled, and not fixable from our end.
Whatever you tell me is missing
This is a tool built for one photographer's own culling. If it's nearly right for yours, the gap is probably small and I'd like to hear about it.
Pricing

Free for now

$69 / yearFree for now.

Right now it is completely free, and there is nothing to sign up for — download it and use it. Down the road it becomes a $69 a year subscription, activated with a quick email sign-in, and everyone using it today hears about that well before it happens.

A nominal subscription is what keeps me actively developing it — fixing what people actually hit and building what they actually ask for, instead of shipping it once and walking away. That is the whole reason to charge anything at all.

Nobody gets surprised by that. If you are using it now you will hear about any change well before it happens, and the app will keep telling you plainly what it costs and when.

Version 1.9

It works. Expect rough edges.

Built for my own culling and used every week. Signed and notarised by Apple, so it opens like any normal app. If something breaks or annoys you, tell me — that is the whole reason it is out here.

Release notes →
Who built it

A photographer, not a software company

Chris Schmauch

I'm Chris Schmauch, a Santa Cruz photographer. I shoot and edit over 300 sessions a year — weddings, proposals, families — and I've done it for the better part of two decades. In all that time I was never entirely satisfied with the culling tools on offer, AI or not, for a workflow that is fast-paced but highly curated. I decide; I just need deciding to be fast.

The honest reason is family time. If the work side of my life isn't ruthlessly efficient, the family side pays for it — so when the tool I need doesn't exist, I build it. This one started because I was tired of building 1:1 previews to answer a question I could see in half a second if the crop were just sitting there. Everything it does, and everything it refuses to do, comes from that. The measurements on this page are from my own shoots — and the reason there is no AI ranking is that I tried it on tens of thousands of my own photos and it did not work.

It sits on the same shelf as GoodEye Shoot Ingest, the card-ingest tool that gets the photos off the card and into the archive before CullMaster Pro ever sees them.