Systems delivery for mid-sized companies

We don't sell AI.
We build the systems
your business runs on.

AI is a tool we use — not the product we sell. We design and deploy complete operational systems for small and mid-sized companies, using the same ontology-first method that makes large-scale enterprise deployments actually work. What you get is a system your team runs the business on. Not a demo. Not a shell.

Ontology firstThe business is modelled before a line of code is written
End to endFrom data model to the shop floor, migration and training included
In daily useSystems running real operations, not pilots that quietly died
What we build

Systems, not slideware

Whatever your operation actually needs. AI goes in where it earns its place — and nowhere else.

Operations

Production & inventory

ERP, MES, work orders, routing, outsourcing loops, piece-rate payroll, shop-floor visibility that matches what is physically happening.

Finance flow

Trade & money

Order-to-cash, procurement, receivables and payables, ageing, reconciliation that actually closes instead of quietly drifting.

Customer

CRM & portals

Sales pipelines, customer self-service ordering, quotation and after-sales flows, connected to the same model as the back office.

Decisions

Data & reporting

Dashboards and exception alerts built on your real numbers — so managers argue about decisions, not about whose spreadsheet is right.

Where it pays

AI as a component

Document extraction, classification, drafting, assistants, image search. Used where it removes real work — never as the reason for the project.

Foundation

Migration & integration

Legacy databases, hosted platforms you want to leave, and years of messy spreadsheets — brought into one coherent model.

Our moat

Ontology first. Then architecture. Then code.

Most enterprise software fails because someone starts building screens before anyone has modelled the business. We invert that order — and it is the whole reason our systems survive contact with reality.

01

Ontology — your business, modelled

We define your real objects and the relationships between them: what a job, a batch, an outsourced order, a piece-rate record actually mean in your operation, and the rules that bind them together. This is where we find the contradictions your current process is hiding.

You sign this off before we write code
02

Architecture — a standard we've refined across deployments

A layered architecture with explicit rules for what belongs where, so modules stay portable between projects, extendable by other engineers, and resistant to the rot that turns year-two systems into rewrites.

03

Modules — built one at a time, verified, then frozen

Each module is built against the ontology, reviewed and repaired in separate passes, then accepted and frozen so later work cannot silently break what already works.

04

Deployment — inside your operation

Your historical data migrated and reconciled, your people trained, a sandbox proven before production, and continued iteration once it is live. This is the step most projects skip, and it is the step that decides whether a system is used.

This is the same principle behind Palantir's ontology layer: software only becomes useful when it speaks the business's own language rather than forcing the business to speak the software's. We apply that discipline at a scale mid-sized companies can actually afford — with our own ontology method and architecture standard behind it.

The difference

A running system, not a beautiful shell

The most expensive thing in enterprise software is a system nobody ends up using.

What usually gets delivered

  • Impressive screens with demo data behind them
  • Falls over the first time real volume hits it
  • Workflows that don't match how the work is actually done
  • No one can extend it once the vendor leaves
  • Quietly abandoned, and the spreadsheets come back

What we deliver

  • Your real data, migrated and reconciled against the old system
  • Workflows modelled on how your people actually work
  • Every module verified against the ontology before it counts as done
  • Architecture documented so another engineer can extend it
  • Still running months later — and still being improved

We engineer against the empty shell. Guards against hollow modules and incoherent navigation are built into our delivery pipeline as explicit checks — because "looks finished but isn't" is the default failure mode of software built quickly, and it has to be designed out rather than promised away.

Case study

A mid-sized manufacturer:
from spreadsheets to a running system

Their entire operation ran on Excel — production, piece-rate payroll, quality, materials, shipping. This is how we took it apart and rebuilt it. Client anonymised; the numbers are from the real engagement.

01

We read their operation before we asked for requirements

We didn't start from a requirements document — those describe what people believe happens. We asked for the real working files instead, and received 73 documents. 22 held real data; 21 were blank templates. That split was itself the first finding: a blank template tells you how a factory intends to manage something; the filled ones tell you how it actually does. The two rarely agree.

Then we built a glossary of their own vocabulary — every word used on the floor, mapped to what we understood it to mean, handed to each department head to tick or correct. We put 65 open questions to them, and got 65 answers.

We did not simply believe the answers. Each was re-checked against their own records. One stated payroll formula was verified across 4,598 piece-rate records — it held up, and in passing exposed six tiers of guaranteed hourly wage that everyone used in practice but that existed in no master data anywhere.

