perfectdesign.

Business systems

Workflow automation

Most business processes are not really in a system. They live in a spreadsheet, a group chat and somebody's memory, and they work right up until the person holding them is on leave.

In short

Workflow automation turns one repeated process into an explicit rule: a defined event, the conditions that qualify it, an authorised action, and a record that proves what happened. It is worth doing when the process is observable, repeated and reasonably stable, and worth delaying when nobody can yet say who owns it or what the exceptions are. The hard part is never the software. It is deciding what should happen when the normal path does not.

What you get

What is actually delivered

A mapped process

The steps as they actually run, the records that change, the points of judgement and the exceptions, written down before a rule is designed.

Explicit trigger and conditions

The event, the conditions that qualify an instance, the authorised action and the record written afterwards, including the negative cases.

Approval and override rules

Who approves, who corrects, who overrides and who escalates, with each decision recorded against an author and a time.

Permission model

Roles defined by what they may read, change and authorise, kept separate from the question of who can sign in.

Exception queue with an owner

Business exceptions and technical failures routed to a named person with enough evidence to investigate, instead of into a log nobody reads.

Safe repeats and reconciliation

Duplicate events producing one outcome, a deliberate retry policy, and a check that the destination holds what you intended.

Integration built on checked access

Connections to the systems whose permissions, data quality and terms were confirmed first, with the direction of each flow agreed.

Acceptance tests and a monitoring view

The agreed path and its exceptions exercised before release, plus the review screen where stalled and unowned cases surface.

Proof

Work you can inspect

PITC Training, Sentrix Auto, iCAUR Singapore and Tournamy are real client work, live on the clients’ own domains. Aplomb, Lintel and Firstlight are concept prototypes we built ourselves: Aplomb for the documents and approvals that move an accounting firm’s work along, Lintel for extra work that waits for the client’s approval, and Firstlight for the documents that follow a delivery. No performance or business outcome is claimed.

All our work
PITC Training course registration form, pre-filled with the chosen location, delivery mode and date
Client project

What it shows: Enquiries captured on the site are stored and passed into the client’s CRM without anyone re-typing them.

Sentrix Auto dealer portal sign-in, where authorised dealers register installations and track warranties
Client project

Dealer portal

Sentrix Auto

What it shows: Dealers register each installation in their portal, and it becomes a warranty record customers can check with their phone number and car plate. Shop details dealers update feed the public installer map.

The iCAUR test-drive enquiry form with model, showroom and consent fields
Client project

What it shows: Test-drive enquiries go straight into the tools the sales team already uses, with the visitor’s consent recorded and an email alert for every one.

Tournamy team registration, squad step: jersey number, name and IC fields, flagging two players with the same number
Client project

What it shows: Entries are checked as they are typed and confirmed by their own payment through the client’s Billplz account, with the places left updated on every event.

Monthly document checklist: bank statements and bills to upload, each with a due date, Aplomb concept prototype
Concept prototype

What it shows: The client’s last upload moves the accountant’s job to “Ready to start”. A deliverable the partner signs off goes to the client to approve, which files it and updates the calendar.

Variation order for a kitchen wall beam repair, with site photos, price and extra days to approve, Lintel concept prototype
Concept prototype

Variation approval

Lintel Design & Build

What it shows: Extra work found on site waits for the client’s approval. Once approved, it changes the contract sum, the handover date and the next progress claim.

Invoice with its e-invoice status and proof of delivery attached, in the accounts view, Firstlight concept prototype
Concept prototype

Invoice with proof attached

Firstlight Supply Co.

What it shows: Loading the van issues the invoice and delivery order. Proof of delivery and any credit note attach to the invoice without anyone re-typing them.

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

Price and terms

What it costs and who owns it

Every build is quoted against its scope. These are the terms that apply either way.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Ongoing care

System care from RM 250 a month

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Support

We normally respond within one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Timeline

Normally three to four weeks

A more complex website or business system normally takes three to four weeks, and a larger platform is scheduled against the agreed scope. Prototype timing is separate: you see a working prototype before any deposit.

How we build

React by preference, other languages when needed

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

What happens next

From a message to a working prototype

