perfectdesign.

Software and systems

Custom software development

Software shaped around the way your business actually works, rather than a business bent around somebody else's software. The first question is whether you need it at all, and we will tell you when the answer is no.

In short

Custom software is worth investigating when a defined workflow has its own roles, records, exceptions and connections that no available product covers adequately. It is not automatically the better answer: where a product already handles the core process, configuring it or building a smaller integration is cheaper to buy and cheaper to run. The decision turns on how differentiated the workflow is, how deep the integrations go, how often the rules change and who will own the system after launch. We work through that with you before anyone puts a number on a build.

Written for an owner or operations lead deciding whether a workflow justifies software built for it · 7 min read

Start with the workflow, not a feature list

Custom software is what a business commissions when a defined process needs software shaped to it: its roles, its records, its exceptions, its links to systems that already exist. The portal or approval queue that results is a capability inside it, not the thing you are buying. A conversation that opens with a list of screens ends in a quotation for the wrong system.

Before speaking to anyone, see whether you can answer five things about the process. What it is called. Who touches it, and in what order. Where the authoritative record lives today. Which exceptions keep recurring. What should be different afterwards. If they do not come easily, establishing them is the first piece of work.

Fit is something to investigate rather than a verdict. Plenty of enquiries here are better served by a website, a store or an app, and our services route those to the right page.

Who the Malaysian economy actually is. Nearly half the country works in a small business. Software priced and shaped for a multinational is not software for this market. A full text version follows.

Who the Malaysian economy actually is

Published statistic. Nearly half the country works in a small business. Software priced and shaped for a multinational is not software for this market.

Source: Department of Statistics Malaysia: MSME Performance 2025. Reviewed .

Also: DOSM: Economic Census 2023, profile of MSMEs.

Read the graphic as text
  • Of national GDP: 39.7%. RM689.8 billion of value added by micro, small and medium enterprises in 2025, growing faster than the economy as a whole
  • Of all employment: 48.7%. 8.09 million people work in one
  • Establishments: 1.07m. Counted in the 2023 Economic Census, three quarters of them micro-sized
Download this infographic (SVG)

When an existing product genuinely wins

Assess the alternatives properly and the argument usually settles itself. For each candidate, record how much of your core process it covers, where its configuration stops, what must be integrated around it, and which gaps remain. Written down, they are usually smaller than the sceptics believe and larger than the vendor implies.

A product tends to win when your process resembles how most businesses in your sector run it, when the gaps are cosmetic, when nobody internally will own a bespoke system, or when the budget covers building something but not running it. We would rather say that during scoping than after a build. A build earns its place where the process is part of how you compete, where systems must stay in step continuously, where access must be controlled precisely, or where rules change faster than somebody else's road map.

The platform decides more than the theme. WordPress can be fast, and ours are. But the average WordPress site is not, so the plugins, hosting and theme decisions are the project, not the paint. A full text version follows.

The platform decides more than the theme

Published statistic. WordPress can be fast, and ours are. But the average WordPress site is not, so the plugins, hosting and theme decisions are the project, not the paint.

Source: HTTP Archive: Web Almanac 2025, CMS. Reviewed .

Read the graphic as text
  • Duda: 85%.
  • TYPO3: 79%.
  • Wix: 74%. Up from 55%
  • Weebly: 47%.
  • WordPress: 45%. The largest group

Chart scale: Share of mobile sites on each platform passing Core Web Vitals, July 2025.

Download this infographic (SVG)

Configure, integrate or build

The table below is how we run that decision: a conversation with a shape rather than a scoring tool. There is no automatic verdict, and ending inconclusive on one factor tells you what to investigate next.

Five factors that decide whether a build is justified
FactorWhat to askEvidence to collectFavours configuringFavours building
Workflow uniquenessDoes your sector generally run this the same way?A written walkthrough of the process todayDifferences are preference, not advantageThe process is part of how you compete
Integration depthWhich systems must stay in step, and in which direction?Each system, its record owner, its interfaceFew connections, one way, published interfacesSystems must agree continuously, or no interface exists
Operational riskWhat happens on a day it is wrong or unavailable?The manual fallback, and which records are sensitiveA short outage is survivableAccess must be per role, errors carry consequences
Rate of changeHow often do the rules behind it change?The last three changes and what each costChanges are rare, or already exposed as settingsRules move faster than a vendor road map
Ownership readinessWho will run, fund and decide this after launch?A named owner and a budget lineNo internal owner, no care arrangementAn owner, a budget, appetite to improve it

A distinctive workflow can still favour a product when the gaps prove small, and an ordinary one can still justify a build when integration and ownership point that way.

Three routes, and the condition each one needs. There is no automatic verdict, and a factor that ends inconclusive tells you what to investigate next. A full text version follows.

Three routes, and the condition each one needs

