Approach

We hold the pager.

Most software in our markets is sold, delivered and abandoned. We build products we then have to run ourselves — which settles most arguments about scope, stack and quality before they start.

Principles

Six rules we actually keep.

01

Production or it didn't happen

The first release reaches real users in weeks. A demo that has never taken a real payment has proven nothing.

02

Design for a bad network

Loads on a weak signal, survives a dropped connection, and works on the phone the customer actually owns.

03

Meet people where they are

In our markets that is WhatsApp and cash. We build for that reality instead of the one in the pitch deck.

04

Every state change is logged

Approvals, payments, cancellations, refunds. If money or stock moved, there is an audit trail with a name against it.

05

Boring beats clever

Small dependency trees, prepared statements, one database, one command to deploy. Products have to run for years.

06

The owner reads the numbers

Reporting is not a phase-two nice-to-have. If the business owner cannot answer their own question, we are not done.


The stack

Deliberately small.

One team runs sixteen products. That is only possible because every product looks like the last one: same shape, same deploy, same conventions, no framework churn.

Runtime
Node.js — Express where routing earns it, plain node:http where it does not.
Data
SQLite on a persistent volume. Idempotent migrations that run on boot, append-only, never edited.
Front end
Hand-written HTML, CSS and vanilla JS. No build step, no bundle to go stale.
Messaging
WhatsApp Cloud API and Twilio for SMS; templated, rate-aware, with dry-run modes for testing.
Hosting
Fly.io in Johannesburg for the apps, Cloudflare in front for DNS, TLS and static sites.
Operations
Sentry for errors, self-hosted analytics, nightly backups, and a test gate in front of every deploy.

How a build runs

From first call to running system.

Five stages. No discovery phase that bills for six weeks and produces a slide deck.

01

Sit in the business

A day in the shop, the depot or the route. We map what actually happens, including the workarounds nobody admits to.

02

Name the leak

One sentence on where money, stock or time is lost. If we cannot write that sentence, software is not your answer and we will say so.

03

Build the thin slice

The smallest system that closes that leak end to end — live, with real users, usually inside a month.

04

Run it and watch

We operate it while the business uses it. What the logs and the staff tell us drives the next release, not a backlog agreed in advance.

05

Hand over or keep running

Documented and transferable if you want it in-house, or operated by us indefinitely. Your data stays yours either way.

Straight answers

What we don't do.

Body-shop staffing

We do not rent out developers by the hour to sit in someone else's team. We take responsibility for outcomes or we pass.

Rewrites for their own sake

If your system works and only bleeds in one place, we fix that place. A rewrite is the most expensive way to move a problem.

Software as a fix for process

If the real problem is who signs what, an app makes it faster and worse. We would rather tell you that on the first call.

Sixteen products in,
we know what holds.

Bring us the part of the business that keeps going wrong.

Start a build