Moody side-light through dark trees
All spreads ·Spread 04 / 04·Desktop · Photography

fuji

A quieter way to cull a shoot.

StatusWIPYear2026Domainfuji-culler
Spread 04 · The story

A small Tauri app for the post-shoot ritual — plug in a camera, browse the card, star the keepers, send them to a library folder. Native RAF previews, CLIP-powered search, keyboard-first.

Fuji exists for the half-hour between the last frame and the first edit. The card is in your hand, the laptop is open, and the next step is supposed to be Lightroom — except Lightroom wants a catalog, a subscription, and an opinion about your folder structure. Fuji wants none of those things. It wants you to rate, compare, and move on.

It started as a Saturday tool for triaging Fujifilm RAF files without booting the whole Adobe stack. It grew a small CLIP model so you can search "kid laughing in golden light" instead of scrolling. It stays small on purpose — your library is a folder on disk, your ratings live next to your photos, and the app gets out of the way the moment you have your set.

"

The half-hour between the last frame and the first edit deserves its own tool — small, local, fast.

— Workbench notes

Section II

The small
stuff.

The decisions you don't see in screenshots — but feel in the using.

  1. 01

    Native RAF previews

    Fujifilm RAW files decoded in Rust without a round-trip through Lightroom or RawTherapee. Thumbnails render on rayon-pooled workers so the card looks like a card in seconds — the first row is browsable while the rest are still painting in.

  2. 02

    Search by vibe, not by filename

    A CLIP model embedded into the app via ONNX Runtime. Type "rain on the windshield" or "the dog mid-jump" and the keepers float up. Embeddings live in the library folder — computed once, queried locally, no upload, no cloud round-trip.

  3. 03

    A keyboard for the cull

    1–5 to rate, 0 to clear. Space jumps to the next unreviewed frame so you never lose your place. M marks a candidate, C opens side-by-side compare, G toggles grid and single. The mouse is welcome but the rhythm is keys.

  4. 04

    Card in, prompt out, library stays put

    A Rust PTP bridge watches for camera mounts. When a card shows up a non-blocking prompt floats over the library asking what to do — say no and the library keeps reading, say yes and the import progress drops in without ever taking the screen.

Materials

Built with

Boring tech, used carefully. The sharp edges go in the design, not the stack.

  • Tauri 2
  • Rust
  • Vue 3
  • Pinia
  • Tailwind 4
  • ONNX Runtime
  • CLIP
  • rayon

Cover · Photo on Unsplash