The Problem
Pharmaceutical licensing researchers identifying market opportunities face a fragmented data problem. Drug approval data exists, Health Canada and the US FDA both publish it, but it lives in separate systems, structured differently, with no cross-market comparison available out of the box. Determining whether an active ingredient approved in one jurisdiction represents a licensing opportunity in another requires significant manual effort.
Drugmole eliminates that manual layer. It pulls approval data from both federal APIs, normalises it into a consistent schema, and surfaces it through a searchable interface that lets researchers compare approval status by active ingredient, dosage, and route of administration across the Canadian and US markets simultaneously.
Architecture
Gateway Layer
The core engineering challenge was not fetching government API data; it was making that data usable. Health Canada and the FDA structure their data differently, use different taxonomies, and return it at different rates. Each country has a dedicated gateway responsible for normalising its data into a shared internal schema. That architecture is designed to be extensible: adding a new market requires building a new normalisation pattern, not rearchitecting the system. Additional countries are planned as the platform matures.
Performance and Batching
Government APIs impose rate constraints that make naive sequential fetching impractical at scale. A custom batching utility was built alongside a findBestConcurrency function that empirically tests different levels of parallelism to identify the optimal batch size for resolving promise groups against each API. Total fetch time was reduced to under half the original baseline, a meaningful improvement given the volume of data the platform needs to keep current.
Stack
The frontend is a TypeScript React application communicating with an Express backend via a REST API, with no framework layer between them. Prisma handles the database layer. The full stack is containerised with Docker Compose; Axios handles HTTP fetching, Pino provides structured logging, and Jest covers unit testing. Frontend and backend live in separate repositories with a clean API boundary, a deliberate decision to keep concerns isolated and each side independently deployable.
Product and Design
The primary interface is a searchable data table. Users query by active ingredient and view approval status, available dosages, and routes of administration side-by-side across both markets. Where an ingredient is approved in one jurisdiction but not the other, that gap is visually surfaced. The asymmetry is the licensing signal the platform exists to provide.
The branding, visual identity, and UI were designed from scratch alongside the development work. The design had to feel credible to a professional pharmaceutical audience while keeping the data interface clean and scannable at the density the product requires.
Drugmole is a collaborative project, built in partnership with developer Pedro Nestor.
Status
Drugmole is in active development and approaching launch. Canada and the United States are live in the current build, with the gateway architecture designed to accommodate additional markets without structural changes to the core system.
A full case study, including outcomes, user feedback, and product iteration, will follow after launch.