Skip to content
Artifisys
Menu
Start a conversation Talk to us

Supply chain & logistics

Your trucks, warehouses and freight desk each hold part of one customer's margin

After buying other logistics firms, how do we see what each customer buys from the whole group and what it costs to serve?

Book a 20-minute call Free. No demo, no slides.

Figures and rules on this page apply to

European Union

Working somewhere else? The shape of the problem usually travels. The deadlines do not.

What this looks like

Sales wants to offer warehousing to a transport customer. Nobody can say what that customer already spends with the group. The warehouse bills by pallet, the trucks by trip and the freight desk by shipment. Each unit spells the customer's name its own way. Finance rebuilds the picture once a quarter in a spreadsheet.

The numbers

Every figure here is someone else’s. Check them.

  • 24.4%of EU road freight in 2025 crossed a border, where handovers between units are common
  • 21.8%of EU road freight vehicle-kilometres in 2025 were driven empty
  • 26.0%empty share on national journeys in 2025, against 12.9% on international ones
  • 1,886bntonne-kilometres of road freight moved by EU hauliers in 2025, up 0.9% on 2024

Why it happens

It is not a people problem.

Each business you bought names customers, sites and services in its own words. The transport system knows a customer as a delivery address. The warehouse system knows it as a stock owner. The freight desk knows it as a shipper account. All three are right. None of them can say they are the same company.

Why your current software has not fixed it

Because it was never built to.

Each unit's system does its own job well, so nobody wants to rip it out. A group-wide system is a multi-year project that each new acquisition resets. Reporting tools can add up the numbers. They cannot decide which records belong to one customer, so the quarterly spreadsheet stays.

Intelligence, plumbed in

A pallet invoice, a trip record and a freight booking can be read as one customer's bill.

We build the layer that says which account in one unit is which account in another, then reads every shipment through it. Underneath it: a connector, one agreed meaning per field, and a test set scored on your own records.

How we make AI survive real data
  • Connectors
  • A semantic layer
  • Evals you can check

However hard, whatever it is

A logistics group is one example. Bring the acquisition whose customers you cannot yet add up.

We wrote this about transport and warehousing because buy-and-build is common there. The same layer works wherever bought businesses keep their own books.

  1. 01

    We sit with you

    Days where the work happens, not a workshop in a meeting room. We watch the job get done and write down the shortcuts nobody wrote down.

  2. 02

    We read everything

    Your data, your rules, your vendors and their documentation, and the published research on your sector. We report what is actually in there.

  3. 03

    We break it to first principles

    Not which tool fixes this. What is actually causing it, taken apart until we reach the piece that cannot be divided further.

  4. 04

    Then we build

    Weeks, not quarters. By this point we are not guessing what to build, and guessing is the thing that makes projects long.

What we build

Specific enough to argue with.

Four mechanisms, not four features. Each one is a thing that happens on its own, every day, whether or not anyone remembers to run it.

  • Shipment, warehouse and invoice records read from each unit's own system, as they are.

  • One customer list above all units, so a client of the trucks and a client of the warehouse resolve to one account.

  • Margin per customer and per lane, with each cost traced back to the unit that carried it.

  • A short list of customers who buy one service from the group and would fit another.

How you would know it worked

Numbers in your own reporting, not ours.

  • Days from month end to a group view of margin per customer.
  • Share of customer records matched across units without a person checking them.
  • Number of cross-sell offers backed by a customer's actual spend with the group.

Straight answers

Where a model is involved, it is scored against your own records first. Accuracy per source, not one flattering average.

The questions this raises

  • Do our units have to move to one system first?

    No. The layer reads each unit's system as it is. A later migration becomes easier, because the customer matching is already done.

  • What about a business we buy next year?

    It joins the same way. Its records are read and matched to the existing customer list, without a new project.

  • Who decides when two records are the same customer?

    The layer proposes a match and a person confirms the unclear ones. Each confirmed match is kept.

Where the figures come from

We did not make these up, and you should not take our word for them.

  1. Eurostat: Road freight transport statistics (2025 data, extracted July 2026)
  2. Eurostat: road freight by journey type (2025 data, extracted August 2026)

The meaning is not in any schema

Two systems agree on the field and disagree on what it means.

The rule lives in a document, or in what one site has always called something, or in a habit nobody wrote down. Joining the data is the easy half; agreeing what it means is the half that is actually the work.

Consent rules, site vocabulary, what an hour counts as. Wherever two systems agree on a field and not on what it means.Describe the disagreement.

The integration is a naming problem before it is a systems problem.

We build the layer that says which account in one unit is which account in another, then reads every shipment through it.

See everything we build
  • Software
  • Hardware
  • Ways of working
  • Whole ventures

Is this happening to you? Tell us the size of it.

Twenty minutes. We will tell you honestly whether the numbers justify doing anything about it.