We build a free working prototype first. It carries no payment obligation, so you can judge the direction before committing.

  1. 1

    Tell us what you need

    Message us on WhatsApp with your business and the pages or features you have in mind. We reply normally within one working day.

  2. 2

    See a free prototype

    We build a working prototype you can click through on your own phone. There is no payment obligation at this stage.

  3. 3

    Approve the scope and quote

    We confirm the pages, features, responsibilities and timeline in writing. The deposit is paid only when you approve the quotation.

  4. 4

    Build, review and launch

    We complete the build with your real content, you review it, and we launch after your final approval.

How it runs

Understand the process, then control one part of it

We scope from the process as it runs today, not from a feature list, and we agree the exceptions before anyone writes a rule.

  1. 01

    Observe the process

    We walk the steps as they happen: who does what, which records change, where judgement is applied, and what currently proves completion.

  2. 02

    Decide what is worth controlling

    Some of the process becomes a rule, some stays with a person, and occasionally the answer is to fix the process and build nothing yet.

  3. 03

    Write the rule and the exceptions together

    Trigger, conditions, authorised action and record, alongside the duplicate, the missing approval and the failed write.

  4. 04

    Check the systems before promising a connection

    Permissions, data quality, ownership and third-party terms are confirmed, because an available API is not the same as a feasible integration.

  5. 05

    Build, test both roles, hand over

    Authorised and unauthorised paths are exercised separately, the exception queue is tested, then the code and accounts are handed to you.

The detail

How we approach workflow automation

The longer explanation, for anyone comparing options or planning the work in detail.

In this section9 sections
  1. 01What you are actually replacing
  2. 02Map the process before you automate it
  3. 03Trigger, conditions, authorised action, record
  4. 04A worked example
  5. 05Exceptions are the system, not the edge
  6. 06Approvals, permissions and the audit trail
  7. 07Which systems, and whether they can genuinely talk
  8. 08How you will know it works
  9. 09What to bring

What you are actually replacing

The spreadsheet and the group chat are not foolish choices. They are fast, they cost nothing and they bend to whatever happened today. What they cannot do is tell you who changed a figure, prove an approval took place, stop the same job being started twice, or keep working when the person who understands the file is away.

So the useful question is not whether to automate. It is which parts of a process genuinely need to be controlled and which parts are fine as they are. A workflow worth building has a recognisable start, a recognisable end, an owner, an outcome that repeats, and at least one point where getting it wrong costs real money or real trust.

Column chart: The cheque is finishing (2020: 1.84, 2021: 1.48, 2022: 1.41, 2023: 1.22, 2024: 1.17, 2025: 0.92)

The cheque is finishing

Published statistic. Under one cheque per person per year, and falling by a fifth annually. Any process that still assumes a cheque in the post is quietly adding a week to getting paid.

Source: Bank Negara Malaysia: Annual Report 2025 and Payment Statistics T1. Reviewed .

Read the graphic as text
  • 2020: 1.84.
  • 2021: 1.48.
  • 2022: 1.41.
  • 2023: 1.22.
  • 2024: 1.17.
  • 2025: 0.92. 31.4m total

Chart scale: Cheques issued per Malaysian, per year.

Download this infographic (SVG)

Map the process before you automate it

Watch the process as it actually runs before writing a rule about it. Who performs each step. Which record changes, and where that record lives. Where a person applies judgement, and what they are weighing when they do. Which exceptions came up, and how often. What currently proves the work was finished.

That last one catches people out. In most manual processes the proof of completion is a message saying it is done. If you cannot say what would count as evidence today, the automation will not produce it either, and you will end up trusting the new system exactly as much as you trusted the chat thread.

Frequent work that is highly variable, has no clear owner, or runs on data nobody trusts is not ready. That is not a refusal, it is a sequence. Clarify the process, then decide whether a rule can carry part of it.

Trigger, conditions, authorised action, record

Every workflow has the same shape underneath. An event happens. Conditions decide whether this instance qualifies. An authorised action runs. A record is written that proves it did.

Take a service enquiry as a teaching example. The enquiry arriving is the event, but it is not yet a job. It becomes one when the required fields are present and somebody with the right role has marked it ready for review. Only then does the automation create the linked operational task and write the decision to the record. Odoo documents the same pattern for its own automation rules, where triggers and optional conditions decide whether predefined actions run, and notes that when several actions run in sequence the order matters because a later action may read data an earlier one changed. That is one product's documented behaviour rather than a universal rule, but the ordering trap is general.

Write the negative cases at the same time as the happy path. Incomplete input is flagged rather than processed. An unauthorised user is refused rather than quietly allowed through. A duplicate submission does not create a second operational record, because two jobs from one enquiry is the sort of error a customer discovers before you do.

Step-by-step diagram: The shape under every automated rule (Event, Conditions, Authorised action, Record)

The shape under every automated rule

Editorial framework. Write the negative cases beside the happy path, or the rule only knows how to succeed.

Basis: IBM: What is workflow automation?. Reviewed .

Read the graphic as text
  • Event. Something happened that could start the rule
  • Conditions. Whether this instance actually qualifies
  • Authorised action. Run only by a role permitted to run it
  • Record. Evidence that proves it ran, and when
Download this infographic (SVG)

A worked example

The company, roles, statuses and systems below are fictional teaching assumptions. Any numeric target stays as to agree until you set one, and the acceptance evidence describes tests to run rather than tests already passed.

Illustrative example: from service enquiry to a controlled operational handoff
  • Observe the manual intake

    Assumed actor
    Service coordinator
    Proposed system response
    Record the enquiry and assign it a unique reference
    Exception
    Required details are missing, or the request is a duplicate
    Acceptance evidence to collect
    Test that incomplete input is flagged and that a duplicate does not create a second operational record
  • Define trigger and conditions

    Assumed actor
    Process owner
    Proposed system response
    When the status becomes ready for review, verify the required fields and queue the approval
    Exception
    The status changes without the required evidence
    Acceptance evidence to collect
    Test that the action stays blocked and that the missing evidence is visible to whoever has to fix it
  • Authorised action

    Assumed actor
    Assumed approver
    Proposed system response
    Approve the handoff and create the linked operational task
    Exception
    The user lacks permission, or the request is rejected
    Acceptance evidence to collect
    Test authorised and unauthorised roles separately, and confirm the decision is recorded with its author and time
  • Retry and reconciliation

    Assumed actor
    System operator
    Proposed system response
    After a failed handoff, follow the agreed retry policy and compare the intended task with the destination record
    Exception
    Repeated delivery, a timeout, or records that do not match
    Acceptance evidence to collect
    Test that repeated input does not create an extra task, and that an unresolved mismatch lands in an owned queue
  • Monitoring

    Assumed actor
    Process owner
    Proposed system response
    Review completion and exception evidence on an agreed cadence
    Exception
    A case is stalled, or has no owner
    Acceptance evidence to collect
    Test that the case appears in the agreed review view and can be reassigned

Exceptions are the system, not the edge

Two different things get called failure and they need separate handling. A business exception is a legitimate outcome you did not want: a missing approval, a customer who withdraws, a request outside policy. A technical failure is a system that did not answer: a timeout, a rejected write, an event delivered twice.

Stripe's webhook documentation is a useful attributed example of why the technical side needs designing rather than assuming. It describes asynchronous delivery, events that are not guaranteed to arrive in order, duplicate events, retries, and the advice to acknowledge quickly and do the slower work afterwards. Those are that product's documented behaviours, not universal laws, but any integration receiving events from another system has to answer the same questions.

The controls that follow are few and none of them are optional. Make repeated input safe, so the same event arriving twice produces one outcome. Decide the retry policy deliberately, including when to stop trying. Reconcile what you intended against what the destination actually holds. And when something cannot be resolved, put it in front of a named person with enough evidence to investigate. A failure that disappears into a log is not handled, it is hidden.

Approvals, permissions and the audit trail

Approval, correction, override and escalation are four separate human actions and each needs its own owner. Who may approve a step. Who may correct data after the fact. Who may override a blocked action, and what that override requires. Who is told when a case has waited too long.

Each of those decisions should leave a record with an author, a time, and a reason where a reason matters. That is what turns an automated process into something you can defend in a dispute, and it is the feature people most regret leaving out, because it cannot be reconstructed afterwards.

Permission is also not the same thing as signing in. Authentication proves who somebody is; permission decides which records they may read, which fields they may change and which actions they may authorise. Both have to be designed, and the second is where the interesting mistakes live. Accounts and portals covers the sign-in and role layer underneath a workflow.

Numbered diagram: Four human acts, four separate owners (Approve, Correct, Override, Escalate)

Four human acts, four separate owners

Editorial framework. Each act needs an author, a time and a reason, because none can be reconstructed later.

