Skip to main content

Cross-Feature Link Matrix

Purpose

This document defines the canonical allowed-link matrix between the main client-work entities.

Use it to answer:

  • which entities may link directly
  • how strong that link should be
  • why the link exists
  • what the link must not imply

Read this together with client-operating-model.md.

  • required ownership the relationship is part of the core data model
  • optional context the relationship is valid but not mandatory
  • workflow handoff the relationship explains how one record informed or produced another
  • projection only the relationship exists at the surface/runtime level, not as independent ownership
  • forbidden direct link the product should avoid using this as a canonical first-wave relation

Portal Meaning In This Matrix

portal in this matrix means the portal-facing runtime and visibility context granted to the client through portal access grants.

It does not mean a separate business-owned record that competes with org truth.

Canonical Pair Matrix

PairStrengthWhy the link existsDo not use it for
client account ↔ projectrequired ownershipprojects belong to a client relationshipcreating project-owned clients
client account ↔ quoterequired ownershipquotes belong to one commercial client relationshipmaking quotes free-floating sales objects
client account ↔ contractrequired ownershipcontracts belong to one legal/commercial client relationshiptreating contracts as generic workspace files
client account ↔ invoicerequired ownershipinvoices belong to one client's billing historymaking invoices project-owned by default
client account ↔ subscriptionrequired ownershiprecurring service belongs to the client account firstrequiring a project before a subscription can exist
client account ↔ drive itemrequired ownershipevery shared or internal artifact belongs to a client workspaceusing the global drive as the ownership anchor
client account ↔ portalrequired ownershipportal access is granted per client companyusing portal identity as the client record
project ↔ quoteoptional contexta quote may price scoped project workforcing every quote to pick a project
project ↔ contractoptional contexta contract may govern one scoped deliverable/projectmaking project linkage mandatory for all contracts
project ↔ invoiceoptional contextan invoice may bill project work when helpful for clarity/reportingforcing project linkage for routine billing
project ↔ subscriptionoptional contexta subscription may reference the service context it supportsturning subscriptions into project-owned records
project ↔ drive itemoptional contextfiles and docs may be easier to retrieve when project-linkedmaking project context required for normal collaboration
project ↔ portalprojection onlythe portal shows project truth through the selected client grantcreating separate portal-owned project records
quote ↔ contractworkflow handoffan accepted quote may lead to a contractcollapsing offer and agreement into one record
quote ↔ invoiceworkflow handoffan accepted quote may produce one or more invoicesassuming all invoices must have quotes
quote ↔ subscriptionworkflow handoffan accepted quote may create a recurring serviceassuming subscriptions require a quote forever
quote ↔ drive itemforbidden direct linkquotes are commercial records, not collaboration-owned artifactsstoring quote ownership in Drive
quote ↔ portalprojection onlyportal may eventually show selected quote state when the client needs ittreating portal quote views as a separate quote system
contract ↔ invoiceoptional contextan invoice may relate to contracted work or milestonesauto-deriving invoice truth purely from contract state
contract ↔ subscriptionoptional contexta contract may govern a recurring commercial relationshipmaking contract linkage mandatory for every subscription
contract ↔ drive itemforbidden direct linkcontract attachments should remain contract-owned, not Drive-ownedputting signed PDFs back into shared Drive ownership
contract ↔ portalprojection onlyportal may show governed contract state and contract-owned attachmentsusing portal files as contract truth
invoice ↔ subscriptionworkflow handoffsome invoices are produced from recurring service statecollapsing one-time invoice state into subscription status
invoice ↔ drive itemforbidden direct linkinvoices are finance records with Stripe/native artifact pathsorganizing invoice ownership through Drive folders
invoice ↔ portalprojection onlyportal should expose invoice state and pay/download actionsmaking the portal the finance source of truth
subscription ↔ drive itemforbidden direct linkrecurring billing should not be organized as collaboration storagestoring plan/service truth as Drive artifacts
subscription ↔ portalprojection onlyportal should show active service and renewal statecreating portal-only subscription truth
drive item ↔ portalprojection onlyshared items appear in portal when visibility permitsmaking portal-specific copies of drive items

Strong Default UI Adjacency

The matrix above should drive UI adjacency rules.

Because the client account is the anchor, its detail workspace may intentionally surface:

  • projects
  • people and portal access
  • quotes, contracts, invoices, subscriptions
  • drive items and requests
  • activity across those tracks

Project detail should always surface:

  • client account
  • project updates
  • time

Project detail may surface when explicit:

  • linked contracts
  • linked drive items
  • linked invoice context

Project detail should not imply that subscriptions or invoicing require projects.

Invoice and subscription pages should stay commercially typed

Invoice and subscription detail should always surface:

  • client account
  • billing actions

They may surface when explicit:

  • linked project context
  • linked quote handoff
  • linked contract context

They should not surface arbitrary drive links just because files exist somewhere for that client.

Drive pages should stay collaboration-typed

Drive detail/list surfaces should always surface:

  • client account
  • project context if present
  • visibility, uploader, and request context

They should not surface contracts, invoices, or subscriptions as if Drive owns them.

Portal pages should show projections, not alternate ownership

Portal pages may expose:

  • projects and updates
  • billing state
  • shared files and docs
  • company-specific access state

They should not create alternate primary records or alternate status models.

Design Guardrails

If a proposed new link does any of these, it is probably wrong:

  • makes project linkage mandatory for billing
  • makes Drive the fallback owner of commercial artifacts
  • creates a portal-only version of an existing org record
  • compresses delivery, legal, and finance states into one field
  • removes the client account as the obvious anchor