Couplet is an app that looks across your photo library to find meaningful image pairs. It juxtaposes two photos to reveal something that exists in neither one alone.
The idea came from my photography practice. I'd recently created my first photo zine, which forced me to learn methods for image pairing. Using physical prints was a lot of fun, and something I'd still recommend, but you can only lay out so many prints on a coffee table. 50 work prints was my comfortable max. Couplet indexes hundreds of images, thousands if you're patient enough, scores every possible image pair across three axes (visual, geometric, and thematic), and surfaces the best candidates in a browsable grid.
Under the hood, the pipeline consists of different stages to analyze the images and double check scoring. Each image is run through a bundled CLIP model for semantic embeddings and Apple's Vision framework for composition and saliency analysis. A local vision model then writes a plain-language description of each image, and a second model reads those captions in pairs to judge whether there's a genuine conceptual connection between the two photos, and what kind. Everything runs on-device, no cloud required.
The project is fully vibe-coded: I don't write Swift, and I hadn't developed a macOS app before. I built the whole thing through conversation with Claude, describing what I wanted, reasoning through tradeoffs, and iterating on a codebase I can read but couldn't have written from scratch. I didn't crack open Figma when I needed UI assets or wanted to recompose experience elements; instead, I used Lovable and Claude Design. The repo is public on GitHub and includes the actual Claude Code context file used throughout the build as a transparency artifact. I think that's the honest way to ship something like this.