Start with the work people actually do
I own a service business and architect software. That combination keeps pulling me toward one question: what does a person need to know to take the next useful action?
A customer asks for a new location to be set up. That request might become a sales opportunity, a project, several equipment purchases, assigned devices, and future support work. Each step has its own requirements. All of them belong to the same business story.
When I design an application, I want that story to survive the handoff. The person assigning a laptop should be able to see which project needs it. The person opening the project should understand the customer commitment. Someone handling a later support request should have the equipment history available.
That is the foundation of the connected CRM, project, inventory, and service workflows I care about building.
Give each record a clear home
Shared context starts with clear ownership. A customer record belongs to the customer domain. Inventory owns the facts about an asset. A project owns its tasks, milestones, and delivery state.
Those boundaries matter because several screens may present the same information. A customer name could appear in a project board, an asset panel, and an invoice. Editing it should have a predictable meaning. I want one authoritative customer record and explicit relationships connecting the other records to it.
My preference for structured business data is relational modeling with stable UUID identifiers. The relationship itself should be understandable: this asset is assigned to this customer, this task belongs to this project, this project fulfills this agreement.
People should be able to explain the model without having to reverse engineer whatever the latest screen happens to show.
Make a handoff an explicit action
A connection between records becomes useful when the application can act on it. Converting a customer request into a project should preserve the relevant description, relationships, and ownership while asking for information that the project actually needs.
I look closely at what happens when someone repeats the action, loses their connection, or opens an old browser tab. The application needs a clear answer about whether the project was created and which record it created. Otherwise, a convenient button becomes a source of duplicate work.
Inventory introduces another practical question: what happens if two people try to assign the same available asset? The interface can explain the situation, but the backend must protect the assignment. A workflow is only as useful as the state it leaves behind.
These are small details from the user's perspective. They are substantial parts of the engineering.
- Customer identity
- Project relationship
- Available asset
- Assignment + activity
assign(assetId, customerId, expectedVersion)
if currentVersion !== expectedVersion:
preserve current assignment
return conflictIllustrative concurrency boundary. The assignment must be protected where the state is written; a disabled interface button is not sufficient.
Put context close to the decision
Connected data does not require every screen to contain everything. Crowding every relationship into the main view makes the next action harder to find.
I favor focused workspaces with nearby access to relationships. A project can remain the main view while a side panel shows customer properties, related equipment, notes, and recent activity. The user stays oriented while answering a specific question.
Context also needs permission boundaries. A relationship to a customer does not automatically give every employee access to every related document or financial record. The application has to apply the user's role and tenant scope when it retrieves the information and when an action is attempted.
Useful visibility and controlled access have to be designed together.
Build the smallest complete journey
The strongest starting point is often one end-to-end journey: select a customer, create a project, assign an asset, and open the resulting records from either direction.
That journey reveals missing relationships, unclear ownership, confusing labels, and failure states earlier than a collection of disconnected screens. It also gives the business something concrete to evaluate.
For me, the practical takeaway is simple: pick a real handoff your team performs repeatedly and follow its context all the way through. Every time someone has to retype, search again, or ask another person what happened, there may be an opportunity for the software to carry more of the work.