Saas tool spend audit
@ledgerly/saas-tool-spend-audit
Audit your SaaS subscriptions from a simple list: annual spend, owners, upcoming renewals with decide-by dates, unused seats, stale tools, overlapping tools, and the savings from each fix. Writes a prioritized action list.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
What it makes
Real output from this kit
- Sample file2 KB, download to openTool auditFrom the kit's tests
- Sample file3 KB, download to openTool auditFrom the kit's tests
- Sample file3 KB, download to openTool auditFrom the kit's tests
How this works
- It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
- While it works, it reads and changes files in the places it lists, nowhere else.
- It runs these commands on your computer: node scripts/audit.mjs.
- Nothing runs until you choose to use it, and you can remove it any time.
SKILL.md
SaaS tool spend audit
Most companies overpay for software in three boring ways: seats nobody uses, tools nobody opened in months, and two tools doing one job. This kit finds all three, puts a dollar amount on each, and lines them up against renewal dates so you act before the auto-renew.
Inputs
A CSV at data/tools.csv (see examples/tools.csv). Required: tool, cost, billing (monthly or annual). Strongly recommended:
| Column | Example | Used for |
|---|---|---|
category | Video calls | overlap detection |
owner | Ops lead | the "no owner" list |
seats, active_seats | 15, 9 | unused seats |
renewal_date | 2026-12-01 | renewals and decide-by dates |
last_used | 2026-10-30 | stale tools |
auto_renew | yes | renewal risk |
Where the data comes from: the expense-categorizer output or card statements for cost, each tool's admin page for seats and last activity, and contracts for renewal dates. If the user only has a list of charges, build data/tools.csv from it, leave unknown columns blank, and say which columns are missing. The audit still runs; it just finds less.
Use the same category name for tools that do the same job (both video tools are "Video calls"), or overlaps are missed. Propose categories and confirm with the user.
Steps
- Build or check
data/tools.csv. Show a count of tools and which columns are filled. Run:
node scripts/audit.mjs data/tools.csv --as-of 2026-11-01 --out out/tool-auditDefaults: renewals in the next 90 days (
--renewal-days), stale after 60 days unused (--stale-days), decide 30 days before renewal (--notice-days), keep 5% seat headroom (--headroom-pct). Use today's date for--as-of.- Read
out/tool-audit.mdand lead with: total annual spend, likely savings, and any renewal whose decide-by date has passed or is within two weeks. - Walk through the action list with the user, biggest savings first. For each, confirm the facts (is that tool really unused, or used by a contractor?) and an owner for the action.
- Write
out/tool-audit-plan.md: one line per agreed action with owner and date, plus the "no owner" list with a proposed owner for each.
Savings rules
- Likely savings: cancel stale tools (full annual cost) and cut unused seats down to active seats plus headroom.
- Possible savings: consolidating overlapping tools. The script keeps the tool with the most active seats and counts the rest as possible savings. It also points out when a free tool you already have (bundled with your office suite, for example) could replace a paid one. These need a human decision, so they are reported separately.
Output template
**Software: 14 tools, $103k a year. Likely savings $19.4k a year.**
Act this week: Confluence (decide-by passed, renews Nov 20), Loom (cancel, renews Nov 28).
| Tool | Action | Savings | Owner | By |
...
No owner: Microsoft Teams, Confluence, Loom.Guardrails
- Never cancel, downgrade, or change any subscription. This kit only reports and plans; people act in each tool's admin page.
- Seat and usage numbers can be wrong (shared logins, API-only use). Mark them as "to confirm" until the owner agrees.
- Do not log in to vendor sites or ask for passwords. Work from exports and what the user tells you.
README.md
SaaS tool spend audit
Turns a list of your software subscriptions into a savings plan: unused seats, tools nobody has opened in months, overlapping tools, and renewals with the date you need to decide by. Every finding has a yearly dollar amount, so you fix the big ones first.
Who it is for: founders, ops, and finance leads who suspect the software bill is too high and have a renewal coming up.
Example
Input: examples/tools.csv (14 tools with cost, seats, active seats, renewal date, last used).
Output (out/tool-audit.md):
14 tools, $102,959 a year. Likely savings $19,367 a year (stale tools and unused seats).
| Confluence | 2026-11-20 | 2026-10-21 (**passed**, act now) | $4,200 | yes | **none** | cut to 7 seats |
| Asana | cancel | $2,640 | not used in 73 days |
- Video calls: Zoom, Google Meet. You already have Google Meet at no extra cost; moving off Zoom would save up to $1,799 a year.Plus out/tool-audit.csv with every tool, its flags, and suggested action.
What it can access
- Runs
node scripts/audit.mjs(Node built-ins only). - Reads
data/, writesdata/tools.csv(your list) andout/tool-audit*. - No network, no vendor logins. It never changes a subscription.
Setup
None. Ask Claude to audit your SaaS spend; it will help you build the tools list from card statements or admin pages.
Files
- README.md
- SKILL.md
- examples/tools.csv
- kit.json
- scripts/audit.mjs
- scripts/lib.mjs
Did it work?
0worked for them0did not work
Sign in to say whether it worked for you.
Nobody has said yet. Tried it? Tell the next person.