Editorial framework. There is no automatic verdict, and a factor that ends inconclusive tells you what to investigate next.

Basis: Perfect Design: business systems explained. Reviewed .

Read the graphic as text
  • Configure. The process is ordinary, so bend to the product
  • Integrate. Good products exist, the gap sits between them
  • Build. The workflow is part of how you compete
Download this infographic (SVG)

What owning software actually costs

The build price is what everyone compares. The running cost decides whether the system still works in three years. Software nobody owns degrades quietly: dependencies age out of support, an interface changes, and the people who understood the rules move on.

So care is quoted with the project rather than bolted on afterwards. For a system with a real backend it starts from RM 250 a month, confirmed against what was actually launched, and covers hosting, security updates and upkeep. Support requests are normally answered in under one working day, which is how we work rather than a contractual guarantee; responding is not resolving, and a formal commitment can be written into your scope.

The e-Invoice mandate is already fully live. 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. A full text version follows.

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)

Most failed projects failed at scoping, not at coding

When a software project goes wrong, the post-mortem rarely finds bad code. It finds an exception nobody mentioned, two departments that each believed they owned the same record, or an integration assumed to exist. Those failures are cheap to prevent and expensive to find late, so discovery comes before an estimate here.

The table below is illustrative rather than a client project: a wholesaler takes orders by email and checks stock in a spreadsheet, while a packaged system owns the customer record and another owns availability. The columns matter more than the answers.

Illustrative wholesale order flow, scoped for review
Workflow stepAssumed actorProposed system responseExceptionAcceptance evidence to collect
Receive an emailed orderSales coordinatorCreate a draft order and validate customer and item identifiers against the agreed sourcesAn identifier is missing or does not matchRun valid and invalid fixtures, keep the validation messages
Check and reserve availabilityStock controllerAsk the inventory system for availability and record the reservationStock is short, or the response is staleTest available, unavailable and timeout cases, then reconcile
Approve an exceptionOperations managerRoute it with its reason, proposed action and decision historyThe approver is unavailable or lacks the permissionTest permitted and denied decisions, escalation and audit history
Confirm fulfilmentFulfilment coordinatorMark the order ready and send the agreed status onwardThe integration is down, or the message arrives twiceTest retry, duplicate handling and reconciliation

Every row names an exception and a test to run, not a result already achieved. Until the owner of the customer record and of the availability figure are agreed, no synchronisation rule or migration plan can be designed. CRM and system integrations covers that ground.

Architecture and security, at the level a buyer needs

You do not need to choose a technology. You do need to recognise the boundaries, because cost and risk live there: the interface people use, the rules that decide what may happen, the authoritative records, the edges where other systems connect, and the operating environment.

  • Identity and permission are different questions. Proving who somebody is does not decide what they may do.
  • Give each role only the access the work needs. Start closed and open deliberately.
  • Decide which records are sensitive, and what may appear in an export or a log.
  • Agree what gets recorded when something significant happens, so a disputed action can be reconstructed.
  • Test a restore, not just a backup. A backup nobody has restored is a hope.

Delivery form follows the workflow. Work that lives on desks, counters and tablets usually belongs in a browser: see web application development. Work that depends on the phone in someone's hand is a case for mobile app development. We build in React by preference and work in other languages when a project calls for it.

Where the individual systems are covered

Business systems are assembled from recurring parts. Rather than describe each here, this page routes to the one that owns it.

Prove the smallest safe rollout

A first release is bounded by users, one slice of workflow, the records it touches and the risk it carries, not by counting features. Pick the slice where being wrong is recoverable, run it beside the current process, and use the acceptance evidence column as the checklist: permitted actions, refused actions, exceptions and an interrupted integration.

Where legacy data moves, add migration checks: record counts on both sides, relationships that survived, rejected records with reasons, and a business owner who signs off. Then make the widening decision explicitly, recording open defects, deferred scope, ownership and the condition for rolling back. With those written down it is a decision; without them it is a hope with a date on it.

What bounds a first release. A first release is bounded by risk you can recover from, never by a count of features. A full text version follows.

What bounds a first release

Editorial framework. A first release is bounded by risk you can recover from, never by a count of features.

Basis: Perfect Design: business systems explained. Reviewed .

Read the graphic as text

First release

  • Users. One team who will say when it is wrong
  • Workflow slice. One path, run beside the current process
  • Records touched. Real data, counts checked on both sides
  • The way back. A written condition for stopping and reverting
Download this infographic (SVG)

Ownership, and who decides what

You own everything we build: the source code in your own repository, the domain and DNS registered to your business, the service accounts in your name, and the data in the system. There is no lock-in, and if you move provider we help with the handover.

A proposal should also be explicit about authority and upkeep, and it is worth checking any proposal against this list. Who controls the accounts. Who may approve a change. Who accepts a release. Who handles upkeep, defect correction, monitoring and security updates. Where new feature work stops being upkeep and becomes its own job.

