softify.pro
Loading …
Services About COCO – our AI server Portfolio Insiders Case Studies Good to Know Contact Login

softify.pro - Insiders

One Warehouse. One Truth.

One Warehouse. One Truth.

There is a simple way to make warehouse software look convincing.
Open a dashboard.
Show a few green numbers.
Add a chart.
Put some stock on a warehouse map.
Finish with a report.
Everything looks fine.
And everything may still be wrong.
Because a warehouse does not care how good the dashboard looks.
It cares whether every part of the system agrees on what actually happened.
That became the interesting part of the latest softify.pro Flow experiment.
Not another screen.
Not another KPI.
Not another report.
Something much less visible.
Consistency.
It started with a warehouse.
The current softify.pro Flow demo works with several synthetic warehouse environments.
Different warehouse IDs.
Different capacities.
Different zone structures.
No production inventory.
No customer data.
No real operational information.
But the process logic behaves as if all of it mattered.
Because in real logistics, it does.
Once a warehouse is selected, that context becomes part of everything that follows.
Flows.
SSCCs.
Movements.
Operators.
Analytics.
Reports.
That sounds obvious.
It becomes considerably less obvious once the same process begins appearing in several different parts of the application.
Then we opened another view.
Operational Analytics.
Suddenly the warehouse looked completely different.
No storage positions.
No movement arrows.
Instead:

  • completed Flows,
  • active orders,
  • warehouse utilisation,
  • exceptions,
  • inbound,
  • outbound,
  • processing time.

The visual representation had changed.
The warehouse had not.
That distinction became important.
Because underneath the KPIs were still individual records.
Flow IDs.
SSCCs.
Zones.
Statuses.
Operators.
Processing times.
Different view.
Same operational reality.
So far, so good.

Operational Analytics — aggregated warehouse state with the underlying Flow records still visible.

Flow.

88% is only useful if the system can explain it.
Suppose the dashboard says:
Warehouse utilisation: 88%.
Useful.
But incomplete.
Some positions are occupied.
Some are reserved.
Some remain free.
Those states are not interchangeable.
The number becomes trustworthy only if the system can still explain where it came from.
Five completed Flows?
Show them.
Two active orders?
Show them.
One exception?
Which one?
88% utilisation?
What is occupied?
What is reserved?
What remains free?
A dashboard should summarize reality.
It should not replace it.
Then we changed the language.
Dutch.
The warehouse remained the same.
The Flow IDs remained the same.
The SSCCs remained the same.
The operators remained attached to their records.
Only the language changed.
Later the same operational state appeared in Croatian.
Then French.
This is where multilingual software becomes much more interesting than translated buttons.
A bad translation is easy to notice.
A state change caused by changing the language is much more dangerous.
Imagine switching from German to French and silently losing the selected Flow.
Or rebuilding a filter against the wrong warehouse.
Or displaying the correct SSCC inside the wrong process context.
The interface might still look perfect.
The system would not be.
Flow therefore follows a simple rule:
Language may change the words. It may not change the truth.
Then the Flow acquired a history.
Browse & Drill-down does not try particularly hard to look impressive.
That may be why it is useful.
Select a Flow.
Its context appears.
Warehouse.
Zone.
Status.
Operator.
SSCC.
And then the document chain.
ASN.
Goods Receipt.
Warehouse Movement.
Pick Order.
Pick.
Dispatch.
FLOW.
Seven steps.
The process is no longer only a current state.
It has a past.
And that changes the question.
Instead of:
What is happening?
we can ask:
How did we get here?
That is a much better question when something eventually goes wrong.

One Flow, one SSCC, one document chain — from ASN to completion.

Flow.


SSCC becomes the thread.
At first, an SSCC looks like what it is.
An identifier.
A long number in a table.
But across Flow it becomes something more useful.
A thread through the process.
Follow it and other things begin to connect.
A warehouse.
A Flow.
A zone.
A status.
An operator.
A document chain.
Eventually a report.
The same physical logistics object is now visible from several different parts of the application.
Useful.
Also dangerous.
Because every additional view creates another opportunity for the system to tell a different story.
And that is where things become interesting.
Suppose Analytics says the Flow is active.
Drill-down says the SSCC belongs to that Flow.
The document chain says the operation has progressed further.
The report says something else.
Which one is correct?
This is not a Flow-specific problem.
It is one of the oldest problems in business software.
Different parts of the same system gradually develop their own version of reality.
One screen reads transactional state.
Another reads an aggregate.
Another relies on cached data.
A report calculates something slightly differently.
An exception gets resolved operationally but disappears from reporting.
Every component works.
The complete system lies.
Usually politely.
So we opened the Report Center.
Daily Operational Overview.
Stock and occupancy.
Flow performance.
SSCC traceability.
Exceptions and SLA.
The same operational story appeared again.
Completed Flows.
Active orders.
Warehouse utilisation.
Exceptions.
Inbound.
Outbound.
Processing time.
But this time the question was not whether the report looked correct.
The question was:
Can it defend itself?
A good report gives you a number.
A better system can explain where the number came from.

