5 min read
Designing for complex problems
Breaking down complex problems and establishing clear relationships between recurring objects in inerfaces.

Understanding Complexity
Interfaces often become complicated when we design screens before understanding the objects that shape them.
Most product complexity isn’t visual, it’s structural. It comes from unclear relationships between users, content, and actions.
When you start with layouts instead of logic, every new feature becomes an exception, not a pattern.
Mapping the Building Blocks
Consider a product like Airbnb. It has listings, hosts, guests, bookings, messages, and reviews.
Each of those is an object, a recurring, recognizable piece of information with its own attributes and relationships.
A host owns many listings.
A guest can book many listings.
Each booking generates a message thread and a review.
When we map those relationships early, the interface almost designs itself. You know which data belongs where, and which interactions need to exist.
This approach is called Object-Oriented UX (OOUX), a framework developed by Sophia Prater. It borrows the logic of object-oriented programming and applies it to design.
Instead of starting with pages or flows, we start with objects, relationships, and actions.
Structuring the Logic
OOUX works especially well for complex, data-dense products such as dashboards, marketplaces, or project tools where objects repeat across views.
The core process usually follows four steps:
Identify objects
List every noun your product relies on: project, task, user, team, goal, report.Define relationships
Show how those objects connect: a user owns tasks, a task belongs to a project, a report summarizes goals.Clarify attributes
Note what details each object contains such as titles, metrics, timestamps, and permissions.Map actions
Identify what users can do to or with each object such as create, assign, duplicate, archive.
When you visualize this model before any UI design, you uncover edge cases early and reduce rework later.
You are effectively designing the system’s grammar before writing its sentences.
Designing for Clarity
OOUX is not just a framework, it is a way to see complexity as structure rather than chaos.
When you think in objects, you stop reacting to problems and start designing from principles.
Good interfaces reflect the logic of their objects.
Complexity only becomes confusing when relationships are hidden.
By grounding design in object relationships, you create systems that scale gracefully, adding clarity instead of clutter with every new feature.
Previous Article:
Let’s build something that lasts
Work with Baseline to turn vision into design that drives real impact.
5 min read
Designing for complex problems
Breaking down complex problems and establishing clear relationships between recurring objects in inerfaces.

Understanding Complexity
Interfaces often become complicated when we design screens before understanding the objects that shape them.
Most product complexity isn’t visual, it’s structural. It comes from unclear relationships between users, content, and actions.
When you start with layouts instead of logic, every new feature becomes an exception, not a pattern.
Mapping the Building Blocks
Consider a product like Airbnb. It has listings, hosts, guests, bookings, messages, and reviews.
Each of those is an object, a recurring, recognizable piece of information with its own attributes and relationships.
A host owns many listings.
A guest can book many listings.
Each booking generates a message thread and a review.
When we map those relationships early, the interface almost designs itself. You know which data belongs where, and which interactions need to exist.
This approach is called Object-Oriented UX (OOUX), a framework developed by Sophia Prater. It borrows the logic of object-oriented programming and applies it to design.
Instead of starting with pages or flows, we start with objects, relationships, and actions.
Structuring the Logic
OOUX works especially well for complex, data-dense products such as dashboards, marketplaces, or project tools where objects repeat across views.
The core process usually follows four steps:
Identify objects
List every noun your product relies on: project, task, user, team, goal, report.Define relationships
Show how those objects connect: a user owns tasks, a task belongs to a project, a report summarizes goals.Clarify attributes
Note what details each object contains such as titles, metrics, timestamps, and permissions.Map actions
Identify what users can do to or with each object such as create, assign, duplicate, archive.
When you visualize this model before any UI design, you uncover edge cases early and reduce rework later.
You are effectively designing the system’s grammar before writing its sentences.
Designing for Clarity
OOUX is not just a framework, it is a way to see complexity as structure rather than chaos.
When you think in objects, you stop reacting to problems and start designing from principles.
Good interfaces reflect the logic of their objects.
Complexity only becomes confusing when relationships are hidden.
By grounding design in object relationships, you create systems that scale gracefully, adding clarity instead of clutter with every new feature.
Previous Article:
Let’s build something that lasts
Work with Baseline to turn vision into design that drives real impact.
5 min read
Designing for complex problems
Breaking down complex problems and establishing clear relationships between recurring objects in inerfaces.

Understanding Complexity
Interfaces often become complicated when we design screens before understanding the objects that shape them.
Most product complexity isn’t visual, it’s structural. It comes from unclear relationships between users, content, and actions.
When you start with layouts instead of logic, every new feature becomes an exception, not a pattern.
Mapping the Building Blocks
Consider a product like Airbnb. It has listings, hosts, guests, bookings, messages, and reviews.
Each of those is an object, a recurring, recognizable piece of information with its own attributes and relationships.
A host owns many listings.
A guest can book many listings.
Each booking generates a message thread and a review.
When we map those relationships early, the interface almost designs itself. You know which data belongs where, and which interactions need to exist.
This approach is called Object-Oriented UX (OOUX), a framework developed by Sophia Prater. It borrows the logic of object-oriented programming and applies it to design.
Instead of starting with pages or flows, we start with objects, relationships, and actions.
Structuring the Logic
OOUX works especially well for complex, data-dense products such as dashboards, marketplaces, or project tools where objects repeat across views.
The core process usually follows four steps:
Identify objects
List every noun your product relies on: project, task, user, team, goal, report.Define relationships
Show how those objects connect: a user owns tasks, a task belongs to a project, a report summarizes goals.Clarify attributes
Note what details each object contains such as titles, metrics, timestamps, and permissions.Map actions
Identify what users can do to or with each object such as create, assign, duplicate, archive.
When you visualize this model before any UI design, you uncover edge cases early and reduce rework later.
You are effectively designing the system’s grammar before writing its sentences.
Designing for Clarity
OOUX is not just a framework, it is a way to see complexity as structure rather than chaos.
When you think in objects, you stop reacting to problems and start designing from principles.
Good interfaces reflect the logic of their objects.
Complexity only becomes confusing when relationships are hidden.
By grounding design in object relationships, you create systems that scale gracefully, adding clarity instead of clutter with every new feature.
Previous Article:
Let’s build something that lasts
Work with Baseline to turn vision into design that drives real impact.