Skip to content
Yassir Halaoui

Mac app · Live

Paperwork,
handled.

A native macOS app that gives every download a real name, finds any document by what is written inside it, and assembles the dossier a landlord, accountant or consulate asks for. It reads everything with Apple's on-device model, so no document ever leaves the Mac.

Role
Sole engineer, designer and operator, building with AI coding agents
Timeline
Started 13 Oct 2026 · Launched 17 Oct 2026
Live at
usekempt.app
Kempt's Dossiers view on macOS: the dossier a landlord asked for, built from their email, with all six documents found and ready to export.
Kempt · Dossiers view · macOS 26

The problem

Paperwork lands as Document (12).pdf, scan_0042.pdf and IMG_2806.HEIC. Six months later a landlord asks for three payslips, a tax notice and a rent receipt, and the evening disappears into Finder.

A cloud service could read those files for you. They are payslips, identity cards and bank details, though, and the only place I was willing to read them is the Mac they already live on.

Constraints

  • Nothing leaves the Mac

    Documents are read by Apple's on-device model. No account, no telemetry, no analytics. The one network request in the whole app is the daily update check, and it sends the version number and nothing else.

  • The model is small

    An on-device model is fast and private, and it is not something you trust with a rent amount. Every design decision had to assume it would sometimes be wrong.

  • Never lose a file

    Every move is journaled with its reason and can be undone. Clean-up goes to the Trash. A file Kempt is unsure about waits in Needs a look and is never moved, renamed or deleted until a person checks it.

  • Ship in days, alone

    Signing, notarization, payments, licence keys and automatic updates all had to work on the first public build, built by one person working with AI coding agents.

Decisions

  1. 01

    Facts decide, the model only names

    Dates, sizes and what the page actually says choose the folder. The on-device model writes the human-readable name and nothing more, so a wrong guess costs a rename instead of a lost document.

  2. 02

    No answer without a source

    Ask Kempt for your rent and it answers with the lease it read it from. If a number is not on the page it cites, it does not say the number. That rule is what makes a small model usable for money questions.

  3. 03

    A slot takes a document only if it is that document

    Dossiers fill checklists like three recent payslips or one tax notice. A receipt that mentions a driving licence is not a driving licence, so matching is done on what a document is, in the owner's name, not on what it mentions.

  4. 04

    Sell directly first, the Mac App Store second

    Version 1.0 shipped as a notarized Developer ID build with Sparkle updates and Stripe-issued Ed25519 licence keys, while the sandboxed App Store edition went through review. Both editions build from the same sources.

Where it landed

From idea to launch
4 days
Automated tests
122
Documents uploaded
0
App
Swift · SwiftUI · AppKit · App Intents
On-device intelligence
Apple Foundation Models · Vision · PDFKit · Speech
Distribution
Developer ID and notarization · Sparkle updates · Stripe licensing · Vercel functions