Skip to content

Policies

Every financial number follows a declared rule, so two readers of one ledger get one answer.

A Policy is the declared rule behind a number or a recurring choice, such as how revenue is recognized or how shared Cost splits. The Studio supplies every default, and a Startup overrides one by Decision.

Why numbers need declared rules

Every financial number is a projection of Entries, and most projections involve a choice. Is a per-lead fee recurring revenue, and which Startup pays for a shared support inbox? Two honest people can answer differently.

A Policy writes the answer down once, in a form code applies. Every number then cites the Policy version it used, so two reports that disagree show why.

The defaults

A new Startup inherits these Policies. Each one is a record with its own history.

PolicyDefault rule
revenue.recognitionOne-time sales earn on delivery, Subscriptions day by day, outcomes on acceptance, credits on use
mrr.usageWindowUsage revenue enters MRR at its trailing 30-day run rate
mrr.outcomeFeesOutcome fees stay out of MRR and report as outcome revenue
revenue.outsideOutside means no shared owner, Studio account, Agreement, or sibling chain
transfer.priceA sale to a sibling books at the sibling Offer's list Price
cost.allocationShared Cost splits by metered use, else by share of outside revenue
ltv.horizonLifetime value counts at most 24 months of contribution
model.choiceEach task class runs the cheapest model that passes its evaluations, under a cost cap
approval.ruleGuards check every Action; above a stakes threshold, a Human answers

A cost cap is a Limit, and a stakes threshold is a Setting. The Policy says how the choice is made; the Setting holds the value it reads.

Changing a Policy

To change a Policy, record a Decision with the reason and update the rule. The new version applies from the open Period forward.

TypeScript
import { $ } from 'startup-builder'

await $.Policy.update({
  id: 'mrr.outcomeFees',
  rule: 'Lead fees enter MRR at their trailing 90-day run rate.',
})

A locked Period never changes. Its reports keep the numbers computed under the Policy in force when it locked. A new report under the new rule carries both version labels.

One ledger, many views

Any reader can apply a different Policy over the same Entries. An investor who counts lead fees as non-recurring sees that MRR, labeled as the investor's view. The ledger stays one; only the projection differs.

Example

A Directory of wedding photographers charges 200 photographers $15 a month and $40 per booked lead. Under the defaults its MRR is $3,000, and lead fees report apart at $2,400 a month. After six steady months it changes mrr.outcomeFees, and MRR reads $5,400 under version 2, with the Decision linked.

Next