History and context
The real decision is capability ownership
The build-versus-buy debate is usually framed too narrowly. A modern company may buy accounting, payment and messaging services while owning the platform that coordinates pricing, orders, inventory, booking or operations. The architecture question is not whether software should be custom; it is which business capabilities deserve direct control over behaviour, roadmap and data.
Where SaaS is the rational choice
SaaS is usually strongest when a workflow is mature, standard and non-differentiating. Email, payroll, generic CRM, standard accounting and document collaboration are obvious examples. Rebuilding them transfers maintenance responsibility to your own team without creating meaningful market advantage.
SaaS strengths
- Fast adoption
- Predictable subscription cost
- Vendor-operated upgrades
- Lower operational burden
SaaS constraints
- Generic workflow model
- Vendor roadmap dependency
- Integration limits
- Switching and data-portability cost
When custom software becomes justified
Custom development becomes credible when the company's operating model repeatedly conflicts with standard software. Common signals are spreadsheet reconciliation, duplicate data entry, unusual pricing rules, multi-step approval logic, resource-based booking, channel-specific product rules, and a growing number of integrations that all depend on the same core data.
If staff have created spreadsheets to compensate for the software, the business already has a custom system. It is simply implemented through manual labour.
A practical economic model
Licence price alone is a weak comparison. The meaningful comparison is total operating cost over several years.
SaaS total cost =
subscription
+ add-ons
+ integration
+ manual reconciliation
+ workflow compromises
+ switching cost
Custom platform total cost =
discovery
+ design
+ development
+ cloud infrastructure
+ security
+ maintenance
+ supportA £1,000 monthly SaaS subscription may be cheaper than custom engineering. It may also be more expensive if it creates hundreds of hours of recurring manual work or prevents the business from launching important commercial models.
How we structure owned business logic
Rules that affect money or operational state should live in a shared backend rather than being duplicated across websites and POS applications.
public sealed class SalesOfferEvaluator
{
public DiscountResult Evaluate(
SalesOffer offer,
PricingContext context)
{
if (!offer.IsActive)
return DiscountResult.NotApplicable();
if (!offer.IsWithinValidity(context.Now))
return DiscountResult.NotApplicable();
if (!offer.TargetRule.Matches(context.Items))
return DiscountResult.NotApplicable();
return offer.Calculate(context);
}
}Real-world situations
Retail
Shared catalogue, price engine, stock, loyalty and returns across web and stores.
Hospitality
Tabs, station routing, kitchen workflow, live fulfilment state and multi-location reporting.
Booking
Capacity, resources, buffers, parallel activities and operating-hour constraints.
B2B
Negotiated pricing, approvals, purchase orders, account catalogues and credit controls.
Business value and decision criteria
Pros
- Exact operating-model fit
- Roadmap control
- Central data ownership
- Automation of manual work
- Better integration control
Considerations
- Higher initial investment
- Ongoing engineering ownership
- Security and observability obligations
- Risk of poor architecture
- Scope-management pressure
The strongest rule is simple: buy commodity capability, integrate where the boundary is stable, and build only where ownership creates durable leverage.
References
Primary documentation used for terminology and current platform guidance: