Blog
Notes from the work. Problems we have solved, and what each one taught us.
Every post starts from a real project in our library. Client details are anonymised; the engineering and the lessons are not.
Featured
Designing a Weighted Matching Engine: Lessons From a Football Scouting Platform
Principles from building a football scouting platform with weighted player-to-requirement matching: filters vs weights, explainable scores, data.
3 min read
All posts
From Disconnected Spreadsheets to One System of Record: Building a Multi-Branch ERP
What we learned replacing disconnected spreadsheets with one ERP for HR, payroll, accounting and point of sale across multiple branches.
3 min read
Legacy PHP on Modern MySQL: Fixing Strict-Mode Failures Without Switching Strict Mode Off
How we moved a legacy PHP platform onto modern MySQL: find failing queries with temporary logging, fix them properly, and keep strict mode on.
4 min read
Rebuilt Three Times: What a Membership Platform Taught Us About Maturing Requirements
Lessons from a membership platform that replaced spreadsheet administration and was rebuilt three times as its requirements matured.
3 min read
A Serverless Backend for a Two-Sided Marketplace: Letting Cost Follow Usage
Why a gig marketplace runs on a fully serverless backend, the trade-offs to plan for, and how to decide whether serverless fits your product.
3 min read
Before You Build a Business on a Licensed Script: What We Check First
Buying a ready-made script? The checks we run first: file storage, database compatibility, configuration, update path, API and core workflow fit.
4 min read
Building Alternate Designs Side by Side So the Client Can Choose
Why we build alternate page designs as working pages for clients to compare, and what makes a second design cheap to produce.
2 min read
Building Bilingual Arabic and English Apps: What Right-to-Left Support Actually Takes
Lessons from bilingual Arabic and English products: right-to-left layout, what must not flip, translation handling and multi-language SEO.
3 min read
Config Over Code: An Inspection Reporting Engine the Client Extends Without Us
How a configurable question-and-answer engine lets a construction firm create new inspection report templates without any code changes.
3 min read
Customise It, Then Keep It Patchable: Running a Licensed Platform After Launch
How to customise a licensed SaaS script and still apply vendor updates: a self-update path, isolated customisations and a clear shared workflow.
3 min read
Document an Inherited API Before You Integrate Against It
Why we wrote full OpenAPI documentation for a licensed clinic platform before integrating its backend, admin panel and patient apps.
3 min read
From Questionnaire to Quotation: Standardising How a Services Business Scopes Work
How a services business replaced ad hoc quoting with structured questionnaires that generate consistent quotations from templates.
3 min read
Getting a Client-Rendered React Site Indexed: Why We Added Prerendering to a Travel Platform
Why we added static prerendering to a client-rendered React travel platform, and how to choose a rendering strategy for content that must rank.
3 min read
Keeping Thousands of CRM Configuration Items Consistent With Automated Pre-Commit Checks
How automated pre-commit checks keep thousands of Salesforce configuration items consistent on a large production CRM implementation.
2 min read
Moving a Live Laravel Platform's Uploads to Object Storage: The Playbook We Reuse
The playbook we reuse to move a live Laravel app's uploads from local disk to S3-compatible object storage without breaking downloads or previews.
4 min read
One URL Generator Instead of Two Dozen Controllers: File Resolution in a Multi-Tenant SaaS
Why we replaced storage calls scattered across ~23 controllers with one URL generator, and how a placeholder fallback keeps a multi-tenant SaaS up.
3 min read
Partial Payments Break Spreadsheets: A Deposit and Balance Tracker for a Small Merchant
Why partial payments break spreadsheets, and the small back-office tool we built to track deposits, balances and daily reconciliation.
3 min read
Proof of Concept First: How We De-Risked the Vendor Choice for Receipt Automation
Why we tested the data-extraction vendor with real receipts before building an invoice automation tool, and how to de-risk any AI-dependent feature.
3 min read
Selling Where Stripe Does Not Reach: Building a Billing Engine Across 15+ Payment Gateways
What it takes to bill subscriptions through more than fifteen global and regional payment gateways, and the design rules that keep it manageable.
3 min read
Testing Two Technical Approaches in Parallel Before Committing to One
How we validated two technical approaches side by side for our own app, and the rules that make a parallel architecture test fair and worth it.
3 min read
Two Admin Panels, Not One: Separating Administrators From Frontline Staff
Why we built separate admin and staff panels for a services marketplace instead of one panel with hidden menus, and when to split yours.
3 min read
Two Rewrites Over Several Years: When Rebuilding a Mobile App Is the Right Call
A bilingual travel app we maintain was rewritten twice as its scope grew. How to tell a justified rewrite from an expensive mistake.
3 min read
Verify the Business Before It Goes Live: Onboarding Design for a Walk-In Services Marketplace
Designing a salon queue app: why marketplace trust starts at onboarding, and how to build verification, per-store roles and subscriptions in early.
3 min read
What Breaks If I Change This Field? Mapping Salesforce Dependencies in a Graph Database
How loading Salesforce metadata dependencies into Neo4j answers 'what breaks if I change this field?' before deprecations and refactors.
3 min read
Why We Build the Account Foundation Before the Headline Feature
Why we build signup, authentication, roles and a documented API to production standards before a marketplace app's headline feature.
3 min read
Recognise your own project in one of these?
Tell us what you're working with. We reply within one business day, usually with a few questions before suggesting a plan.
No sales presentation. We start with the problem.