What their spreadsheets were hiding
The same production event re-keyed into three separate spreadsheets — piece-rate sheet, daily report, and schedule.
10×76 operations carried several unit prices within one style. The widest spread was tenfold — and that is wages.
2,300 vs 1,500Order quantity and production schedule disagreed on the same order, with nothing able to adjudicate.
567Defective units with no record of where they went, against a 13.7% finished-goods defect rate.
30 / monthQC filed one worksheet per day, so no trend could ever be computed from a month of inspection.
No validationA worker's name had been typed into the job-type column. A spreadsheet cannot refuse bad data.

Two departments also gave us opposite answers to the same question — is a 13.7% defect rate normal? Production said yes, quality said no, and neither knew the other disagreed. Meanwhile the order master, goods in and out, outsourcing notes, statements and receivables existed only as empty templates: the order chain had a beginning and an end, with nothing joining them.

02

We modelled the business, then designed the product

The ontology came first: 29 tables with effective dating, historical snapshots, and employment identity split into two dimensions. One decision shows why this step exists — job type belongs to the work, not to the worker. A person is not "a flat-machine operator"; a task is flat-machine work, and the same person may do three kinds of it in a day. Model that the wrong way round and payroll becomes unfixable two years later, long after anyone remembers why.

The client signed the ontology off before we wrote a line of application code — all 65 questions closed, version dated and confirmed. Correcting a misunderstanding at that point costs one line of a document.

Architecture followed from it: layered, with a single payroll service that is the only place in the system where money is ever calculated. Daily output and order progress are derived, never re-keyed — which is precisely what kills the triple entry rather than merely speeding it up.

03

We built it module by module, behind gates

Each module is built against the ontology and must pass 31 automated gates before it counts as done — covering validation, permissions, money masking, concurrency and workflow state.

One gate tests the other gates. It re-injects the original defect each gate was written to catch and fails if that gate stays green — because a gate turns green when the product is fixed, and it also turns green when it has quietly gone blind. One of ours silently stopped checking 60 fields and kept printing green; only a manual recount caught it. A ruler nobody re-checks is not a ruler.

On top of that we run multi-role QA: reviewers playing production controller, storeman, inspector and accountant, walking the real product through a browser the way those roles actually would.

This is what "not a shell" means in practice. Bugs we caught this way include an export that stripped the on-screen wage masking, an inspection sheet that could pass a batch of 100 while claiming 5,000 sampled, and a stock posting that added three times if you clicked three times.

04

We deployed it inside the factory and retired the spreadsheets

Sandbox first, proven with their real history loaded — 8,721 piece-rate records migrated, so the system opened with their past already in it rather than with empty tables. The interface ships in English, Simplified and Traditional Chinese, because the floor, the office and the customer don't read the same one.

Production reporting moved to scan-and-report at the workstation. One scan now produces what three spreadsheets used to: the daily report, progress against the order, and the payroll line. The re-keying isn't streamlined — it stops existing.

The spreadsheets aren't kept running alongside the system as a comfort blanket. They're replaced — because anything still maintained by hand becomes the version people trust, and the system quietly dies.

In production

Where our systems run today

Real deployments inside real operations. Client names withheld — details available under NDA.

Cutting tools

Inventory and production visibility

Full stock and production system for a precision tooling manufacturer, running a sandbox-to-production release pipeline.

Zipper manufacturing

ERP with the outsourcing loop rebuilt

Reverse-engineered a legacy system and found an outsourcing and inventory loop that had been broken for years, with tens of millions in value unaccounted for.

Chemical trading

End-to-end trade flow

Procurement through delivery and settlement, replacing a spreadsheet-and-memory process.

Machining group

Migrated off a hosted platform

Moved a company off a rented cloud platform onto a system they own, and merged production management into it.

Consumer platform

Mobile app at scale

A running consumer sports platform with membership, events, training plans and messaging.

How we work

From your operation to a running system

You describe the problem. We do the modelling — and we tell you early if we are not the right fit.

1

Understand

We sit with the people doing the work, not just with the spec document.

2

Model

We build the ontology and you sign it off. The cheapest place to be wrong.

3

Build

Module by module, each verified, accepted, then frozen.

4

Deploy

Installed inside your business, data migrated, people trained, then improved.

Let's build

Tell us what your operation actually struggles with

Whether you know exactly what you need, or only that something is broken and expensive — the first conversation is free, and we will tell you honestly if we are not the right people for it.