Building ERPSav: Finding the SaaS Subscriptions Nobody Owns — What Worked, What Broke
Every growing business has a version of the same spreadsheet problem. A new hire asks for a design tool, a sales lead adds a data enrichment seat, and a department renews a project board nobody opened since spring. None of those decisions looks expensive on its own. Together they become one of the quietest leaks in an operating budget — and finding them turned out to be a data-joining problem,…
Every growing business faces the spreadsheet problem of multiple software subscriptions, each with growing costs. New hires request tools, sales teams add seats, and teams renew subscriptions that may not be used. This can lead to hidden leaks in the budget. The problem stems from two sets of data that rarely communicate with each other: invoices from accounting and usage data from each app.
The challenge lies in stitching together these datasets to get a full picture of what is being spent on software. Invoices show vendor name, amount, renewal date, and sometimes seat count. Usage data show who logged in, when, and if the paid seat belongs to an active employee. Licenses are purchased based on headcount at a given time, which changes over time, and renewals arrive on different dates and are managed by different managers, making it difficult to get a complete view of the subscriptions owned by the company.
To detect waste, the system runs a series of rule-based checks. The first check matches each subscription to an active owner and active user list. If a tool has many paid seats but few active logins, this is a gap that should be addressed when negotiating renewal terms. An ownerless subscription is itself a finding. The second check looks for overlap among subscriptions.
Two subscriptions in the same category can be legitimate if different teams genuinely need both, so it's important to look at overlapping active users doing the same work in both. The third check compares renewal terms to actual usage. An annual discount only helps if the seats are used; otherwise, a shorter term or smaller tier might have been less expensive.
The audit system, called ERPSav, runs these rules-based checks to find waste in SaaS subscriptions. Three key findings emerged during the development of ERPSav. First, vendor names are not reliable keys for matching subscriptions. The same supplier may appear under different names, such as legal names, product names, billing descriptors, or acquired company names.
Naive string matching can split one subscription into multiple, making it important to normalize the data and use a human-reviewed alias table. Second, free trials are often started with a company card but become paid subscriptions without a purchase decision recorded anywhere. Any rule that assumes a human approved every charge will miss these types of subscriptions.
Third, headcount is a moving target, and a seat check run once can quickly become outdated. The checks stay accurate when they're run against a current roster and when leavers, role changes, and contractor end dates are automatically fed back into the seat counts.
Several factors contribute to false positives, making it essential to include evidence attached to every flag. Shared accounts, service accounts, and seasonal seats can all look like waste to a simple seat-versus-login rule. Every flag needs the supporting evidence, such as the invoice, seats, and logins, so a finance lead can quickly assess and dismiss false positives.
To build an effective subscription detection system, it's important to treat each check as a small, explainable rule rather than one opaque score. ERPSav now runs 15 rule-based recovery engines across nine different types of leaks, including SaaS waste. The lessons learned from these checks can be applied to internal tools by picking the two datasets that are kept separate in the organization - spend and usage, assets and owners, and access and employment - and building a reliable bridge between them.
The findings are often waiting on the other side, and ERPSav can help uncover them. The 14-day free trial includes all modules and requires no credit card.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.