Most companies leak 20–30% of their SaaS spend, zombie seats, duplicate tools, and “we’ll cancel later” renewals. The $10K SaaS Purge is a 7-day sprint to inventory everything, surface what’s unused, decide Kill/Keep/Clone fast, and send the scripts that actually get credits back.
The $10K SaaS Purge (in 7 Days)
Most companies waste 20–30% on unused seats & duplicate tools. This sprint gets $10K+ back—fast.
7-Day Plan — What to Do Each Day
Inventory Method — Exports + SSO Logs
What to export
- Finance: Card & ACH CSV (merchant, amount, memo, date, last 12–18 months).
- SSO/IdP: Last-login report by app (user email, app name, last seen).
- Vendors: Admin seat rosters, invoices, renewal dates, plan tiers.
email and vendor/app. Create a simple map for brand names → vendor IDs (e.g., “Adobe CC” → “Adobe”).CSV Columns (master sheet)
| Column | Example | Notes |
|---|---|---|
| Vendor / App | Figma | Normalize brand vs. legal entity |
| User Email | sam@company.com | Primary join key |
| Seat Type | Editor | Role/plan tier |
| Last Seen | 2025-08-22 | From SSO or vendor admin |
| Monthly $ | 24.00 | Per-seat, net of discounts |
| Billing Owner | Design | Team or person |
| Renewal Date | 2025-11-01 | Annuals matter most |
| Status | Active/Cold/Idle | Auto-filled (see heatmap) |
Heatmap — Active vs. Last-Seen
| User | Vendor | Seat | Last Seen | Status | $ / mo |
|---|---|---|---|---|---|
| sam@company.com | Figma | Editor | 2025-09-02 | Active | $24 |
| jane@company.com | Figma | Editor | 2025-07-12 | Cold | $24 |
| dev@company.com | Figma | Viewer | 2025-05-01 | Idle | $0 |
| ops@company.com | Asana | Business | 2025-08-18 | Active | $25 |
| sales@company.com | Asana | Business | 2025-06-10 | Idle | $25 |
“Kill / Keep / Clone” Decision Matrix
| Vendor | Overlap? | Adoption | Criticality | $ / Active | Renewal Proximity | Decision | Action |
|---|---|---|---|---|---|---|---|
| Figma | None | High | Core | $24 | 120 days | Keep | Ask for annual prepay discount; freeze Editors to active list only |
| Asana | Jira | Mixed | Important | $25 | 30 days | Clone → Consolidate | Move Sales tasks to Jira; reduce Asana seats by 40% |
| Miro | Figma whiteboards | Low | Non-core | $12 | 15 days | Kill | Cancel now; export boards → Figma |
| Zoom | Google Meet | Medium | Non-core | $15 | 200 days | Clone → Price-match | Cut to power-users; ask vendor to match Meet pricing |
Email / Chat Scripts — Cancel, Downgrade, Price-Match
Cancel (idle seats / duplicate tool)
Subject: Cancel seats & credit request — [Account #] Hi [Vendor], We reviewed usage and found [X] seats with no activity since [date] (attached export). Please cancel those seats effective today and credit from [last renewal/billing date] if possible. We’ll keep [Y] active seats for [team]. Thanks, [Name]
Downgrade (role/plan pruning)
Subject: Downgrade plan & reduce seat count — [Account #] Hi [Vendor], Please downgrade from [Plan] to [Plan] and reduce seats from [N] to [N’]. Only users in the attached “Active list” should remain paid. Confirm new MRR and effective date. Best, [Name]
Price-Match (retain but pay less)
Subject: Renewal pricing review — [Account #] Hi [Vendor], We’re consolidating tools and considering alternatives at $[X]/user. If you can match that rate and include [term: e.g., 2 months free/annual prepay], we’ll renew today for [N] seats. Let me know what’s possible. Thanks, [Name]
Back-dated credit (zombie licenses)
Subject: Credit for inactive seats — [Account #] Hi [Vendor], Audit shows [X] seats billed but inactive since [date] (SSO logs attached). Please credit the unused portion back to [date] and adjust our license count to [Y]. Regards, [Name]
Renewal-Clock Tracker
| Vendor | Owner | Renewal Date | Notice Window | Seats → New Seats | Status | Next Action |
|---|---|---|---|---|---|---|
| Asana | Ops | 2025-10-30 | 30 days | 60 → 36 | Vendor reviewing | Follow up 9/22; confirm credit note |
| Figma | Design | 2026-01-15 | 45 days | 25 → 18 | Planned | Lock editor list; request annual prepay discount |
| Miro | PMO | 2025-09-28 | 15 days | 20 → 0 | Cancelled | Archive boards; export completed |
Quick Savings Snapshot
| Move | Seats | $ / seat / mo | Annual Impact |
|---|---|---|---|
| Kill Miro (dup) | 20 | $12 | $2,880 |
| Prune Asana (idle) | 24 | $25 | $7,200 |
| Figma price-match (-15%) | 18 | $24 → $20.40 | $777 |
| Estimated Year-1 total | $10,857 |
Deliverables (Copy-Ready)
CSV Template — Inventory
vendor,user_email,seat_type,last_seen,monthly_usd,team_owner,renewal_date,status Figma,sam@company.com,Editor,2025-09-02,24,Design,2026-01-15,Active Figma,jane@company.com,Editor,2025-07-12,24,Design,2026-01-15,Cold Asana,ops@company.com,Business,2025-08-18,25,Ops,2025-10-30,Active Asana,sales@company.com,Business,2025-06-10,25,Sales,2025-10-30,Idle
Import to Sheets/Excel and add formulas for status thresholds.
Cancellation Script (copy/paste)
Hi [Vendor], please cancel [X] idle seats effective today and credit from [date] where possible (logs attached). Keep [Y] active seats. — [Name]
Renewal-Clock Tracker — Columns
- Vendor, Owner, Renewal Date, Notice Window, Seats → New Seats
- Status (Planned / Vendor reviewing / Approved / Credited / Cancelled)
- Next Action + Due
Lock It In — Policy Guardrails
Seat Ownership
Every vendor has a named owner who approves additions and runs a quarterly seat audit.
Consolidation Rule
One tool per job per team unless an exception is approved with a sunset date.
No Auto-Renew Without Alert
Renewals require T-60/T-30 reminders and a price check; otherwise, do not increase seats or upgrade tiers.
Deprovisioning Workflow
- Offboarding checklist triggers: remove SSO group, reclaim seat, archive/export user data.
- Seat is reassigned from a pool—no net-new purchase without owner approval.
- Monthly report: seats reclaimed vs. purchased.
SSO + Least Privilege
All paid apps behind SSO; default new users to viewer roles. Editors/admins require business justification with an expiry date.
Quarterly Seat Audit
Ops emails each owner their heatmap. Anything idle >60 days becomes cancel/downgrade by default unless an exception is filed.
What’s Next — 30 / 60 / 90
Day 30
- Finish first-pass purges & credits.
- Standardize plan tiers across teams.
- Create vendor owner list + inbox rules.
Day 60
- Migrate “clone” tools to the primary system.
- Turn on SSO enforcement for all paid apps.
- Add renewal tracker to Finance calendar.
Day 90
- Benchmark $/active-user vs. market; re-negotiate.
- Run a new heatmap; compare to baseline.
- Publish policy: one tool per job per team.
The $10K SaaS Purge isn’t about cutting to the bone, it’s about trimming the waste so every dollar has a job. In just seven days, you’ve pulled the data, mapped reality, pushed vendors, and locked in real savings. From here forward, your renewal clock is visible, your seat counts are lean, and your budget is back in your hands.

