Capital Markets
Fixed Income
End-to-end delivery
High-frequency bond market trading platform on ION bus
A quoting and execution platform for fixed income, rebuilt as 50+ independently
deployable services on ION bus middleware — with sub-millisecond execution latency,
pricing models that iterate without a platform release, and risk that is computed in
the order path rather than reported after it.
50+
cooperating microservices
< 1 ms
execution latency, hot path
3
languages in one runtime: Java, C++, Julia
FIX
venue connectivity with full audit trail
The challenge
Bond market making is not equity market making. The instrument universe is large,
quoting is request-driven, liquidity is fragmented across venues, and pricing
depends on curve construction and model calibration that cannot possibly run inside
the order path.
The platform in place coupled pricing, execution and risk into components that had
to be released together. Onboarding a venue meant a full-platform release. Changing
a pricing model meant the same. The desk was effectively choosing between shipping
improvements and keeping the platform stable.
The approach
We redrew the boundaries around failure and change rate rather than around teams,
then made latency an explicitly measured requirement instead of a shared hope.
- Split by rate of change — pricing, quoting, execution, position and risk, market data and venue adapters became independently deployable.
- ION bus as the backbone — the middleware the desk already trusted, with explicit message contracts and versioning between services.
- Heavy maths out of the hot path — curve construction and calibration pushed into C++ and Julia behind JNI bridges.
- Latency as a gated requirement — percentile tracking on every hop, allocation-free critical sections, regression gates in CI.
What we built
- A 50+ service platform communicating over ION bus middleware, each service owning its own release cycle.
- FIX connectivity through QuickFIX/J: session lifecycle, sequence recovery, drop-copy reconciliation and message-level auditability.
- JNI bridges from JVM services into native C++ and Julia libraries for pricing and calibration.
- Real-time position and risk, continuously recomputed, with pre-trade limit checks inside the order path and kill-switch semantics that genuinely stop flow.
- A latency measurement harness wired into CI, so a change that costs microseconds shows up before production does.
The outcome
- Sub-millisecond execution latency sustained across the hot path, measured at the percentiles that matter rather than the average.
- Venue onboarding became an adapter change, not a platform release — new connectivity ships without touching pricing or risk.
- Model iteration decoupled from platform cadence: quants change pricing behaviour without waiting for a release train.
- Regulatory review supported by the record — every order carries a message-level trail from decision to venue acknowledgement.
What actually changed: the win wasn't one faster component. It was
turning latency, risk and release cadence into three separate conversations instead of
one argument.
Industrial Manufacturing
Quality & Compliance
ERP integration
ERP-integrated industrial testing and acceptance platform
Industrial acceptance testing — collaudi — coordinated across manufacturer,
supplier, client and independent testing agency in one system. Inspection status
became a state machine backed by evidence, instead of whoever answered the email
thread last.
4
organisations in a single workflow
Full
bidirectional ERP integration
100%
of transitions evidence-backed and versioned
Real-time
compliance and non-conformity tracking
The challenge
An acceptance test involves at least four parties, each with partial visibility:
the manufacturer, the supplier, the client and an independent testing agency.
Coordination ran on email and shared drives — scheduling by thread, evidence as
attachments, status as an opinion.
Non-conformities lived in spreadsheets that drifted away from the ERP within days.
When an auditor asked for the evidence behind an acceptance, assembling it took
people off their actual work for the better part of a week.
The approach
Digitising the form would have saved paper. We digitised the process itself: the
legal transitions, the evidence each one requires, and who is allowed to make it.
- Inspection as an explicit state machine — not a status column. Transitions are validated, attributed and irreversible by design.
- ERP as system of record — orders, items and suppliers integrated rather than duplicated, with reconciliation and replay instead of one-shot imports.
- Documents as first-class evidence — versioned, immutable, attached to the transition that produced them.
- Role-scoped portals — each party sees its own view of the same underlying truth.
What we built
- A Java/Spring backend with a React front end over PostgreSQL, deployed on AWS.
- Bidirectional ERP interfaces with reconciliation, replay and conflict reporting.
- S3-backed document management with versioning, retention and full traceability.
- State-machine workflows covering scheduling, execution, non-conformity, rework and final acceptance.
- Real-time compliance dashboards, with non-conformities attached to the ERP object they belong to.
The outcome
- One source of truth across four organisations — status is derived from the record, not negotiated over email.
- Audit evidence assembled, not reconstructed: the trail already exists because the process produced it.
- Non-conformities stopped drifting from the ERP, because they are attached to it rather than copied out of it.
- Coordination cost moved into the software — the portal replaced the mailbox as the coordination layer.
What actually changed: the value wasn't the interface. It was making
an illegal process transition impossible to record — which is what made the data
trustworthy enough to audit.
Retail Supply Chain
Decision Intelligence
ML & Optimisation
Multi-echelon inventory optimisation and demand forecasting
The classic symptom: too much stock in total, too little of what customers actually
ask for. We separated forecasting from inventory policy, modelled demand and lead
time as the distinct sources of variability they are, and gave planners a way to test
a policy before living with it.
ML
demand forecasting with honest backtesting
Multi-echelon
safety stock placement across the network
↓ Stock-outs
measurable reduction against baseline
Minutes
to compare a scenario, not a spreadsheet rebuild
The challenge
Planning ran on spreadsheets: one forecasting method applied uniformly across a
heterogeneous catalogue, safety stock set by rule of thumb, and no way to evaluate
a policy change other than adopting it and waiting a quarter.
Demand variability and supplier lead-time variability were being treated as if they
were the same problem — so buffers were sized for the wrong risk and placed at the
wrong echelon.
The approach
Better forecasts do not fix wrongly placed buffers. We treated the two as separate
problems and measured each against a baseline that could not be argued with.
- Forecasting separated from policy — each evaluated on its own terms, against an explicit naive baseline.
- Stochastic demand and lead time — modelled independently, so buffers absorb the variability that actually causes the stock-out.
- Optimisation under constraints — capacity, service level and cost expressed as a trade-off curve rather than a single answer.
- Delivered into the planners' tools — results land where the work already happens, so the model survives contact with the working week.
What we built
- A Python/Pandas modelling stack with ML demand forecasting and reproducible backtesting.
- Multi-echelon inventory optimisation over stochastic demand and lead-time distributions.
- Constraint-based optimisation exposing the cost-versus-service-level frontier.
- Data pipelines on Apache NiFi and RabbitMQ over Oracle sources, with Jenkins driving scheduled runs and retraining.
- Scenario simulation so a planner can compare policies before committing to one.
The outcome
- Measurable reduction in stock-outs, evaluated against the pre-existing policy rather than against the model's own optimism.
- Scenario comparison in minutes instead of a spreadsheet rebuild — planning conversations moved from "what does the file say" to "which trade-off do we want".
- Forecast quality became a measured number, with a baseline anyone could reproduce.
- Inventory policy became reviewable — assumptions written down, versioned and testable.
What actually changed: a model earns its place the day a planner
changes a decision because of it. Everything before that is a science project — which
is why the scenario tool shipped before the last percentage point of forecast accuracy.