Skip to main content
Wildo.ai Coming soon

The product definition

Decide what belongs together

Define business areas, resource ownership and tenancy before composing their implementation.

Sales owns the Customer resource; Support references it.

Decide what belongs together

Business objects need a clear home. A domain plan names the business areas, the records they own and the records they use from elsewhere.

It also records the application’s tenancy choice. Those decisions guide the project structure while keeping shared references distinct from duplicated ownership.

Example — Share relationship records across the product

A customer-management module owns contacts and companies. Other modules can use those records while the plan keeps their primary ownership clear.

For engineers

Read a concrete module declaration

This module entry comes from Wonder CRM’s domain plan; the surrounding snapshot and other modules are omitted:

    {
      "relatedModuleId": "relationship-records",
      "purpose": "Maintain the shared contact and company records that give workspace teammates a common view of customer and prospect relationships.",
      "businessCapability": "Shared customer relationship record management",
      "businessDomain": "Customer relationship management",
      "primaryActors": [
        "Founder or sales lead",
        "Customer relationship owner"
      ],
      "mainResources": [
        "contact",
        "company"
      ],
      "supportingResources": [
        "interaction"
      ],
      "integrationSurfaces": [
        "web workspace",
        "customer record views"
      ]
    },

mainResources establishes the module’s primary records. supportingResources describes records it uses without turning every reference into another owning module. Actors and integration surfaces explain the business context for that decomposition.

Keep the plan distinct from runtime declarations

DecisionWhat still follows
Resource ownershipCompose and register the resource in the owning module
Relationship intentImplement the actual relationship declaration and behavior
TenancyConfigure the application’s scope and access behavior
Module purposeImplement the capabilities that fulfill it

Relationship cardinality and ownership intent do not themselves configure access permissions or deletion behavior. Those belong in the application’s actual declarations and implementation.

Carry tenancy into production work

Choose the primary scope for the application’s records:

ChoiceIntended use
DomainPlanTenancyModel.ORGANIZATIONSPeople collaborate inside shared organizations or workspaces
DomainPlanTenancyModel.USERSEach person’s records belong to that individual

This selected member of a domain plan chooses shared workspaces:

// Import DomainPlanTenancyModel from @wildo-ai/saas-specifications.
tenancy: DomainPlanTenancyModel.ORGANIZATIONS,

The foundation uses a valid plan’s tenancy first. If it is absent, provide the explicit primary-scope answer, organizations or users; neither source means the foundation refuses to guess. Scope selection guides composition. Resource access rules still need their own declarations and verification.

Register the plan through the application’s domain-plan export and inspect the compiled artifact view. Review the resulting composition and relationships against the intent; the plan is product architecture, not the live resource registry.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.