Recruiter Snapshot

Unicadr

2026

Every photo you own, in one catalog.

Product screens

01 / 05
Unicadr
All Media: every catalogued folder in one grid, with the inspector open. Demo library.

Overview

I built Unicadr, a free macOS app that catalogs photos and videos across the Mac, external drives and synced cloud folders, and finds their duplicates with exact, perceptual and neural matching, all on the Mac itself.

Problem statement

Years of phone imports, camera cards and backups leave the same pictures scattered across disks, drives and cloud folders, often resized, re-encoded or edited. Finding real duplicates means recognising those copies, not only identical files, and doing it without uploading a private library anywhere or losing track of drives that come and go.

Solution

I treated a photo library like any other system that has to be trusted: it only reads by default, every match carries its evidence, and nothing on disk changes without an explicit decision.

An engine independent of the UI.

I wrote the catalog, scanner and matching engine as a Rust library over SQLite, with a Tauri desktop app and a command-line tool on top of the same catalog, so the interface can change without touching scanning or storage.

Incremental, cloud-safe scanning.

Scans compare each folder with the catalog and read only new or changed files, batch metadata through a bundled ExifTool in parallel, and resume from a stored queue after a crash. Online-only iCloud and OneDrive placeholders are recognised and never opened, so a scan cannot start downloading a whole cloud library.

Three-stage matching.

Every file gets a BLAKE3 hash, five perceptual hashes (PDQ, pHash, dHash, wavelet and Zernike) and an SSCD copy-detection descriptor, run through ONNX Runtime on the CPU. Matching escalates from exact to perceptual to descriptor, and each result records which stage decided it and why.

Calibrated scores.

I shaped the score curve so that copies stand well clear of burst shots, and measured it on labelled pairs: true copies score 98.7 to 100 %, burst shots mostly far less (median about 76 %) and unrelated pictures 0.

Rules for the copy to keep.

I built a staged rule engine that picks the reference copy in each duplicate group, such as HEIC over JPEG at the same resolution and then the most image data. It measures image data rather than file size by parsing JPEG, HEIC, PNG, WebP and MP4 containers.

File operations that fail safe.

Moves, swaps and deletions happen only on confirmation. Swaps across volumes copy, verify and roll back if a step fails, and files that disappear are flagged rather than removed, so an unplugged drive's catalog stays browsable.

Outcome

I designed and built Unicadr end to end, from the matching engine to the desktop app and its product site. Version 0.1.0 is released as freeware for Macs with Apple silicon.

Visit unicadr.zorbion.com

Technologies used

RustTauriSvelteKitSvelteTypeScriptSQLiteONNX RuntimeExifToollibheifBLAKE3Rayon

Data volumes & scale

  • 3 matching stages
  • 8 fingerprint algorithms (1 opt-in)
  • 45 photo, RAW and video file extensions
  • ~56–79 ms per image for the neural descriptor (CPU)
  • ~16,000 lines of Rust
  • ~12,000 lines of TypeScript and Svelte