Software that follows the process, until the process is wrong
A school in Ghaziabad runs fee collection through a combination of a bank challan portal and a ledger that the accounts clerk maintains in a spreadsheet. When a parent pays late, the clerk applies a flat Rs. 50 charge manually, sends a WhatsApp message to the class teacher, and the class teacher forwards it to the parent. This takes about four minutes per late payment. There are around 300 late payments a month.
The off-the-shelf school ERP they were evaluating had a fee module. It handled late fees — but as a percentage of the outstanding amount, configured once, applied automatically. It had no concept of "class teacher sends a message." It had automated SMS, billed per message, sent from a generic sender ID.
We built their fee module to match the spreadsheet process: flat charge, manual trigger, message routed through the class teacher's WhatsApp Business number. The accounts clerk sees a button labelled "send late fee notice to class teacher." The class teacher sees a pre-filled message with the student's name and the amount. They review it, edit it if the parent has already called, and send it. Two screens, two people, one round-trip.
This is the shape of most of our ERP and CRM work. An organisation has a process that works — not eleg, not optimised, but working, in the sense that the people doing it know what to do and the people receiving it understand what's happening. The software should hold that process, not replace it with something that looks cleaner in a demo.
Where we push back is when the existing process costs more than it saves.
The same school had a process for attendance reconciliation. The class teacher marked attendance on a paper sheet, submitted it to the office clerk at the end of the day, and the clerk entered it into the system — the same system the class teacher could see on their phone. We asked why the teacher didn't enter it directly. "They might make a mistake," was the answer.
We pushed back. The clerk re-entry added a full day of delay before attendance was visible to parents. It introduced its own transcription errors — we found 12 cases in a single month where the paper sheet and the system didn't match. And the safeguard the school wanted, a second pair of eyes, could be delivered by a daily exception report that flags changes made after 10 a.m. or edits that touched more than three records in one class.
We built it that way. The teacher enters attendance. The clerk gets an exception report at 11 a.m. and investigates anything that looks wrong. The paper sheet is gone.
The distinction we try to hold is: follow the process where it encodes real knowledge about how the work should flow. Push back where the process is really a workaround for a fear the software can address directly.
Another example. A manufacturer in Noida had a purchase approval workflow where the plant manager had to sign off on every PO above Rs. 10,000. We were asked to build this into their custom ERP. We asked how often the plant manager rejected a PO. In two years, never. We asked what they did instead. They negotiated the price before the PO was raised — that's where the real approval happened, in a conversation between the purchase manager and the plant manager, before anything hit the system.
We built the approval step as an optional flag on the PO. The purchase manager can route it to the plant manager for sign-off, but the default is to skip it. The audit log records who raised the PO and who paid the invoice. The safeguard the school-style approval was supposed to provide is delivered by the purchase order itself, which the plant manager can see at any time.
The rule we keep is: if we can't explain why a step exists, we build it as configurable and off by default. If we can explain it — the class teacher's judgement about whether a parent already knows, the accounts clerk's understanding of which late fees get waived — we build it into the flow and don't make it optional.
The school's late fee process is still running. The class teacher still edits the message sometimes. The flat Rs. 50 charge still applies. The software didn't try to make it prettier than it is.