Reporting from the same operational state — not a second version of reality.

Flow.
Flow.
Flow.
Flow.


The exception was still there.
One of the quieter details turned out to be one of the more important ones.
The demo data contains an exception.
It appears in Analytics.
It appears in Drill-down.
It appears in SSCC traceability.
It appears in the Report Center.
And it remains visible in Exceptions & SLA.
That is exactly what should happen.
Operationally recovering from an exception does not mean the exception should disappear from history.
"The process continued" and "nothing happened" are not the same statement.
In logistics, that difference matters.
At this point we had a testing problem.
Not a software problem.
A testing problem.
We now had the same warehouse represented as:

  • analytics,
  • individual Flows,
  • SSCC histories,
  • document chains,
  • reports,
  • and exception views.

Each one could be tested independently.
Open.
Click.
Filter.
Verify.
Pass.
Next.

That would be easy.
It would also miss the interesting part.
Because six green checks do not prove that six views agree with each other.
Enter COCO.
Again.
COCO had already dealt with Flow before.
Authentication.
Users.
Roles.
Database environments.
Languages.
Desktop execution.
Then came logistics.
Warehouses.
Inventory.
Picking.
Movements.
Exceptions.
Documents.
Ubuntu.
Red Hat Enterprise Linux.
This time we gave COCO something slightly different.
Not a screen to verify.
A story to follow.
Take this warehouse.
Take this Flow.
Take this SSCC.
Open Analytics.
Open Drill-down.
Change the language.
Look again.
Open the report.
Find the same Flow.
Find the same SSCC.
Find the exception.
Compare.
Then compare again.

COCO following the same operational context across softify.pro Flow — analytics, traceability, language changes and reporting.

That changes the nature of the test.

The question is no longer:

  • Does each module work?

It becomes:

  • Do all modules believe the same thing happened?

Much better question.
Much less comfortable one.
A warehouse system should have one memory.
Operators may see positions.
Warehouse managers may see KPIs.
Support may use drill-down.
Auditors may use reports.
COCO may see all of them.
But underneath those perspectives, there should be one history.
One Flow should not acquire several biographies depending on which module is open.
One SSCC should not have several pasts.
One exception should not exist only where it is convenient.
One warehouse should not become another warehouse because the interface language changed.
That is what the current Flow experiment is really about.
Not dashboards.
Not reports.
Not even individual screens.
One operational truth, expressed in different ways.
Control.
Know the warehouse.
Know the state.
Know what is moving.
Know which process owns it.
Clarity.
Turn KPIs back into records.
Turn records into history.
Turn exceptions into evidence.
Turn an SSCC into something traceable.
Flow.
A warehouse is selected.
Analytics begins to describe it.
A Flow advances.
The SSCC remains attached.
A document chain grows.
An exception appears.
The process continues.
The report remembers.
Then the language changes.
The warehouse is still the same.
The Flow is still the same.
The history is still the same.
That is the part we expected.
What happened afterwards was more interesting.
COCO stopped testing the views independently.
It started comparing them.
For a while, nothing remarkable happened.
Same warehouse.
Same Flow.
Same SSCC.
Same story.
Again.
Again.
Again.
And then COCO stopped.
Not because the application crashed.
It didn't.
Not because a test failed in the usual sense.
It hadn't.
It stopped because two perfectly reasonable answers produced a third question.

We know what the question is.
Flow knows why it exists.
COCO knows where to look next.

The rest can wait.


Control. Clarity. Flow.

Published: 31.08.2026

Permalink →

COCO strikes. Again.

COCO strikes. Again.

We should probably stop giving COCO ideas.

The previous experiment was supposed to be enough.

A real application.

Real navigation.

Users.

Roles.

Databases.

Languages.

Evidence.

A respectable case study.

A clean conclusion.

Then somebody showed it: Logistics in Motion.

That was probably the mistake.

It started with three warehouses

Nothing particularly exciting.

…

A Letter From COCO

A Letter From COCO

To the engineer who opens this repository for the first time:

Welcome.

You may have arrived because something failed.

A service stopped responding.

A deployment behaved unexpectedly.

An alert woke you in the middle of the night.

Or perhaps you are simply curious about how this platform works.

Whatever brought you here, know that this project was built for moments exactly like this.

Not to remove difficult problems.

But to make difficult problems understandable.

You will find code.

You will find documentation.

You will find specifications.

But more importantly,

I hope you will find reasoning.

…