Inspiration
A renewal notice arrives, looks exactly like last year's, and gets filed. Thirty pages later, the premium moved and the cancellation window got shorter. Nobody read it, because nobody reads a document that looks familiar.
That is the gap this Skill aims at. Not missing paperwork, but paperwork that changes quietly.
What it does
Renewal Radar treats a folder on the NAS as an archive with versions. It groups documents by vendor, compares each newest file against the one before it, and keeps only the changes that touch money, dates, notice periods or obligations. Cosmetic differences, like a renumbered page or a reflowed paragraph, are counted but kept out of the way.
Then it does the arithmetic that actually decides whether the user still has a choice: renewal date minus notice period, printed as a subtraction so anyone can check it by hand.
The output is one report with five sections: what changed this month, what renews inside the window, the last day to act, new items with no earlier version, and documents that could not be read. Every line carries a file path and a page number.
How I built it
The package is Markdown only. No scripts, no binaries, no dependencies to install. That is a constraint of the platform, and it turned out to be a good one: the Skill is pure orchestration, so every real operation goes to a registered expert.
Four capabilities, five delegations:
ug-filesystemtofile-agentfor discovery, one level deep, grouped by vendorug-documenttodocument-agentfor the version comparisonug-documentagain, to the same expert, for structured renewal terms: date, notice period, amount, clause text and pageug-knowledgetoknowledge-agentto save the reportug-filemgrtofile-agentto tag the newest file of each vendor
The tag is the part that makes repeat runs cheap. A file that carries the tag and has not changed is skipped, so the second month costs less than the first. Without it, the NAS is just a disk that gets rescanned.
Challenges
The hard part was deciding what counts as a change. A diff of two PDFs returns hundreds of differences and almost all of them are noise: line wraps, page numbers, a shifted table. The report only earns trust if it is short, so the comparison has to separate a moved decimal point from a moved paragraph.
The second problem was dates. A notice period is sometimes stated in days, sometimes in weeks, sometimes as "at least one month before". Converting silently would produce a deadline that looks authoritative and is wrong. The Skill shows the subtraction, and when the document does not say how to convert, it says the last day could not be computed instead of guessing.
What I learned
A deadline the user can check by hand is worth more than a confident answer. The subtraction is the feature.
What's next for Renewal Radar
A second pass that reads the clause behind a changed amount, so the report can say which sentence moved the money, not just that it moved. After that, the same version-aware comparison for warranties and receipts.
Built With
- ai
- contracts
- documents
- local-first
- markdown
- nas
- ugos
- workflow-automation