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

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
- 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.
- 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.
- 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.
- 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