Selected work · Systems

Systems in production.

Distribution management

Pharmaceutical wholesale and agency distribution

ASP.NET MVC on SQL Server

Several principal suppliers, hundreds of product agencies, stock that has to be tracked by batch and expiry, and returns settled against credit notes months after the goods went out. A general accounting package with a stock module attached does not survive contact with this trade.

  • Every movement carries a batch and an expiry date: purchase, sale, free issue, customer return and return to supplier alike. Stock takes set the baseline and the system carries it forward.
  • Free-of-charge issues and market returns settle against credit notes quantity by quantity, and whatever remains outstanding against each supplier stays visible until it clears.
  • Receipts are followed from the collector's form through banking to realisation, including returned cheques and re-settlement, with ageing against every customer.
  • Reporting runs across the full transaction history rather than a trimmed window, and is tuned to return inside the limits of shared hosting.
  • Excel import for invoices, goods received notes, bonus issues and returns, each file validated with its own error report.

180,000+ invoices, 530,000+ invoice lines, 3,100+ products and 111 product agencies, in its seventh year of production. Figures from the live customer database.

Workforce management

Sign, fabrication and installation companies

One illuminated sign is quoted by sales, drawn by design, cut and welded in the factory, loaded on a van, installed on site, invoiced by accounts and chased until it is paid. In most firms each of those steps lives in its own book, its own spreadsheet, or its own head.

  • The job number is the thread. Quote, schedule, material issue, tool checkout, invoice and receipt all hang off it, which is why cost, schedule and money line up without anyone reconciling them.
  • Material leaves stores at weighted average cost and is charged to the job as it is issued, and returns credit it back at the same cost. A job's cost is a fact the day it finishes, not an estimate assembled afterwards.
  • Blind stock counts: the counter cannot see the system figure, the approver sees both, and one click posts every difference. Stock cannot go negative, and a document posts in full or not at all.
  • Every tool carries an asset tag and a QR label. Checkout names the holder, the job, the vehicle and the due-back date, and overdue tools are listed by the name of whoever has them rather than as a count.
  • Tool maintenance falls due every so many days or so many checkouts, whichever comes first, with the workshop checklist attached.
  • Warranty terms are held per component, structure, material discoloration and electrical system each with its own period, and certificates print from them rather than being retyped.

Nine modules and seventeen reports on one database.

Consultant management

Consulting firms and donor-funded programmes

A proposal lives or dies on naming the right expert quickly, and the evidence for that decision sits in a pile of CVs in a dozen formats, some of them photographs.

  • Claude reads CVs in PDF, JPG and PNG, scans and photographs included, into a structured data sheet with the photograph, for staff to check and approve. Dates, duplicates and NIC against date of birth are checked on the way in.
  • Paste the evaluation criteria from any terms of reference and the system returns the criteria lettered with their points, a candidate against criteria marks table, and an analysis of the leading candidates.
  • The last fifty searches are kept exactly as they were returned, so any shortlist can be traced back to the criteria that produced it.
  • The AI cost of every CV read and every search run is shown in rupees and dollars, with the remaining provider credit estimated and flagged before it runs out.
  • Eight roles from administrator to report viewer, consultant self-service for profile and consent, and an audit trail recording the values before and after every change.

Supply chain management

Pharmaceutical distribution

Procurement, inventory, warehousing and distribution each held part of the picture and none held all of it, so gaps surfaced only after they had been paid for.

  • Supplier management, purchase orders, multi-warehouse inventory, replenishment, customer orders, delivery and returns on one platform.
  • Approval workflows and audit trails throughout, carrying the traceability that regulated distribution requires.
  • Role-based access, with multi-branch and multi-warehouse operation from a single installation.

In production since 2023, across fifty users and fifty devices.

IoT elevator health monitoring

Lifts are serviced on a fixed schedule or after they fail, and the first anyone knows of a developing fault is usually a stopped car with people in it.

  • Sensors report vibration, temperature, motor condition, door activity, travel cycles and power draw continuously, from lifts across multiple buildings.
  • Configured thresholds and trend analysis raise alerts and open maintenance work orders before the lift stops.
  • Work orders carry through to technician assignment, spare parts, service history and an equipment health score per lift.

Pawn broking

Multi-branch pawn brokers

ASP.NET MVC on SQL Server

Manual registers and spreadsheets produce calculation errors at the counter, reminders that are never sent, and a month end that takes a week.

  • Interest schedules are effective-dated. Each pawn is charged the rate in force on the day it was taken and the full rate history is retained, so a rate change creates no recalculation and no argument.
  • Interest, service charge and stamp fees are calculated at the counter, with the stamp fee rate administrator-controlled and tracked per receipt.
  • Three-stage reminder letters print in bulk, and every print is logged with its date, so the firm can show exactly when a customer was notified.
  • Customer rating derived from repayment behaviour, to support lending decisions at the counter.
  • Each branch runs on its own database with its own configuration, from one codebase.

Patient management

Single-doctor clinical practice

Clinic software is built and priced for hospital networks, then sold to single practices with the unused modules switched off. The tenant switching and multi-practice billing stay, and so does the training burden.

  • The last four prescriptions sit side by side, so a change in dosage or medicine is obvious without reading back through the history.
  • Medicine entry autocompletes from the practice's own prior prescriptions rather than a generic drug list.
  • A running summary shows how a patient's recorded findings have moved across recent visits, without opening each consultation.
  • Referral letters are templated per specialty, with patient name, age and consultation date filled in, edited in rich text and kept on the patient's record for reuse.
  • A doctor practising at more than one hospital picks the location at sign-in, and the system holds it for the session instead of asking again.
  • Credentials are never stored in the clear, a strict content security policy is set, and every sign-in and record change is written to an audit log.

Tender and bid tracking

Tenders are lost to missed deadlines and unowned tasks at least as often as they are lost on price.

  • The bid/no-bid decision is an explicit gate with its own approval, rather than a conversation that happens somewhere between receiving the documents and starting the costing.
  • Opportunity registration, document management, costing, internal review and submission tracking, through to evaluation, award and contract handover.
  • Deadline and milestone alerts, with responsibility assigned per task and a full audit trail.

Inventory control

Smaller stock operations

Spreadsheets and paper registers, with receipts and issues written in two different books and never netted off.

  • Goods received and goods issue notes adjust balances on save, and the system will not allow an issue larger than the quantity actually on hand.
  • Deleting a goods received note, issue note or invoice reverses its effect on stock rather than leaving the balance adrift.
  • Re-order levels per item, with items running low flagged and counted on the dashboard.
  • Print-ready A4 invoices, goods received notes and issue notes carrying the company's details and signature lines for both parties.

Relationship management

Contact history lives across inboxes, phones and memory, so follow-up happens when somebody remembers rather than when it is due.

  • One record per person, carrying relationships and associations alongside the full history of contact.
  • Communications, meetings, appointments and follow-ups tracked against that record, with reminders.
  • Relationship strength and status tracked over time, with reporting across the network.