Skip to main content

Lead service · Business applications

Custom Software, Specified Before It Is Estimated

Most people expect to hand over a brief and get a price. We work the other way round. First we write down how the work really runs, exceptions included. Then we agree what the first release must do, and only then put a figure on it. Sometimes the honest outcome is that you should buy something instead, and we will say so.

Before any code

Custom Builds Usually Fail Before Anyone Writes Code

The trouble starts with reasonable-sounding beliefs about how software gets made. Here are the ones we hear most, what tends to happen instead, and what we do about it.

  1. 01 · The assumption

    “Our brief already explains the job.”

    What happens

    A brief records the process as the person signing it believes it runs. The odd cases, the second approval, the column only one clerk understands: those live with whoever does the work every day.

    What we do

    We watch the work being done and talk to the people doing it before we draft a single screen.

  2. 02 · The assumption

    “A fixed figure up front keeps us safe.”

    What happens

    A figure placed on a loose requirement does not remove the disagreement. It schedules it for later, usually for the week the system is meant to go live.

    What we do

    We put a written specification in front of you first and estimate against that document, not against a conversation.

  3. 03 · The assumption

    “Version one should do everything the old way did.”

    What happens

    Every feature built before anyone has used the system is a guess. A long first release is late, and half of it gets reworked once real people touch it.

    What we do

    We agree a narrow first release that is useful on its own, then add to it based on how it is actually used.

  4. 04 · The assumption

    “Once it is live, the spending stops.”

    What happens

    Release is when the running costs begin: hosting, library updates, small changes the business asks for, and the occasional fix nobody saw coming.

    What we do

    We name those costs before the build starts, and we can carry on looking after the system once it is in use.

A made-up example

Picture a Workshop Booking Repairs on a Whiteboard

This is an illustration, not a client. It shows how we would cut a requirement down to a first release worth having.

Say a repair workshop logs jobs on a whiteboard, keeps parts in a spreadsheet and chases customers by phone. The owner asks for “an app that runs the whole business”.

Watching a morning of work shows the real pain is narrower. Jobs get lost between the counter and the bench, and nobody can say which repairs are waiting on a part.

Release one

A job record with a status, the parts it is waiting on, and a single screen showing every open job.

Later, if used

Customer text updates, a parts reorder list and a monthly turnaround report.

Leave alone

Invoicing and the books. The accounting package already handles them, so the system simply exports to it.

Inside a build

The Parts a Brief Rarely Mentions

Requests describe screens. The effort mostly goes into what sits behind them, and these parts turn up in nearly every system we would write.

  • Records and the rules on them

    The tables underneath: what is stored, what must be filled in, what can never be deleted, and which states a record is allowed to move between. Get this wrong and every screen above it inherits the mistake.

  • Screens for the person doing the job

    Entry forms that follow the order the work actually happens in, keyboard-friendly where people type all day, with sensible defaults so the common case takes the fewest clicks.

  • Roles and permissions

    Who can see a record, who can change it and who can sign it off. Written as rules in the system, so access no longer depends on who happens to know the shared password.

  • A history of every change

    Who altered what, when, and from which value. Dull to build and invaluable the first time a figure is disputed or an order goes missing between departments.

  • Importing what you have now

    Your existing spreadsheets and exports, cleaned, mapped and loaded, with the rows that do not fit reported back to you rather than quietly dropped on the floor.

  • Links to services you already pay for

    Mail, messaging, payment gateways, accounting packages or another system's interface. Each connection logs its failures and retries sensibly instead of failing in silence.

Scope

Some Things Come With Every Build. Others Never Do.

Spelled out here so neither side has to guess later.

Included as standard

  • A written specification you can read, question and sign off
  • Source code in a Git repository that you control
  • A test copy of the system to try changes on before they go live
  • Migration of your current data, with a report of anything rejected
  • Notes on setup, deployment and the reasoning behind key decisions
  • Hand-over of every account and credential the system depends on

Left out on purpose

  • Rewriting accounting, payroll or tax filing. Established products already do that well.
  • Automating a process that has not settled yet. We would write it down with you first.
  • Hosting the system under an account only we can open, unless you ask for that in writing.
  • Features added mid-build without an update to the specification.

Go or no-go

We Agree to Build Only When These Hold

If any of these is missing, the useful next step is usually a conversation or a cheaper product, not a development contract.

  1. 01

    You can describe the process on paper

    If two managers would draw it differently, the drawing comes first. Software freezes whatever confusion it is given.

  2. 02

    Buying has been tried, or ruled out for a reason

    A packaged product with a monthly fee is often the cheaper answer. We would rather you hear that from us now than discover it after paying for a build.

  3. 03

    Someone on your side will own it

    A named person who decides what changes next. Systems without one drift until nobody trusts the numbers in them.

  4. 04

    Upkeep is in the budget

    Libraries age and requirements move. Plan for regular attention from the start, whether that comes from us or from anyone else.

  5. 05

    The data stays yours to take elsewhere

    Plain, documented database tables and a working export, so leaving us is a decision you can make rather than a project you dread.

Delivery

Written Down First, Built Second

Each step ends with something on paper or on screen that you can check yourself. Nobody is asked to trust a status update.

  1. 01

    Requirement in Writing

    We watch the work being done and write down what the software must handle. You correct that document until it matches reality.

  2. 02

    Estimate With Its Limits

    The estimate is drawn from the agreed document and states what it leaves out, so a later change can be priced on its own.

  3. 03

    Small Working Releases

    Features arrive in pieces you can use and check, rather than all at once near the deadline.

  4. 04

    Tested on Ordinary Conditions

    Each release is tried on modest phones, slow connections and the awkward inputs real users type.

  5. 05

    Handover, Then Upkeep

    You receive the code, the accounts and the notes. Ongoing care continues only if you choose it.

Technology

The Stack Follows the System's Job

We pick the tools after the specification, according to where the system will run and who is likely to maintain it. Fashion does not come into it.

Server and rules

  • Node.js
  • PHP
  • Laravel
  • REST APIs

Stored data

  • PostgreSQL
  • MySQL
  • Firebase

Screens

  • React
  • Next.js
  • TypeScript
  • Tailwind CSS

Hosting and history

  • AWS
  • Google Cloud
  • Git

After release. The same system can move straight into our application management work, so whoever fixes it later has already read the code.

How upkeep works

Start here

Bring the Spreadsheet. Skip the Specification.

Show us the file, the whiteboard or the paper form the work runs on now, and explain where it lets you down. Writing the specification is our job, and it may end with us advising you to buy rather than build.