Systems 01 · 2026
KRDF ProSuite
When a customer pays, the money finds its invoice and its job.
Customer payments land against the right invoice and job — confirmed by hand, by suggestion, or automatically.
- KRDF African Plumbing and Maintenance (Pty) Ltd
- Plumbing & maintenance
- Architecture, Product design, Frontend, Backend, Payroll
- In build — phased delivery
The situation
The owner wanted his own business software, in the spirit of Sage or Krono, but starting small and built around how his team actually works.
The sharpest pain was money. A customer would pay, he'd see it in his FNB app, and then someone had to match it back to the right invoice and the right job by hand.
What I built
Financial core
Customers, quotes, invoices, credit notes, payments in and out, suppliers, expenses, products, bank accounts and a chart of accounts.
Operations
Jobcards, bookings, roster, timesheets and sites, so the work and the money live in the same place.
Payroll
Employees, pay items, pay runs and EMP201 reporting, delivered as the third phase.
A technician side
A phone-first web interface. Technicians see only their assigned jobcards, update status, capture the customer's sign-off, and claim back fuel they paid for themselves with a photo of the receipt.
The live site


Key decisions
Three ways to confirm a payment
He was worried automatic matching could get it wrong, so he keeps the choice: confirm manually, accept a suggested match, or let exact matches confirm themselves.
Roles by invitation
The owner invites people as owner, office or technician. The role lives on the account, not on a login page, and everyone can sign in with an email address or a phone number.
Phased, not big-bang
Financial core first, then operations, then payroll. Each phase is usable on its own before the next one starts.
Where it stands
The frontend for all phases is built and the backend and integrations are being completed. The product name and the blue-and-yellow identity are the client's own.
- Next.js
- TypeScript
- Flask
- PostgreSQL
- Render
- Supabase Auth