About us

Built around what
goes wrong.

PharmaNex started from a simple observation: most pharmacy software is written for the day everything works. The counter does not have many of those days. The connection drops, the batch is nearly expired, the prescription is a photograph, and the interaction database is down.

What we hold to

Three rules the software keeps.

Silence is not an answer

The failure that costs a patient is not the error message — it is the check that quietly returned nothing and looked like a pass. Every part of the system that can fail to answer says so explicitly, and the clinical reference carries its own limitations with every response it gives.

The physical box is the record

Stock is not a number that goes down. It is batches, each with an expiry and a supplier, and the one that leaves is the one that expires first. When a recall lands, the question is which boxes went out of this door — and the ledger has to be able to answer it.

A person confirms before anything moves

Prescriptions and delivery notes are read by a model into structured lines. Nothing is dispensed or added to stock on the strength of that alone. The model does the typing; a pharmacist does the deciding.

Where it runs

Made for pharmacies in Pakistan.

Amounts are in the pharmacy’s own currency, defaulting to PKR with en-PK grouping. Dates and day-boundaries are Asia/Karachi, so a shift that closes at half past midnight books against the right day — and an owner reviewing a branch from abroad sees the branch’s day, not their own.

Each pharmacy’s data is isolated in the database itself, not in application code, so a query that forgets to filter by tenant returns nothing rather than someone else’s stock.

PKR
Tenant currency, en-PK grouping
Asia/Karachi
Day boundaries and report clocks
Row-level security
Isolation enforced in Postgres
Offline outbox
Sales queue locally and replay

Meet the people behind it.