Documentation

How it works, what it collects, and how to use it.

Privacy Policy

Effective date: March 2026

Data Collection

Cullr does not collect, transmit, or store any personal data. All image processing happens entirely on your device. No images, metadata, or usage analytics are sent to any server.

Network Access

Cullr connects to the internet only for two purposes: verifying in-app purchase receipts via Apple's StoreKit 2 framework, and checking for app updates through the App Store. No other network requests are made.

On-Device Storage

Session data (scores, decisions, thumbnails) is stored locally in a SQLite database on your device. Your cumulative image count is stored in the iOS Keychain to persist across reinstalls. Purchase entitlements are cached in UserDefaults and verified against Apple's transaction history.

Accessed APIs (Privacy Manifest)

As required by Apple, Cullr declares the following API usage in its privacy manifest:

  • File Timestamp API — used to read file modification dates during photo import
  • UserDefaults API — used to cache purchase entitlement status

Third-Party Services

Cullr uses no third-party analytics, advertising, or tracking SDKs. The only external dependency is GRDB (an open-source SQLite wrapper) which operates entirely on-device.

Contact

For privacy questions, reach us at support@cullr.app or use the contact form on our homepage.

How It Works

Cullr is a first-pass culling tool for photographers. Point it at a folder of images. It scores every shot on four quality dimensions and suggests keep or reject. You review the suggestions and override where you disagree.

The Workflow

Step 1
Import
Select a folder from Files. Cullr scans recursively for supported image types.
Step 2
Score
AI analyzes each image for aesthetics, sharpness, faces, and exposure.
Step 3
Review
Swipe or use keyboard shortcuts to approve, reject, or re-rate suggestions.
Step 4
Export
Generate XMP sidecar files. Open in Lightroom — your picks and rejects are already set.

Thermal Intelligence

Cullr checks your iPad's thermal state and adjusts concurrency: 3 workers when cool, 1 when warm, full pause at critical temperature. The UI stays responsive even on long sessions.

Duplicate Detection

After ingestion, Cullr runs a two-pass duplicate detection algorithm. First, images are grouped by capture timestamp (within a 2-second window). Then, perceptual hashing identifies visually similar shots within each group. The highest-rated image in each duplicate group is suggested as the keep.

Scoring System

Every image gets a 1-5 star rating from four metrics, weighted and combined.

Aesthetic
40%
Overall visual appeal via Apple Vision framework (iOS 18+)
Sharpness
25%
Focus quality measured by Laplacian variance analysis
Exposure
20%
Histogram-based analysis penalizing clipped highlights and shadows
Face Quality
15%
Highest confidence score among detected faces (0 if no faces)

Decision Inference

Based on the composite rating, Cullr suggests an initial decision: images rated 3 stars or higher are marked Approved, 1 star or lower is Rejected, and everything in between stays Undecided for your review. All decisions can be overridden manually.

Graceful Fallback

If any metric fails to compute (e.g., a corrupted file), missing values default to a neutral score of 3. Scoring never blocks the pipeline — the image remains reviewable with partial data.

Supported Formats

RAW Formats

.CR3Canon
.CR2Canon
.NEFNikon
.ARWSony
.RAFFujifilm
.DNGAdobe
.ORFOlympus
.RW2Panasonic

Raster Formats

.JPEG
.HEIC
.HEIF
.TIFF

RAW+JPEG Pairing

When Cullr finds a RAW and JPEG file with the same filename stem in the same directory (e.g., IMG_001.CR3 and IMG_001.JPG), it automatically pairs them. The RAW file becomes the primary asset and the JPEG is linked as a companion — so you only review each shot once.

Keyboard Shortcuts

Cullr is built for speed. Every action is a single keystroke.

PApprove image
XReject image
1–5Set star rating
← →Navigate between images
⌘ZUndo last action
⇧⌘ZRedo

Touch gestures work too: swipe right to approve, swipe left to reject. Undo history supports up to 1,000 actions with automatic coalescing for rapid rating changes.

XMP Export

Cullr writes XMP sidecar files that Lightroom Classic and CC read natively. Each sidecar has your star rating and pick/reject label.

What Gets Written

<!-- Standard Adobe fields -->
<xmp:Rating>1-5</xmp:Rating>
<xmp:Label>"Approved" | "Rejected"</xmp:Label>
<!-- Cullr metadata -->
<cullr:Decision>approved | rejected | undecided</cullr:Decision>
<cullr:Source>ai | user</cullr:Source>

File Placement

Sidecar files are saved alongside your originals, preserving your folder structure. For IMG_001.CR3, Cullr creates IMG_001.xmp in the same directory. Writes are atomic — if export is interrupted, no partial files are left behind.

Free vs Pro

Free
$0
  • 150 images lifetime
  • Full AI scoring
  • XMP export
  • All keyboard shortcuts
Pro
Lifetime
$79
  • Unlimited images
  • AI duplicate grouping
  • Priority pipeline
  • All future updates

The free tier is cumulative across all sessions and survives reinstalls. Pro is a one-time purchase, no subscription. Both tiers have all features. Pro just removes the image limit.

Accessibility

VoiceOver

Every interactive element has a descriptive accessibility label. Image positions, star ratings, decision states, duplicate groups, and thermal status are all announced. Decorative elements are hidden from the accessibility tree.

Dynamic Type

Cullr respects your system text size preferences. All UI elements scale with Dynamic Type, capped at Accessibility 1 to prevent layout breakage on the largest sizes while remaining legible.

Haptic Feedback

Navigation, decisions, and exports provide tactile confirmation through haptic feedback on supported devices (iPad with M-series or newer). Devices without haptic hardware degrade silently.