Select's job is a first pass over a shoot: group the near-identical frames, flag blur and closed eyes, rank what is left and write ratings that Lightroom reads. An agent can build a heuristic version on OpenCV, face landmarks and XMP sidecars in a weekend, and small open-source projects already do part of it. The gap is judgment. Aftershoot ranks frames with trained models, so a sharpness score will disagree with your taste on expressions and composition, and the Edit and Retouch halves, which learn your style from thousands of past edits, are not something a prompt reproduces.
Before you buildAftershoot's 30-day trial has no card and includes all three tools. Run one real shoot through it first and see whether the picks are worth $10-15 a month to you.
Build me a local photo culling tool to replace Aftershoot Select. Requirements: - Python 3.12: a Typer CLI `cull` plus a FastAPI review page on http://127.0.0.1:4950. Originals are never modified or moved; the tool reads a folder of RAW and JPEG files given on the command line. Storage is SQLite at ./data/cull.db through SQLAlchemy for scores, clusters and my overrides; embedded JPEG previews extracted with `rawpy` are cached in ./data/previews. - Analysis per image: sharpness (variance of the Laplacian with `opencv-python`, measured on the largest face if one is found), exposure (share of clipped shadows and highlights), and eye openness from MediaPipe face landmarks (eye aspect ratio, threshold in config.toml). Store each raw value. - Grouping: put frames in one cluster when their EXIF capture times are within 3 seconds and the `imagehash` perceptual hash distance is 10 or less. Rank frames inside a cluster by a weighted score from config.toml and mark the best one as the pick. - Decisions: `cull run ./shoot --target 800` keeps the best N frames overall, spread across clusters, and stores a one-line reason for every rejection, such as 'soft focus' or 'eyes closed'. - Review UI: grid and loupe with keyboard control (arrows, P pick, X reject, 1-5 rating, G compare the cluster side by side). My overrides always beat the tool's decision. - Export: `cull export ./shoot` writes XMP sidecars next to each original with xmp:Rating and xmp:Label through ExifTool, merging into existing sidecars. `--dry-run` lists what would change. - Tests: generate blurred and darkened copies of a sample photo and prove that they are flagged. `cull calibrate ./shoot-with-my-picks` prints how often the tool agrees with my own cull. - Single user. No accounts, no telemetry, local-first: no network calls after install. - Out of scope: AI editing styles, retouching, galleries, recognising named people. - README: installing ExifTool, reading the XMP ratings into Lightroom Classic, and an honest note that these are heuristics, not a trained culling model, so expect to override a share of the picks.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Aftershoot.
Add a learning step to the culling tool in this folder. Requirements: - A command `cull train ./shoot-with-my-picks` that reads my picks and rejects from the XMP ratings and the database overrides. - Fit a logistic regression (`scikit-learn`) on the stored features: sharpness, exposure, eye openness, face count, face size and cluster rank. Save it to ./data/model.joblib. - Use the model score instead of the weighted score when the file exists; keep the old score as fallback. - Print agreement before and after training on a held-out 20% of the frames. - Update the README, including the warning that a few hundred frames is a small training set.
Add colour labels to the culling tool in this folder. Requirements: - A config table mapping decisions to Lightroom labels: pick to green, maybe to yellow, reject to red. - The export writes xmp:Label and xmp:Rating together, and a `--labels-only` flag leaves ratings alone. - In the review page, show the label as a coloured border and let me change it with the keys 6-9. - Never overwrite a label I already set in Lightroom: skip those files and list them. - Update the README.
Add a shortlist export to the culling tool in this folder. Requirements: - `cull sheet ./shoot --min-rating 4` writes one static HTML file with downsized JPEG previews of the picks in capture order, with filenames as captions. - Embed the images as files in a folder next to it, 1600 px on the long side, quality 82, with the EXIF data stripped. - A checkbox next to each photo and a 'Copy filenames' button, so the client can send back their choices. - Work offline with no external scripts or fonts. - Update the README.
Culling and editing a wedding eats evenings, and the monthly fee is small next to the hours it hands back. Photographers also trust it because it works with their existing Lightroom or Capture One workflow and leaves the original files alone. The editing profiles, built from their own history, are the part they would be most reluctant to give up.
Estimate · Everything runs on your own computer with free libraries. The build is token usage on your agent plan, and tuning it on your own shoots takes more rounds than the first version.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Select | $15 | $10 | Unlimited AI culling in automated or assisted mode, duplicate grouping, blur and closed-eye detection, Cull to Target, ratings and labels exported to Lightroom Classic, Capture One, Photo Mechanic and Bridge. |
| Edit | $35 | $30 | Personalized AI Profiles trained on your past edits (2,500 images minimum, 5,000+ recommended), Instant AI Profiles from presets, 30+ marketplace styles, AI masking, crop and straighten, a built-in RAW editor. |
| Retouch | $25 | $20 | Skin, blemish, stray hair and glare cleanup, teeth whitening, object and people removal, background replacement for headshots, 10 presets and batch sync. |
| Complete | $55 | $45 | Select, Edit and Retouch together. |
A 30-day free trial with all three tools and no card. Aftershoot Galleries has a free Starter plan with 10 GB of photo storage.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: A model trained on how working photographers pick frames, Edit: AI profiles learned from your own past edits, plus masking and crop.
About $15 a month on the Select (AI culling) plan, $180 a year (checked 2026-10-20).
A model trained on how working photographers pick frames; Edit: AI profiles learned from your own past edits, plus masking and crop; Retouch: skin, hair and object cleanup across a whole gallery; Key Faces, Survey Mode and Cull to Target tuned over many releases; Galleries for client proofing, delivery and print sales. If any of those matter to you, keep paying.
Yes: PixCull (open source), Cullimingo (open source), darktable (open source).