Bottleneck detection.
The steps where approvals age — by role, by person, by record type. Approvals are rarely rejected; they sit. And a queue nobody measures is a queue nobody fixes.
The delegation of authority either lives in the system, or it lives in a document nobody reads.
Last updated
Zepth Core module
Requester ≠ approver ≠ recorder
segregation of duties, enforced by configuration rather than by vigilance
Internal-control doctrine
Collapse any two of those three roles into one pair of hands and you have built the fraud scheme yourself, in your own policy. Enforced structurally, it cannot be collapsed by someone being helpful on a Friday.
Who, what, when, why
the four things an auditor samples from an approval — requester, chain, timestamps, and the evidence behind the decision
Audit practice
Reproducible years later, by someone who was not there. That is the actual test, and a screenshot of an email thread does not pass it.
The workflow engine is how an organisation’s real approval rules — who may approve what, up to how much, in what order — become enforced behaviour rather than a policy document.
Visual, no-code configuration is the point of it. When the delegation of authority changes, the system changes that afternoon, by the person who owns the policy — not in a development project six months from now, by someone who does not.
Almost every organisation has a delegation-of-authority matrix. A document, approved, circulated, and — this is the important part — enforced by nothing.
So the matrix says one thing and the system enforces another, or enforces nothing at all. Purchase orders route by whoever is in the workflow rather than by value. A disposal below net book value gets the same approval as one above it. A budget transfer between departments takes the path that a single department’s transfers take. None of this is anybody’s fault, and all of it is invisible until an auditor arrives and asks for the evidence that the matrix was applied.
The engine’s only job is to close that gap: make the documented matrix the operating reality, and keep it that way when the matrix changes. Because it will change, and the second-order failure is worse than the first — an organisation that has to raise a development ticket to change an approval threshold will simply stop changing them, and the matrix will drift away from the business quietly, for years.
Amount thresholds, and the conditions that escalate regardless of amount. Route by value, which is the easy part. But the useful part is the conditional branch: a disposal below net book value, a sale to a related party, a transfer that crosses departments, a purchase from a vendor with an expired trade licence. These escalate whatever the amount, because the amount was never the risk. A system that can only route on value is a system that will approve the thing you were most worried about, correctly, at the lowest level.
Sequential and parallel are different tools, and the difference is who is waiting. Sequential approvals stack delay: each approver waits for the last. Parallel approvals collect opinions at once. Most organisations default to sequential everywhere because it feels more controlled, and then wonder why a purchase order takes eleven days. Use sequential when a later approver genuinely needs the earlier decision. Use parallel when they do not — which is more often than the org chart suggests.
Segregation of duties, enforced structurally. Requester, approver and recorder as three different people, enforced by configuration rather than by vigilance. Vigilance fails on a Friday afternoon when someone is being helpful and the person who should approve it is on leave. Configuration does not, and that is the entire argument for putting it in the system rather than in a policy.
SLAs, escalation, and delegation-on-absence — because the real failure is silence. An approval does not usually get rejected. It sits. The approver is on leave, or in a meeting, or has four hundred emails, and the request ages in a queue that nobody is measuring. An engine that escalates on an SLA and delegates on absence turns that silence into a decision — which is a governance improvement disguised as a convenience feature.
And the workflow rules are themselves governed. Who changed the threshold, when, and why. Versioned, approved, auditable. Otherwise you have solved policy–system drift by creating a system whose rules can be quietly edited by whoever has admin rights — which is the same problem, wearing a better costume.
One engine, behind every approval in Core, Vector and Edge — purchase orders, budget transfers, capital proposals, disposals, NCR dispositions. Which means one audit trail, in one shape, rather than five subsystems each with their own idea of what an approval record looks like.
The visual builder means the delegation of authority is configured by the people who own it. Bottlenecks are measured, not felt. And every approval carries its chain, its timestamps and the evidence behind it — reproducible years later by somebody who was not there, which is the only test an auditor actually applies.
The documented delegation of authority becomes the operating reality — and stays that way when it changes.
Segregation of duties is enforced by configuration rather than by vigilance, which fails on Friday afternoons.
Approvals that would have aged silently escalate on an SLA and delegate on absence.
Every approval is reproducible years later, with its chain, timestamps and evidence — which is what an auditor actually samples.
The delegation of authority configured by the people who own it, changing the same afternoon rather than in a development cycle.
By value — and by the conditions that escalate regardless of value, which is where the actual risk lives.
Sequential where a later approver needs the earlier decision. Parallel where they do not, which is more often than the org chart suggests.
Requester, approver and recorder as three roles, enforced by configuration rather than by somebody remembering.
Because approvals are rarely rejected. They sit — and silence is the failure mode nobody measures.
Who changed which threshold, when and why. An engine with silently editable rules has recreated policy–system drift internally.
Not the one in the document — the one people are using. These differ, and the difference is the most interesting thing you will learn all week.
Thresholds, roles, sequences, conditional branches. By the person who owns the policy, not by a developer working from a ticket that summarised it.
The below-NBV disposal. The cross-department transfer. The approver on leave. Workflows fail at their edges, and the edges are where the risk was.
Purchase orders, transfers, capital proposals, disposals, dispositions. One engine, consistent trails.
Where do approvals age? And who changed which threshold, when, and why — because an engine whose rules can be edited silently has recreated the problem it was built to solve.
The steps where approvals age — by role, by person, by record type. Approvals are rarely rejected; they sit. And a queue nobody measures is a queue nobody fixes.
A threshold that is systematically avoided — orders split just beneath it, disposals bundled just under it — is not being complied with. It is being managed around, and the pattern says so long before anybody admits it.
“Who approved this, and under what authority?” Answered from the trail, years later, to someone who was not there. Which is precisely the question, asked in precisely those circumstances.
The engineer’s judgment stays in charge; the AI removes the latency and the blind spots.
Approval cycle times by step, role and record type — with the bottlenecks named rather than felt. Thresholds that are being routed around, which is the signal that a rule has stopped being a rule. Every approval with its requester, chain, timestamps and evidence, reproducible years later. And the version history of the rules themselves: who changed which threshold, when, and why.
The document that states who may approve what, up to what value, and under what conditions. Almost every organisation has one, and in most of them it is enforced by nothing — so the matrix says one thing and the system does another. The engine’s only job is to close that gap, and to keep it closed when the matrix changes, which it will.
Read the full answerSequential when a later approver genuinely needs the earlier decision. Parallel when they do not — which is more often than the org chart implies. Most organisations default to sequential everywhere because it feels more controlled, and then discover that a purchase order takes eleven days for reasons nobody chose.
Structurally, by configuration: requester, approver and recorder as three different people, and the system will not let them be the same. The alternative is vigilance, and vigilance fails on a Friday afternoon when the approver is on leave and somebody is being helpful. Collapse any two of those roles and you have built the fraud scheme yourself, in your own policy.
The requester, the full approval chain, timestamps at every step, the authority under which each approval was given, and the evidence behind the decision. The test is not whether it looks complete — it is whether somebody who was not there can reproduce the decision years later. A screenshot of an email thread does not pass that test.
They are approved and versioned like anything else: who changed which threshold, when, and why. This is easy to overlook and it matters enormously — an approval engine whose rules can be edited quietly by anyone with admin rights has not solved policy–system drift. It has relocated it somewhere with less light.
Related modules
Related answers
Zepth is the construction project delivery platform — it runs construction, procurement and asset management on one record, and does the work: reading the drawings, reviewing the submittals, matching the invoices and flagging the risks, with a human sign-off on anything consequential.
A short, tailored walkthrough on your real workflow — no generic demo.