Legacy System AI Modernization
The rules in that system encode twenty years of hard-won knowledge. The right move is to keep them running while a model learns to beat them, not to switch them off and hope.
- Typical duration
- Six to fifteen months
- Team shape
- Three to five senior engineers
- Starts with
- Shadow running, not replacing

The old rules are the baseline, and they are usually good
A decision engine that has been tuned by domain experts for a decade is a formidable thing to beat. It is also brittle, undocumented and impossible to change — which is why it is being replaced, and why replacing it wholesale so often goes badly.
We run the model in shadow instead. Every case goes through both the existing rules and the new model, the two are compared on real outcomes, and nothing changes for anyone until the evidence says it should. Where the model wins, that decision moves. Where the rules win — and on some decisions they simply do — the rules stay, and the honest finding is recorded rather than argued around.
What usually goes wrong, and what we do instead
The failure is not the model. It is switching off a baseline nobody measured first.
Where these projects fail
- The rules replaced before anyone measured how well they performed
- Rules treated as documentation, when the code and the docs disagree
- A model judged on aggregate accuracy, hiding the cases that matter most
- Experts excluded, so the knowledge in the rules is lost with them
- No way back once the old engine has been switched off
How we run it instead
- The existing rules characterised and scored before anything is built
- Behaviour taken from the running system, not from its documentation
- Performance compared per case type, not as a single accuracy figure
- Domain experts in the loop, adjudicating where the two disagree
- The old engine kept live and authoritative until a decision moves
What changes, in practice
Not a technology list. The things that are different for the people who own and operate the decision.
The system today
Accurate, and frozen.
- Rules accumulated over years, with no record of why most exist
- A change requires the one person who understands the engine
- Nobody has measured how well it performs on current cases
- Edge cases are handled by a manual override nobody logs
- New patterns in the data need a rule somebody has to write
- There is no way to test a change except to release it
The system after
Same decisions, measurable and changeable.
- Rules characterised in tests, so what they do is readable
- Any engineer can change a decision path safely
- Performance scored continuously against real outcomes
- Overrides captured as signal rather than lost as workarounds
- New patterns are learned rather than hand-encoded
- A change is scored in shadow before it affects anyone
What that involves
The work that decides whether judgement can be added to an old system without losing what it already knows.
Shadow running
Both engines, every case, nothing switched off.
The model runs beside the existing rules on real cases and the two are compared on real outcomes. A decision moves only when the evidence says it should, and some decisions never do.
Rule characterisation
Tests written from the running engine, because the code and the documentation rarely agree.
Per-case-type scoring
Performance compared by case type, since an aggregate figure hides exactly the cases that matter.
Expert adjudication
Where the two engines disagree, the people who own the decision say which was right.
Slice-by-slice cutover
One decision path moves at a time, reversibly, with the old engine still live behind it.
Integration preservation
Everything downstream keeps working, including the consumers nobody currently owns.
Scoring in production
Decisions compared with outcomes as they arrive, so drift is visible before a quarter is.
How the pieces fit together
Six components, and the point of the arrangement is that the fifth one can be switched back at any moment.

What each part does
- The case: what arrives, captured with everything known at the moment the decision has to be made.
- The existing rules: still running, still authoritative, and now characterised by tests so its behaviour is readable.
- The model: scored on the same cases in shadow, producing a decision and the reasoning behind it.
- Adjudication: disagreements surfaced to the domain experts, whose verdicts become the scored evidence.
- The router: which engine is authoritative, per decision path, changeable in both directions without a release.
- Outcome feedback: what actually happened, matched back to both engines — the loop that decides what moves and what stays.
How the programme runs
The same five stages as every engagement, applied to a system whose decisions matter.
Diagnose
What the rules actually do, how well they perform on current cases, and which decision path is worth attempting first.
Decide
The comparison method, the case types and what would count as beating the baseline, agreed in writing.
Prove
The model run in shadow on real cases, scored, and adjudicated with your experts before anything is switched.
Deliver
Decision paths moved one at a time, each reversible, with the rules still live behind them.
Hand over
Your team scores, retrains and moves a decision path with us watching, then without us.
What we work with
The starting point is whatever the old system runs on. This is what we add beside it.
Modelling
- Python
- PyTorch
- scikit-learn
- Anthropic
Seams
- REST
- Kafka
- Temporal
- Java
Data
- PostgreSQL
- Snowflake
- dbt
- Elasticsearch
Platform
- AWS
- Azure
- Docker
- Datadog
The rest of our AI work
Most AI engagements need one of these underneath them, and some need two.
Related work
Engagements where an old system knew more than anyone could explain.
What we work towards
ILLUSTRATIVE, pending sign-off. These are the measures this work is judged on and the direction they should move — not results from a named engagement. They will carry real figures or be removed before launch.
Baseline performance
Time to change a decision rule
Testing a change
Manual overrides
Rollback for a moved decision
Questions about this work
The ones we are asked most often before a first conversation.
What if the model does not beat our rules?
Nobody here fully understands the existing rules.
Our decisions have to be explainable. Does that rule this out?
How long does shadow running go on?
How much of our experts' time does this need?
Do the old rules ever get switched off?
Old system that knows more than anyone can explain?
Tell us what decision it makes and how well it makes it. We will find out whether a model can do better.

