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
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.
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
Raster Formats
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.
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
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
- 150 images lifetime
- Full AI scoring
- XMP export
- All keyboard shortcuts
- 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.