Metadata Photo

A photo-library pipeline you can actually see.

Metadata Photo separates pairing, deduplication, metadata attachment, cross-folder comparison and final organisation into clear stages. The examples below show what each stage changes in a real Finder-style library.

The six main stages

Each stage has one job. Pair first, deduplicate within each branch, attach metadata, compare Source against Data Inject, finalise links, then consolidate the library.

Stage A01 Apple • 02 Android • 03 RAW pairing
Stage B04 Apple • 05 Android • 06 RAW • 07 Work dedup
Stage C08 Apple • 09 Android • 10 RAW metadata attachment
Stage DSource ↔ Data Inject cross-folder dedup
Stage ECross-folder hardlink and finalisation
Stage FConsolidation and empty-folder collection
Stage A • Module 01

Apple Live Photo pairing

Connects the still image and companion video that belong to the same Apple Live Photo, so later duplicate processing treats the pair as one relationship rather than two unrelated files.

Incoming

IMG_1044.HEICIMG_1044.MOVIMG_1045.HEIC

Paired

Live Pair: 1044No Pair: 1045
Stage A • Module 02

Android Motion pairing

Handles Android Motion Photo media separately from Apple content, including recognised motion-video forms, and keeps the confirmed image/video relationship together.

Incoming

PXL_903.jpgPXL_903.mp

Paired

Android Motion Set
Stage A • Module 03

RAW + cover pairing

Connects a RAW original such as DNG with its JPEG/HEIC cover so they remain a meaningful pair throughout duplicate detection and later organisation.

Camera files

DSC_4021.DNGDSC_4021.JPG

Paired RAW

RAW + Cover
Stage C • Modules 08–10

Attach master metadata

After same-branch duplicate work is settled, Apple, Android and RAW masters can receive the matching metadata relationship needed for the later cross-folder stages.

Master media

Best Apple pairBest RAW set

Metadata attached

DatesGPSPair context

Stage B — every dedup module

Stage B runs separate duplicate workflows so Apple Live, Android Motion, RAW and ordinary Work files do not get mixed together accidentally. Each branch finds candidate groups, confirms duplicates and keeps the best master.

Module 04 • Apple

Deduplicate Apple Live sets

Compares Apple Live content inside the Apple branch. A confirmed duplicate pair is grouped around one keeper while the Live Photo relationship remains intact.

Finder — Apple Live
live
iphone
Cluster Sets
Standalone
Keeper • IMG_1882HEIC + MOV
Duplicate • IMG_1882 (1)Grouped with keeper
Module 05 • Android

Deduplicate Android Motion sets

Does the same branch-safe duplicate work for Android Motion media. Apple-specific files are not used to decide Android relationships.

Candidate group

PXL_220.jpg + motionPXL_220 copy.jpg + motion

Resolved

1 Master Set1 Duplicate Set
Module 06 • RAW

Deduplicate RAW sets

Compares paired RAW material without separating the RAW original from its cover. The result is a keeper RAW set plus any duplicate sets.

RAW candidates

DSC_4400.DNG + JPGDSC_4400 (1).DNG + JPG

Resolved

Best RAW + CoverDuplicate RAW set
Module 07 • Work

Deduplicate ordinary library files

Processes the broader Work branch for standalone photos and videos. Similar files form candidate clusters, duplicates are resolved, and unique items remain standalone.

Mixed Work folder

holiday.jpgholiday copy.jpgreceipt.pngclip.mp4

Output

holiday keeperholiday duplicatereceipt standaloneclip standalone

Stage D — Source ↔ Data Inject

This is the cross-folder comparison stage. It does not simply deduplicate one folder by itself; it compares the Source library against the Data Inject side so matching media can be resolved across the two streams.

Source LibraryOriginal photos, videos and paired sets
Candidate comparisonIdentity, hashes and enabled visual evidence narrow likely matches
Data InjectMedia carrying metadata or imported structure
Cross-folder resultMatched, duplicate-resolved and ready for Stage E finalisation
Finder — cross-folder result
Source
Data Inject
Matched Set 00042
Unmatched
Source keeperMatched by evidence
Data Inject counterpartMetadata relationship retained

Finder output view

Metadata Photo includes a Finder-style output experience so the consumer can understand the resulting folder hierarchy and see thumbnails rather than interpreting raw logs.

Metadata Photo — Finder Output
Source
live
RAW
Work
iphone
android
Cluster Sets
Standalone
no_pair
IMG_1882.HEICLive keeper

Post-processing modules 90–97

After the main A–F pipeline, these modules repair or enrich metadata and place files into useful structures.

90

Google Photos JSON

Reads Google Photos sidecar JSON and injects available capture date and GPS metadata into the matching media.

91

GPS by Timestamp

Uses nearby timestamp donor media to fill GPS when an appropriate donor exists within the configured close-time window.

92

Date from Filename

Recognises date/time patterns in filenames and writes them into standard media date fields when needed.

93

Sort by Camera

Checks camera EXIF and isolates media without camera information so those files can be reviewed separately.

94

Sort by EXIF / GPS

Categorises files by metadata condition, including media with GPS, media with missing EXIF, and GPS-error cases.

95

Matched Structure

Places Source files according to the corresponding Data Inject relative folder structure using persistent identity matching.

96

Place by Coordinates

Places remaining unmatched Source files into coordinate-based folders when usable location data is available.

97

Clean Copy Suffixes

Cleans trailing numeric copy markers such as “(1)” and “(2)” after the structural work is complete.