SaaS Platform

Turning License Management into Infrastructure, Not Overhead

A multi-tenant platform that issues, tracks, and retires software licenses on its own

Delivered engagementMulti-tenant SaaSServerless / AWSPayments IntegrationDevice Entitlement
6+
Core modules covering the license lifecycle end to end
1
Codebase serving every distributor tenant on the platform
0
Manual spreadsheets left in the licensing workflow

The situation

The client sells software licenses to a network of distributors, who in turn provision them down to individual devices and end users. That chain — vendor to distributor to device — had outgrown what manual tracking could safely handle. Licenses were being issued, renewed, and revoked by hand, with pricing rules and expiry dates living in scattered records rather than a system of record. As the distributor network grew, so did the risk: a license that should have expired but didn't, a device entitled to software it never paid for, a purchase that couldn't be reconciled after the fact. The brief was to replace that process with a real platform — one that could stand behind every license it issued, self-service purchasing included, without adding headcount to keep it running.

What we built

A cloud-native license manager that treats a license as a first-class object with a full lifecycle — created, purchased, activated, reviewed, expired — rather than a row in a spreadsheet. It models the client's actual org structure, so permissions and pricing follow the same hierarchy the business already runs on.

Hierarchy-aware licensing

Distributors, sub-tenants, devices, and users are modeled as a real hierarchy, so a license request is evaluated in the context of who's actually asking.

Self-service purchasing

Distributors can request, price, and buy licenses directly, with PayPal handling payment capture and the platform handling everything downstream of it.

Lifecycle automation

Expiry, renewal, and status changes run as background workflows instead of a person remembering to check a date.

Built-in visibility

An analytics layer gives the client a live view of what's licensed, to whom, and for how long — the audit trail the old process never had.

How it's put together

We kept the architecture serverless end to end, so the platform scales with usage rather than with provisioned capacity — a good fit for a licensing system where load tracks business activity, not a fixed baseline.

Frontend

A modern React/Next.js console for distributors and internal teams, deployed through AWS Amplify.

Backend

Domain logic split into focused AWS Lambda functions — licensing, users, devices, distributors, pricing — behind an API Gateway.

Data

DynamoDB as the system of record, chosen for predictable performance as tenants and license volume grow.

Identity

Cognito-backed authentication with a custom authorizer layer, so access follows the org hierarchy rather than a flat role list.

Infrastructure

The entire stack is defined as AWS CDK, so a new tenant environment is a deployment, not a project.

Outcome

The platform now runs the client's licensing operation directly — distributors purchase and manage licenses themselves, entitlements stay in sync with what was actually paid for, and the manual reconciliation work that used to eat internal hours has largely gone away.

A licensing process that used to depend on someone remembering to check a date now runs itself — and the client can see, at any moment, exactly what’s licensed and to whom.
Delivery Summary

Client identity withheld at their request. Details reflect the platform's architecture and scope as delivered.

Facing something similar?
Let’s talk about what this would look like for you.