Overview
Shared
Dashboards that change with who is looking, plus the organisation directory and reporting.
- A different dashboard per stakeholder and department
- Analytics by month or explicit date range
- Directory of every organisation and person
From the moment someone asks for an item to the moment the supplier is paid and the paperwork is filed — one system, one trail, no spreadsheets.
One pipeline, eight stages
Running purchasing for 17 organisations across the Drug International group




Every procurement team starts with email and a shared sheet. It works until someone asks who approved a price, or where an order actually is.
Every stage has one owner and one page. Each hands off to the next with a notification, and each writes to a history table on the way through.
A three-step wizard with a live preview. Each line carries its own item, unit of measure and quantity — and each is quoted and ordered separately.
A requisition is a container. Quotation, selection, ordering and delivery all happen per line. One requisition with five items can generate five quotation rounds, split across three vendors, and produce three purchase orders that arrive on different days — and the requisition tracks all of it.
Every page is a database row with its own permission, so what a person sees is a decision an administrator makes — not something baked into a release.
Shared
Dashboards that change with who is looking, plus the organisation directory and reporting.
Procurement department
Requisition through to receiving — approvals, competitive quotation rounds, purchase orders and warehouse receipt.
Finance department
The multi-stage payment chain: bill, authorise, pay, acknowledge, close — four people, each checking the step before.
Procurement department
Warehouse stock and the hand-off that sends it on to a client site.
Vendor
A self-service supplier portal: quote, ship, invoice, get paid, close the file.
Super Admin
Master data, users, roles and the Control Unit where page permissions are edited.
What a person sees depends entirely on which side they are on — and the sides are kept apart on purpose.
ATI Limited staff
Three departments with three jobs. Procurement runs the goods. Finance runs the money. Administration runs the system and reports on both.
Procurement runs the goods. Finance runs the money. Administration runs the system and reports on both.
Not a policy — a property of the system. It is enforced in the data the API returns, in every email template, and in every generated PDF.
Goods never travel vendor-to-client directly. They pass through an ATI warehouse — which is what keeps the two sides apart.
Approval, execution and record-keeping are held by different people by design, and the system will not let a step be skipped.
There is no hardcoded list of which role sees which page. Every page is a row, every grant is a row, and administrators edit them in the Control Unit. Add a page, grant it, and it appears in the sidebar — no release required.
Three finance pages belong to exactly one role each and are revoked from everyone else on every seed run. The person who authorises a payment is never the person who executes it.
Records move through statuses rather than disappearing. Four history tables, change logs on master data, a tax audit trail and a system-wide audit log across eight categories.
Even the superuser is denied client-only and vendor-only pages, cannot open Inventory, and cannot edit its own permission matrix. System roles and departments cannot be renamed or deleted.
Status changes run inside serializable transactions, so a partial pipeline move is impossible. Selecting a winning quote sets the winner, rejects the others and prices the item in one write.
No self-service sign-up. Every organisation and user is created by an administrator and must pass a six-digit email code — hashed, constant-time compared, valid four minutes, five attempts.
A pipeline this long only works if the hand-offs are loud. Every stage notifies the next person and links them straight to the page where they act.
Twelve events pushed over a WebSocket, prioritised and deep-linked to the page where you act. Recipients resolve by role at send time, so a new team member starts receiving immediately.
Every requisition, item, purchase order and bill has a timeline showing each step, who took it and when.
Server state is cached and revalidated, so a list updates the moment you submit a form — no manual refresh.
Purchase orders, bills and reports render to PDF in the browser; list pages export to XLSX. Export is one of the four permission flags, so it is granted per role.
Two independently deployed applications. One build of the web client serves all four environments, resolving its API from the address it was loaded from.
Procufy is in daily use across the Drug International group. If your organisation is part of it, your administrator can issue you an account.