TallyUp: SaaS License Management and Offboarding Platform
As companies grow, SaaS sprawl grows with them. Tools get added by different teams, finance sees only the invoices, and access often stays active long after someone changes roles or leaves the company.
I worked with former colleagues on TallyUp, a Django-based platform that centralizes SaaS spend, finds unused licenses, and automates offboarding.
what TallyUp does
TallyUp had three core jobs.
visibility
The dashboard brought SaaS data into one place:
- total monthly cost
- per-service breakdowns
- inactive users based on activity data
- estimated savings from removals
- multi-currency reporting
Instead of piecing the picture together from invoices and admin panels, teams could see where money was going and where waste was obvious.
syncing
The platform pulled real data from external services instead of relying on manual spreadsheets:
- Google Workspace via OAuth2 and the Admin API
- service-specific plugins for user and activity data
- recurring sync jobs to keep the data fresh
That made the dashboard useful because it reflected actual accounts, not a manually maintained approximation.
offboarding
TallyUp also handled the action that usually creates the most operational pain:
- bulk deprovisioning across services
- selective removals for one service at a time
- per-item status tracking
- audit logs for follow-up and compliance
Removing one departing employee no longer meant logging into a dozen separate tools.
architecture
The product was built with Django and PostgreSQL in a multi-tenant setup, so each organization had isolated data and configuration.
The important architectural decision was the plugin system. Each service integration followed the same basic contract: authenticate, fetch users, fetch metadata, and remove users. That made it possible to support services with very different integration styles behind one interface.
The stack included:
- Django, PostgreSQL, and Gunicorn
- Google Admin API and OAuth2 flows
- Selenium for services that lacked usable APIs
- Stripe for billing
- audit logging and role-based access control
For long-running tasks such as large sync jobs or bulk removals, TallyUp used Celery workers. The web request returned immediately, work continued in the background, and users could follow progress later. That kept the interface responsive even when a job involved hundreds of external API calls.
why it was useful
The value was straightforward:
- cost control by exposing inactive licenses
- faster offboarding through batch operations
- better security by removing forgotten accounts sooner
- clear audit trails for IT and compliance teams
This was a good example of a product where the best feature was not a flashy interaction. It was joining scattered operational steps into one workflow people could actually use.