project preview

AI Photo Culling Tool

CONTEXT

Professional photographers routinely return from a shoot with hundreds or thousands of RAW files. Culling - the process of identifying the best shots to edit - is one of the most time-consuming parts of the workflow, often taking 1-3 hours for a single session. The process is largely subjective but follows consistent technical criteria: sharpness, exposure, composition, and expression. It's exactly the kind of repetitive judgment task that AI can accelerate.

SOLUTION

I built a Python CLI tool that automates the initial culling pass. The tool reads RAW files directly using rawpy, extracts EXIF metadata (aperture, shutter speed, ISO, focal length), and generates compressed JPEG previews using Pillow. Each preview is sent to GPT-4 Vision with a structured prompt asking the model to evaluate technical quality and score the image 1-1000 based on sharpness, exposure, composition, and subject clarity. Results are sorted, written to a CSV with per-image scores and reasoning, and the top-percentile shots are flagged for editing. In a real-world test, the tool processed 121 RAW files from a single session in 15 minutes at a total API cost of approximately $0.35 - saving over an hour of manual review.

RESULTS

  • 121 RAW photos processed in 15 minutes
  • Total API cost: ~$0.35 per session
  • 1+ hour saved per shoot on manual culling
  • Scores 1-1000 with per-image reasoning in CSV output
  • Works with any RAW format supported by rawpy (CR2, ARW, NEF, etc.)

TECH STACK

PythonOpenAI Vision APIPillowrawpyCLIEXIF

Verified sources — reviews, public code and competition results, each checkable at origin. Or read the full background.