Organise around the case
Work doesn't revolve around applications, objects or agents. It revolves around cases: an application to assess, a patient who needs care, an assignment to staff. CaseFlows makes the case the starting point, together with the role each participant has in it.
Every generation of software chose a unit
Object orientation built around the object and made large systems manageable. Service orientation built around the service and made systems connectable. Agent architectures build around the agent and make software proactive.
That choice is never neutral: it decides what stays easy and what stays hard. And with all three, the same thing stays hard: several parties working together on one shared reality. An object knows no situation, a service doesn't know why it is called, and more agents acting on their own is not yet collaboration.
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#FFFBF3","primaryBorderColor":"#211D18","primaryTextColor":"#211D18","lineColor":"#211D18","secondaryColor":"#FCE3D2","secondaryBorderColor":"#EC6A22","tertiaryColor":"#ffffff","tertiaryBorderColor":"#D9CFBE","clusterBkg":"#F5EFE4","clusterBorder":"#D9CFBE","fontFamily":"Instrument Sans, system-ui, sans-serif","fontSize":"15px"},"flowchart":{"padding":18,"nodeSpacing":40,"rankSpacing":45}}}%%
flowchart LR
O["Object<br/>manageable"] --> S["Service<br/>connectable"] --> A["Agent<br/>proactive"] --> C["Case<br/>working together"]
classDef now fill:#FCE3D2,stroke:#EC6A22,stroke-width:2px
class C nowScroll sideways to see the whole diagram.
The case is the shared reality
A case is something that has to be brought from a trigger to an outcome. Four things set it apart from a record:
- It has an accountable owner, and it is shared. It connects everyone who works on it, each through their own role.
- It has several perspectives. Each participant sees the same reality from their own role.
- It unfolds over time. A case moves through phases and gathers decisions and outcomes.
- It remembers. What happened, and from which responsibility, stays with the case.
The caseflow describes that lifecycle: the phases, the roles, and how work, information and responsibility move between them.
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#FFFBF3","primaryBorderColor":"#211D18","primaryTextColor":"#211D18","lineColor":"#211D18","secondaryColor":"#FCE3D2","secondaryBorderColor":"#EC6A22","tertiaryColor":"#ffffff","tertiaryBorderColor":"#D9CFBE","clusterBkg":"#F5EFE4","clusterBorder":"#D9CFBE","fontFamily":"Instrument Sans, system-ui, sans-serif","fontSize":"15px"},"flowchart":{"padding":18,"nodeSpacing":40,"rankSpacing":45}}}%%
flowchart LR
T(["Trigger"]) --> P1
subgraph P1["<b>1 · Request</b>"]
direction TB
a1["<b>Applicant</b> submits the request"]
end
subgraph P2["<b>2 · Assessment</b>"]
direction TB
a2["<b>Municipality</b> leads the assessment<br/><b>Engineering firm</b> checks the structure"]
end
subgraph P3["<b>3 · Decision</b>"]
direction TB
a4["<b>Municipality</b> decides<br/><b>Applicant</b> sees the decision"]
end
P1 ==> P2 ==> P3 ==> R(["Outcome"])
classDef role fill:#ffffff,stroke:#D9CFBE,color:#211D18,font-size:13px
class a1,a2,a4 role
style P1 fill:#FFFBF3,stroke:#211D18,stroke-width:2px
style P2 fill:#FFFBF3,stroke:#211D18,stroke-width:2px
style P3 fill:#FFFBF3,stroke:#211D18,stroke-width:2px
classDef endpoint fill:#FCE3D2,stroke:#EC6A22,stroke-width:2px,color:#211D18
class T,R endpointScroll sideways to see the whole diagram.
The case role: a responsibility, not a login
The case says where people work together. The case role says how someone takes part. A case role determines what a participant can see and do throughout the life of the case. Rights don't depend on a job profile but on the responsibility someone carries in this case, at this moment. When the case moves to the next phase, what the role sees and can do moves with it.
Who fills the role is a choice: an employee, an agent, an existing system or another organisation. The responsibility stays; the way it is filled can change. That is why AI in CaseFlows doesn't get broad access to the organisation, but a place in a case, within the limits of the role.
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#FFFBF3","primaryBorderColor":"#211D18","primaryTextColor":"#211D18","lineColor":"#211D18","secondaryColor":"#FCE3D2","secondaryBorderColor":"#EC6A22","tertiaryColor":"#ffffff","tertiaryBorderColor":"#D9CFBE","clusterBkg":"#F5EFE4","clusterBorder":"#D9CFBE","fontFamily":"Instrument Sans, system-ui, sans-serif","fontSize":"15px"},"flowchart":{"padding":18,"nodeSpacing":40,"rankSpacing":45}}}%%
flowchart TB
E1["Employee"] ~~~ E2["AI agent"] ~~~ E3["Another organisation"]
subgraph role["Case role: supplier"]
direction LR
F1["Request<br/>sees the request, accepts it"] --> F2["Delivery<br/>updates delivery details"] --> F3["Closed<br/>sees the history only"]
end
E1 & E2 & E3 -.-> roleScroll sideways to see the whole diagram.
Work together without giving your organisation away
Cases rarely stop at the edge of one organisation. A municipality works with an engineering firm, a hospital with a laboratory.
CaseFlows doesn't weld organisations' processes together. One organisation assigns a case role to another, and that role is the boundary. What the role can see and do, both sides agree together. How the other organisation carries out its role, with which people, systems or agents, is up to them.
So there are two kinds of freedom. How you carry out your role is yours. The agreements others rely on, such as a required check, you only change together.
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#FFFBF3","primaryBorderColor":"#211D18","primaryTextColor":"#211D18","lineColor":"#211D18","secondaryColor":"#FCE3D2","secondaryBorderColor":"#EC6A22","tertiaryColor":"#ffffff","tertiaryBorderColor":"#D9CFBE","clusterBkg":"#F5EFE4","clusterBorder":"#D9CFBE","fontFamily":"Instrument Sans, system-ui, sans-serif","fontSize":"15px"},"flowchart":{"padding":18,"nodeSpacing":40,"rankSpacing":45}}}%%
flowchart TB
subgraph A["Municipality"]
C["Shared case<br/>and caseflow"]
end
R{{"Case role: structural review<br/>agreed by both sides"}}
subgraph B["Engineering firm"]
direction LR
B1["Own people"]
B2["Own systems and agents"]
B3["Own way of working"]
end
C <--> R
R <--> BScroll sideways to see the whole diagram.
A case role is not a service
If something can run on its own, outside a case, it is a service: you ask for something and get a result. A case role exists only within a case. Whoever fills it takes part in a shared reality: sees what changes, acts at the right moment, and leaves a trail.
Services are still needed. A CRM, a planning system or an AI model becomes a service a role uses. The caseflow organises the work. The back office and AI support it. Not the other way round.
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#FFFBF3","primaryBorderColor":"#211D18","primaryTextColor":"#211D18","lineColor":"#211D18","secondaryColor":"#FCE3D2","secondaryBorderColor":"#EC6A22","tertiaryColor":"#ffffff","tertiaryBorderColor":"#D9CFBE","clusterBkg":"#F5EFE4","clusterBorder":"#D9CFBE","fontFamily":"Instrument Sans, system-ui, sans-serif","fontSize":"15px"},"flowchart":{"padding":18,"nodeSpacing":40,"rankSpacing":45}}}%%
flowchart LR
subgraph case["Case"]
direction LR
R1["Case role"] --- R2["Case role"]
end
R1 -- uses --> S1["CRM"]
R2 -- uses --> S2["Planning"]
R2 -- uses --> S3["AI model"]Scroll sideways to see the whole diagram.
What runs today, and where we’re heading
Runs today: cases, case roles and caseflows in production, with the server enforcing what each role may see and do in each phase; a role held by another organisation, under an agreement both platforms confirm.
Where we’re heading: the partner running its part as a caseflow of its own behind the role. What has been measured across the boundary, and what hasn’t yet, is set out in Working across organisations.
Next: from intent to a running system
How the way you work is captured in an open specification, and why CaseFlows runs that specification instead of translating it into code.
Read on →