Skip to main content

Decision Spaces

Decision Spaces organize your decisions into meaningful groups that mirror your organization's structure. As your team grows, spaces prevent the decision graph from becoming noisy by scoping decisions to the right audience while preserving cross-team visibility.

Why Spaces?

Without organizational scoping, a flat list of decisions becomes overwhelming at scale:

ScaleProblemSpaces Solution
1 teamNone - everything is visibleOptional grouping
5 teamsNoise - 80% of decisions irrelevant to youFilter by your spaces
20+ teamsInvisible conflicts - Team A and B make contradictory choicesCross-space edges surface hidden dependencies
50+ teamsStrategic drift - no one knows if teams are executing on org-wide decisionsCascade view tracks alignment

Space Hierarchy

Spaces form a tree structure with up to 4 levels of nesting:

Organization (tenant root)
-- Engineering
| -- Platform Team
| | -- Q1 Migration Initiative
| -- Product Team Alpha
| -- Product Team Beta
-- Security
-- Architecture (cross-cutting)

Space Types

TypeLevelExample
OrganizationTop-level"Acme Corp Engineering"
DepartmentDivision or group"Platform", "Security"
TeamWorking team"Platform Team", "Mobile Team"
ProjectTime-bound effort"Q1 Migration", "Auth Rewrite"
InitiativeCross-team program"Zero Trust Rollout"

Creating Spaces

Manual Creation

Create spaces from the Settings page or via API:

POST /spaces
{
"name": "Platform Team",
"slug": "platform-team",
"space_type": "team",
"parent_id": "<engineering-space-id>",
"description": "Core infrastructure and developer experience",
"color": "#6366f1"
}

Slugs must be lowercase alphanumeric with hyphens (e.g., platform-team).

Auto-Assignment from Connectors

When you map connector channels to spaces, decisions captured from those channels are automatically assigned:

ConnectorMapping SourceExample
SlackChannel#platform-team maps to Platform Team space
JiraProject key patternPLAT-* maps to Platform Team space
GitHubRepositoryorg/platform-service maps to Platform Team space
TeamsChannel"Platform Engineering" maps to Platform Team space
LinearTeam"Platform" maps to Platform Team space

Configure mappings in Settings > Connector Mappings or via the API.

Decision Membership

Decisions can belong to multiple spaces simultaneously. This is common for cross-cutting decisions:

  • "Adopt OpenTelemetry for all services" might belong to both Platform Team and Architecture spaces
  • A security audit finding might belong to Security and Product Team Alpha

Membership Types

TypeHow It's Created
Auto-assignedConnector mapping matched the decision's source channel/project
ManualUser explicitly added the decision to a space

Cross-Space Edges

The most valuable relationships in your decision graph are often the ones that cross space boundaries. Align highlights these automatically:

Platform Team                    Product Team Alpha
┌──────────────────┐ ┌──────────────────┐
│ "Deprecate REST │───relates──│ "Build new API │
│ gateway v1" │ │ client for v2" │
└──────────────────┘ └──────────────────┘

Cross-space edges reveal:

  • Hidden dependencies - Team A's decision affects Team B's roadmap
  • Conflicts - Two teams making contradictory technology choices
  • Alignment - Multiple teams independently converging on the same approach
  • Duplication - Teams building the same thing without knowing

Viewing Cross-Space Edges

The Graph View highlights cross-space edges with distinct colors. Filter by space to see how your team's decisions connect to the broader organization.

The API also exposes cross-space edges directly:

GET /graph-analysis/cross-space-edges?limit=100

Returns edges where the source and target decisions belong to different spaces, along with their space names and relationship type.

Space-Scoped Analysis

All of Align's analysis features can be scoped to a specific space:

FeatureTenant-WideSpace-Scoped
Health ScoreOverall org healthHealth of decisions within a space
Graph AnalysisFull decision graphSubgraph within a space + cross-space edges
Temporal AnalysisOrg-wide velocityTeam velocity and anomalies
Drift DetectionAll drift signalsDrift within a space's decisions
Impact SimulationFull blast radiusBlast radius within space context

Use the space-scoped endpoints (e.g., /spaces/:spaceId/health, /spaces/:spaceId/graph, /spaces/:spaceId/velocity) to scope analysis results to a specific space.

Permissions

Space access is controlled through space membership roles:

RoleCapabilities
OwnerFull control - manage members, settings, delete space
MemberView decisions and tag decisions to the space

Additional access can come from organization-level roles and explicit permission grants. For example, an org Admin has access to all spaces regardless of space membership.

API Reference

EndpointMethodDescription
/spacesGETList all spaces (flat)
/spacesPOSTCreate a space
/spaces/:idGETGet space details
/spaces/:idPUTUpdate a space
/spaces/:idDELETEDelete a space
/spaces/treeGETGet spaces as hierarchical tree
/spaces/:id/healthGETHealth score for space
/spaces/:id/graphGETGraph analysis scoped to space
/spaces/:spaceId/velocityGETTemporal analysis scoped to space
/graph-analysis/cross-space-edgesGETCross-space relationship edges
/spaces/benchmarksGETCompare spaces side-by-side