All work
Building iOS · On-device ML · Project notes

framewise: a camera that knows where the photo is going

Pick Story, Feed, thumbnail or print, and the viewfinder sets ratio, crop and zoom before you take the shot. Everything stays on the phone.

Role
Solo builder
Year
2026 — now
Stack
Swift · SwiftUI · Apple Vision · Core ML · PyTorch
Concept render of the framewise camera screen in three destinations, Feed, Story and Thumbnail, built from the app's design tokens
Concept render built from the app's design tokens, not a device capture.
01

The problem

Photos are usually taken first and cropped later for wherever they end up, and by then the framing may not work. The time to decide is before the shot.

02

What I did

The app is built from small packages that can be tested on their own:

Engine Framing engine

CompositionEngine is pure Swift, tested on Linux. It holds the framing logic without touching the camera.

Camera CameraKit + Perception

Runs analysis at 10 Hz while you frame. PhotoWriter keeps the original and stores the crop as a reversible edit.

Model Crop scorer

A MobileNetV3 + RoIAlign model trained on GAICD and CPC and exported to a Core ML package.

The product rules are strict: on-device only, no account, no backend, and a one-time purchase.

03

The result

0.775 SRCC, learned crop scorer
0.40 SRCC, hand-written rules
56% Acc5, against 17% for the rules

On the GAICD test split, 200 photos with about 90 human-rated crops each, the model nearly doubles the rank correlation of hand-written rules.

This is an offline benchmark, not latency or quality on a phone. Six training runs landed within noise of each other, so more of the same training would not help.

04

What I'd do next

Connect the model. The app ranks crops with the hand-written rules today. The trained scorer is exported but not wired in yet.

Measure it on a device. Latency and battery in a live viewfinder are the numbers that decide if the model ships.

Get in touch More work All projects
Top