Making a pharmaceutical artwork platform fast enough to be used
Packaging artwork for a regulated drug product passes through a chain of reviewers, and every
version has to be retained and reconstructible. Karomi’s AMS platform manages that chain.
Over two years I worked on three parts of it: the transfer pipeline that moves assets to the
cloud, the reporting engine that had become unusable, and the approval tooling on top.
The constraints
Pharmaceutical clients are audited. That sets the ground rules before any code is written:
nothing in the approval history can be silently edited, every asset movement has to be logged,
data has to be encrypted in transit and at rest, and the system has to be able to answer
“who approved this, when, and what exactly did they see” years after the fact.
The second constraint was less obvious but shaped more of the work: print-resolution artwork
files are large, and the platform was originally built as though they were not.
Secure asset transfer to cloud storage
Assets lived on client on-premises servers and needed to reach cloud storage. I designed and
built the transfer pipeline — encryption in transit and at rest, integrity verification,
and an audit log of every movement, which is the part auditors actually ask about. The
pipeline met 100% compliance with the client data regulations it was assessed against.
The reporting engine
Reports were slow enough that stakeholders had stopped running them and were collating the
numbers by hand in spreadsheets instead. That is the real failure — not the latency, but
the workaround it had produced.
I profiled the actual execution plans rather than guessing, found the dominant costs in the
query layer, and reworked them alongside how data was handled server-side. Report loading and
compilation ended up 2.5× faster. I then worked directly with product managers to
define the KPIs that mattered and built 6+ custom reports around them, with output
schemas that could be tailored as the business changed. Manual data collation dropped by
80%.
Approval tooling
On top of that I implemented and shipped an Approved Artwork Generator and a
Viewer Submit component — the two places where the manual workflow was thickest.
Active user engagement rose 88% and manual processing workflows fell 72%.
The platform migration
Running underneath all of this was the move from the legacy V5/V6 architecture to V7. Clients
were live on the old version throughout, so the migration had to be incremental and reversible:
schema mapping with verification either side, a compatibility layer so clients could move at
their own pace, a rehearsal against restored production data, and a documented rollback at
every step. Multi-factor authentication was built on top once V7 was stable.
- 2.5×
- faster report loading and compilation
- 40%
- reduction in API response times
- 80%
- less manual data collation
- 88%
- increase in active user engagement
- 72%
- fewer manual processing steps
- 100%
- compliance on client data regulations
What I would do differently
The reporting work was reactive — it happened because the reports had already become
unusable. With instrumentation in place from the start, the degradation would have been
visible as a trend rather than as a complaint, and the fix would have been a series of small
ones instead of a project. That is the habit I took from it.
Built with .NET Core · C# · SQL Server · React.js · Microsoft Azure