- “Not opened in three years” is a promise the OS won’t let us keep
-
PhotoKit exposes no view count, no last-opened date, no read timestamp. Nothing in the
framework knows you scrolled past a photo yesterday, and any app claiming otherwise is
guessing — usually with creation date wearing a costume. Keeper measures neglect instead: a
frame is untouched when it was never favourited, edited, filed, shared or used as a
Memory key photo, and has no recognised face. It words it that way in the UI too.
- Face clustering is the biggest technical risk
-
Vision gives us face detection and capture quality publicly; it does not give us a public
face-identity embedding, and the system’s own People albums aren’t reachable through
PhotoKit. Clustering from feature prints on face crops works, but it is meaningfully worse
than Apple’s and it degrades across years and haircuts. This is why the people feature is
opt-in and why nothing in the main flow depends on it.
- “People you no longer photograph” is the one feature that can hurt someone
-
“You haven’t photographed this person in four years — clear 3 GB?” is technically an
excellent space-saving feature and, some fraction of the time, the cruellest sentence a
phone will say. That gap is a former partner, an estranged parent, a friend who died. If it
ships, it ships as Chapters: off by default, never phrasing a cluster as
absence, never pre-selecting a person’s photos, offering only thin this chapter —
the ordinary duplicate cull scoped to those photos, deleting none of the singles. Every
cluster carries a permanent “never suggest anything here”. It is also the first thing I’d cut.
- The aesthetics score needs iOS 18 and macOS 15
-
The image aesthetics request — which also carries the utility flag separating a receipt from
a photograph — is new API. Supporting iOS 17 means hand-rolling that classifier and shipping
a Core ML model, which adds bundle weight and a whole evaluation problem. Recommendation:
require iOS 18 and take the free, Apple-tuned score.
- Battery and thermals during the first index
-
Fifteen-plus minutes of sustained Neural Engine work will warm a phone and drain it.
Mitigation is to default the full pass to charging-and-idle, make a foreground scan
explicitly opt-in with the tradeoff stated, and always let partial results be reviewed. It
still needs measuring on an older device before we believe any of it.
- Video is where the bytes are and where the tooling is thinnest
-
Similarity detection across videos means decoding keyframes and is roughly an order of
magnitude more expensive than stills. V1 treats video by metadata only — subtype, duration,
size, your signals — which already reclaims 41 GB in the model library. Near-duplicate video
is a v2 problem.
- “Best” is subjective and the app will be wrong sometimes
-
There is no way around this, only a way to survive it. Every disagreement is one tap, the
reasoning is always visible, and the app tracks how often you override it. If you overrule
the sharpness weighting fifty times, that is a signal worth learning from locally — a
candidate v2 feature, kept on device like everything else.