Nominate is a macOS app that renames PDFs based on their contents.
nominate-app-in-action.mov
Like many striving for a paperless lifestyle, I habitually scan and shred every document that comes my way. While this keeps my desk free of clutter, it creates a digital mess of PDF files with nothing but a timestamp to their name.
Rather than go through an rename each file all by hand,
Nominate does this for me automatically.
See this file, Scan2025-02-03_123456.pdf
?
Let's drag-and-drop it into Nominate.
Nominate uses a combination of new-fangled AI and old-school NLP techniques to extract a timestamp and summary of the document's contents, which get massaged into a short, descriptive filename.
Important
Nominate performs 100% of its processing on-device. Your documents never leave your computer.
Moments later, Nominate suggests a new filename:
2025-01-31 Bank Statement.pdf
.
Much better!
Go ahead and click the Apply button to rename the file. Or, you can do the "Human-in-the-Loop" thing and check its work. Click the Quick Look icon (👁️) to open up a preview or the magnifying glass icon (🔍) to reveal the file in Finder.
- macOS 15
- Xcode 16
- Ollama
Download Ollama with Homebrew or directly from their website.
brew install --cask ollama
Download the llama3.2 model (2GB).
ollama pull llama3.2
Clone the Nominate repo and open it in Xcode.
git clone https://github.com/NSHipster/Nominate.git
cd Nominate
xed .
In the menu bar, select Product > Run (⌘R) to build and run the app.
Nominate is a native macOS app written in SwiftUI. Please do not take this as any kind of endorsement. To paraphrase Werner Herzog describing his feelings about French:
I do understand SwiftUI, but I refuse to write it. It's the last thing I would ever do. [...] For this project I had to write a few things in SwiftUI. I regret it.
Nominate uses the ollama-swift
package
to interact with Ollama via its HTTP server API,
which runs at http://localhost:11434/api/
.
Apple's PDFKit framework is used for
OCR.
The NaturalLanguage framework is used to
lemmatize and remove filler words from filenames.
The Foundation framework's DateFormatter
class
is used to parse and format dates found in the PDF.
Nominate's UI was inspired by ImageOptim by Kornel Lesiński.
- Pre-built releases available for download
- Improve user-facing error messages
- Create onboarding flow for Ollama and model installation
- Implement model selection settings
- Support customizable filename templates
- Enable Quick Action menu integration
- Allow Dock icon as drop target for files
- Extend functionality to rename images using
llama3.2-vision
Nominate is released under the MIT License.