Basis: IBM: What is business process automation?. Reviewed .

Read the graphic as text
  • Approve. Who may let a blocked step proceed
  • Correct. Who may change data after the fact
  • Override. Who may bypass a rule, and on what basis
  • Escalate. Who is told when a case has waited too long
Download this infographic (SVG)

Which systems, and whether they can genuinely talk

Bring this list to scoping: the source system, the destination system, the identifier that links a record across both, the fields the rule reads, which system is the source of truth when they disagree, the read and write permissions available, the role that approves, and who maintains the whole thing afterwards.

An API existing does not establish feasibility. What matters is whether the permissions you need can actually be granted, whether the data is clean enough for a rule to trust, whether the supplier's terms allow what you intend, and who is accountable when the other system changes. We check that before promising a connection rather than after. That work is covered on CRM and integrations, and the screens your team watches while the workflow runs are covered on admin dashboards.

Numbered diagram: The e-Invoice mandate is already fully live

The e-Invoice mandate is already fully live

Published statistic. Every phase has passed. If a system issues invoices, e-Invoice is not an upcoming project, it is a current obligation with a turnover threshold attached.

Source: Inland Revenue Board of Malaysia: e-Invoice implementation timeline. Reviewed .

Read the graphic as text
  • Above RM100 million. Mandatory since 1 August 2024
  • RM25 million to RM100 million. Mandatory since 1 January 2025
  • RM5 million to RM25 million. Mandatory since 1 July 2025
  • Up to RM5 million. Mandatory since 1 January 2026
  • Under RM3 million. Exempt, unless the company belongs to a larger group
Download this infographic (SVG)

How you will know it works

Acceptance evidence and ongoing measures do different jobs. Acceptance tests show that the agreed path and the exceptions behave as specified, and they run before release. Operational measures show what happens afterwards, and they only mean something with a denominator and a baseline behind them.

Useful categories, without inventing values for them: eligible cases, completed cases, failed actions, duplicate attempts, manual corrections, cycle time and unresolved exceptions. Set a target once you have watched the real numbers for a period, rather than writing one into a proposal.

Then assign the roles that outlive the build. Business ownership of the process. Technical maintenance of the automation. Exception review, which is a daily habit rather than a job title. And change approval, because the first request to alter a rule will arrive sooner than you expect. Those are frequently four different people.

What to bring

One workflow, not five. The people it affects, the tools it already touches, the exceptions you know about, the constraints that cannot move, and any real deadline or budget range. Tell us about the process and we will say whether it is ready to automate, what we would control first, and where clarifying the process would serve you better than building anything at all.

FAQ

More questions about workflow automation

Straight answers to what people ask. Anything else, message us and a person replies.

Ask a question
What does workflow automation cost?

Our published website packages are on the pricing page. A workflow is quoted against the scope we agree rather than sold as a package, because the work is decided by how many exceptions have to be handled and what has to be connected, not by how many screens there are.

Do we need custom software, or can we configure what we already have?

Often you can configure what you already run, and we will say so when that is the honest answer. Custom becomes the better option when the rules do not fit the product, when the audit trail matters more than the product provides, or when the workarounds have quietly become the process. That judgement comes after we look at the process, not before.

How long does it take?

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once the scope is agreed. With workflow work the pacing item is usually the integration and the exception handling rather than the interface.

What happens when the automation gets something wrong?

It should stop and tell somebody, which is why the exception queue and its owner are scoped at the same time as the happy path. An unresolved case that sits in a log is the failure mode we design against, because nobody discovers it until a customer does.

Will our team lose visibility of what is happening?

The opposite, if it is built properly. A manual process is visible only to the people in the thread. An automated one should have a review view showing eligible cases, completed cases, failures and anything stalled, which is usually the first thing an operations lead actually uses. That surface is covered on admin dashboards.

Can it connect to the system we already use?

Possibly, and it depends on more than whether an API exists. We check the permissions available, the state of the data, the supplier terms and who is accountable when that system changes, then say what is feasible. That work is covered on CRM and integrations.

Should we automate everything at once?

No. One workflow, run for a period, with the exceptions reviewed by a person who can still overrule it. What you learn in that period usually changes the second workflow, and it is far cheaper to learn it on one process than on six.

Tell us how your team works today

Describe the process you want to run in one system. We will show you the closest thing we have already built, then scope the real version against your requirements.