A binding written agreement that can constrain what a product team is allowed to build or change after signing.
A contract is the binding agreement between two parties: an MSA, an NDA, a DPA, a SOW. It sets out who promised what, on what terms, and what happens when a promise breaks. A commitment signed earlier can rule out a featureFeatureProduct SpecificationA product capability or featureView reference → a product team wants to ship later, which is why a contract acts as a constraintConstraintStrategyA limit, requirement, or ceiling the product must respect, whether a self-imposed principle or an externally imposed boundaryView reference → on the roadmapRoadmapProduct SpecificationA strategic plan of features and milestonesView reference →.
The modern SaaS deal is rarely one document. It is a modular stack with a Master Services Agreement as the foundation, carrying the long-lived terms: liability, intellectual property, confidentiality, dispute resolution. Transaction-specific documents hang off it. A Statement of Work names the deliverables, timeline, and price for one engagement. A Data Processing Agreement, required under GDPR and similar regimes, governs how personal data is handled. A Service Level AgreementService Level AgreementCustomer SuccessA service level agreement with customersView reference → sets the uptime and response commitments. A Non-Disclosure Agreement protects information shared before any deal is struck (CloudNuro, SaaS Agreement Terms).
Rose makes a related point from the founder side: the legal agreements a startup signs in its earliest months — NDAs before a deal exists, founder accords locking in equity and roles, investor documentation packages governing how interests interact — are not administrative overhead but structural commitments that govern what the company can do later. Getting them wrong cheaply at formation, Rose argues, reliably produces costs an order of magnitude larger when a later deal or option event surfaces an ambiguity. By that reading, the NDA that "protects information shared before any deal is struck" is not a pre-contract formality but the first link in the same chain that runs through an MSA to an SOW.
This modular shape exists to front-load the hard negotiation. Settle liability and IP once in the MSA, and every later SOW becomes a short document about scope and money. The structure introduces its own hazard: when an SOW and the MSA conflict, which wins? The fix is an order-of-precedence clause, typically stating that MSA terms govern unless an SOW explicitly overrides a named section, so that a project document cannot quietly undo a core protection (Promise Legal, SaaS Agreements).
A B2B SaaS vendor signs an MSA with an enterprise customer. Two terms in it shape the product for years. The liability cap limits the vendor's exposure to twelve months of fees, which the finance team relies on when pricing the deal. A data-residency commitment promises that customer data stays in the EU. Eighteen months later the product team wants to move analytics processing to a cheaper US region. The MSA blocks it for this account. The decisionDecisionStrategyA recorded decision with context, rationale, and consequencesView reference → is no longer purely technical; it is governed by a clause someone signed, and changing it means renegotiating with the customer. The contract has become a constraint on the roadmap, which is exactly why it belongs in the same map as the features it touches.
contract_governs_partnershipContractgovernsPartnershipcross-domain bridges the two.In the Unified Product Graph the contract is the anchor of the legal domain. Three edges define it: ContractcontainsContract Clausehierarchy breaks it into its binding provisions, contract_contains_contract_clauseLegal Entitybound byContracthierarchy records which entity carries the obligation, and legal_entity_bound_by_contractContractgovernsPartnershipcross-domain bridges into the business modelBusiness ModelBusiness ModelThe business model canvas or definitionView reference →. The domain's standing warning is the contract with no clauses, because a contract described only at the top level hides exactly the commitments a product decision needsNeedUserA user need, pain, desire, or constraintView reference → to check against.contract_governs_partnership
Type-specific fields on BaseNode
contract_typeenumClassification of the contract
start_datestringContract effective start date (ISO format)
end_datestringContract end or expiration date (ISO format)
valuenumberTotal monetary value of the contract
currencystringCurrency code for the contract value
auto_renewalenumHow the contract renews at expiration
renewal_termstringDuration of each renewal period
notice_periodstringNotice period required for termination or non-renewal
governing_lawstringJurisdiction whose laws govern the contract
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
6 phases, initial: draft
3 edge types connected to this entity.
legal_entity_bound_by_contractcontract_contains_contract_clausecontract_governs_partnership