What to bring to a first conversation

One workflow, the people it affects, the tools in use today, one representative exception, and your real constraints on budget and timing. That is enough to discuss what needs investigating before scope is agreed, and you are welcome to get in touch with exactly that much.

What you get

What is actually delivered

01

A build-or-buy recommendation first

An argued view on whether configuring a product, integrating one or building something is right for your workflow, before anyone estimates a build.

02

Discovery written down

Roles, permissions, normal paths, exception paths, integrations and acceptance criteria, agreed as a document you can review and challenge.

03

A prototype you can click

The main journey working on a live link, including the staff side, so scope is judged from something real rather than a feature list.

04

The system itself

Built in React by preference, with the workflow rules, records and permissions agreed in discovery, and other languages used where a project calls for it.

05

Integrations, scoped honestly

Connections to the systems whose interfaces, access and third-party terms are confirmed, with the failure and retry behaviour defined rather than assumed.

06

Acceptance evidence

The tests from the scope actually run: permitted actions, refused actions, exception paths, interrupted integrations and reconciliation.

07

Migration with sign-off

Where legacy data moves, record counts, relationships, rejected records and a business owner who confirms the result is correct.

08

Handover and care

Code in your repository, every account in your name, and ongoing care quoted with the project rather than added afterwards.

How it runs

Settle the decision before the estimate

The money lost on business software is rarely lost in the build. It is committed earlier, when a system is bought or scoped on an incomplete picture of the workflow.

  1. 01

    Understand the workflow

    The process as it runs today: actors, the authoritative record at each step, the handoffs, the approvals and the exceptions that keep recurring.

  2. 02

    Decide build, buy or integrate

    The five factors argued with your evidence. If an existing product covers the core process, we say so, and the conversation becomes a smaller one.

  3. 03

    Scope with acceptance criteria

    Roles, permissions, normal and exception paths, integration boundaries and the evidence that will prove each one, agreed before a price is fixed.

  4. 04

    Prototype the journey

    The main path on a live link so the rules are judged from something working, and the scope changes while changing it is still cheap.

  5. 05

    Build, integrate and test

    The approved scope built, the confirmed integrations connected, and the exception paths exercised deliberately rather than discovered in use.

  6. 06

    Roll out small, then widen

    A bounded first release beside the existing process, with open defects, deferred scope, ownership and a containment condition recorded before it widens.

Proof

Work you can click through

PITC Training is real client work: a 252-course training platform with per-venue sessions and enquiry flows wired into the client Zoho CRM, managed through a custom admin console. VITALE and Aruva Marketplace are concept prototypes we built ourselves, not work delivered for a client of either name. VITALE shows a direct-sales back office with a commission-cycle engine, and Aruva shows multi-vendor commerce across six role workspaces.

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.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

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

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

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.

Getting hold of us

Normally under 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.

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

Questions

Asked about custom software

Straight answers to what people ask before they commit. Anything else, message us.

How do we know we actually need custom software?

Work the five factors on this page with your own evidence: how differentiated the workflow is, how deep the integrations go, what an error or an outage costs you, how often the rules change, and who will own the system after launch. If an existing product covers the core process and the remaining gaps are small, configuring it or building a smaller integration is the better buy, and we will tell you that.

What does a custom system cost?

Website packages are published openly on the pricing page, but a system is quoted against its agreed scope rather than sold as a package. What moves the number is how many roles exist, how many systems must stay in step, how much of the work is the staff side, and how strict the acceptance evidence needs to be. A scoped conversation gets you a real figure faster than a questionnaire.

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 scope is agreed. The variable that moves a date most is not development speed but how quickly decisions and access arrive, which is why discovery comes first.

Who owns the code and the data?

You do. The source code is handed over in your own repository, the domain and DNS are registered to your business, every hosting and service account is in your name, and all the content and data in the system belongs to you. If you move to another provider, everything goes with you and we help with the handover.

Can you work with the systems we already have?

Usually, and how far depends on what those systems expose. Integration feasibility comes down to the interfaces actually available, the access we can be granted, the quality of the data on both sides and the third-party terms. We check those before treating a connection as scope, and where nothing is available we say what the alternative would cost.

What happens after launch?

Ongoing care for a system with a real backend starts from RM 250 a month, confirmed against what was actually launched, and it is quoted with the project rather than bolted on. Support requests are normally answered in under one working day. That is how we normally work rather than a contractual guarantee, and if you need a formal commitment we can write one into your scope.

Can we start with one part instead of the whole thing?

That is usually the better approach. Pick the slice of workflow where being wrong is recoverable, run it alongside the current process, and widen once the permitted, refused, exception and integration-failure cases have been tested. Building everything before anyone uses anything is how scope drifts out of sight.

Where to go next

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.