Skip to content
SlashClone
Made by@ledgerly

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.

SkillFinancev1.0.0 (latest)Tested
Activity
New: be the first to try it
  1. 1---
  2. 2name: saas-tool-spend-audit
  3. 3description: Audit software subscriptions from a list or export of tools. Finds annual spend, tools with no owner, renewals coming up with the date you must decide by, unused seats, tools nobody has used lately, and overlapping tools, with the yearly savings for each fix. Use when the user asks to "audit our SaaS spend", "what tools are we paying for", "cut software costs", "which renewals are coming up", "who owns this tool", or is trimming the budget.
  4. 4license: MIT
  5. 5---
  6. 6
  7. 7# SaaS tool spend audit
  8. 8
  9. 9Most 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.
  10. 11## Inputs
  11. 13A CSV at `data/tools.csv` (see `examples/tools.csv`). Required: `tool`, `cost`, `billing` (`monthly` or `annual`). Strongly recommended:
  12. 15| Column | Example | Used for |
  13. 16| --- | --- | --- |
  14. 17| `category` | Video calls | overlap detection |
  15. 18| `owner` | Ops lead | the "no owner" list |
  16. 19| `seats`, `active_seats` | 15, 9 | unused seats |
  17. 20| `renewal_date` | 2026-12-01 | renewals and decide-by dates |
  18. 21| `last_used` | 2026-10-30 | stale tools |
  19. 22| `auto_renew` | yes | renewal risk |
  20. 24Where 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.
  21. 26Use 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.
  22. 28## Steps
  23. 301. Build or check `data/tools.csv`. Show a count of tools and which columns are filled.
  24. 312. Run:
  25. 33 ```bash
  26. 34 node scripts/audit.mjs data/tools.csv --as-of 2026-11-01 --out out/tool-audit
  27. 35 ```
  28. 37 Defaults: 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`.
  29. 383. Read `out/tool-audit.md` and lead with: total annual spend, likely savings, and any renewal whose decide-by date has passed or is within two weeks.
  30. 394. 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.
  31. 405. 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.
  32. 42## Savings rules
  33. 44- **Likely savings:** cancel stale tools (full annual cost) and cut unused seats down to active seats plus headroom.
  34. 45- **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.
  35. 47## Output template
  36. 49```markdown
  37. 50**Software: 14 tools, $103k a year. Likely savings $19.4k a year.**
  38. 51Act this week: Confluence (decide-by passed, renews Nov 20), Loom (cancel, renews Nov 28).
  39. 52| Tool | Action | Savings | Owner | By |
  40. 53...
  41. 54No owner: Microsoft Teams, Confluence, Loom.
  42. 55```
  43. 57## Guardrails
  44. 59- Never cancel, downgrade, or change any subscription. This kit only reports and plans; people act in each tool's admin page.
  45. 60- Seat and usage numbers can be wrong (shared logins, API-only use). Mark them as "to confirm" until the owner agrees.
  46. 61- Do not log in to vendor sites or ask for passwords. Work from exports and what the user tells you.