Skip to main content

People and Budget

The People and Budget layer extends the Canonical Business Context Model with the who and how much axes needed by AI Dev Cost — attributing engineering AI spend up a people hierarchy and comparing it against spending envelopes.

Where the rest of the BCM answers "what is being built and for whom," this layer answers "who is building it" and "what are they allowed to spend."


Where it fits

This layer lives in the Business Layer of the Canonical Business Context Model — the same layer as Product, Customer, and their groupings — and is reachable by the same Type Function and Module roots as the existing BCM entities.

It introduces two kinds of nodes:

  1. A people hierarchyEngineer → Team → Organization
  2. A Budget envelope that can be scoped to any node in the hierarchy, or to a Product

Element Types

Element TypePurpose
OrganizationTop-level tenant. Roots the people hierarchy; budgets and spend roll up here.
TeamGroup of engineers accountable for Products. Primary unit for AI Dev Cost budgets, adoption metrics, and spend-vs-velocity reports.
EngineerIndividual developer. Leaf of the hierarchy and unit of attribution for LLM usage, seats, and per-developer budgets.
BudgetSpending envelope over a period (monthly / quarterly / annual), attached to an Engineer, Team, Product, or Organization.

Engineer identity fields

Engineer records carry the identity fields needed to join activity from external systems:

  • email (required) — the join key across tools
  • gitHubLogin — attribute commits and PRs
  • jiraAccountId — attribute tickets and sprint work
  • anthropicSeatId, copilotSeatId — line up seat billing with usage

Budget properties

Budgets are intentionally scope-agnostic. Scope is expressed via an edge, not a property, so the same Budget shape works everywhere.

PropertyNotes
budgetTypemonthly, quarterly, annual — cadence over which the budget resets
amount, currencyAmount in ISO-4217 currency (default USD)
periodStart, periodEndPeriod boundaries
alertThresholdPctPercentage of budget consumed that should fire an alert (e.g., 80)
hardCaptrue if overages should block further spend; false for soft target
statusactive, paused, closed

Relationships

Hierarchy edges (category HIERARCHY / MEMBER_OF)

EdgeFrom → To
teamBelongsToOrganizationTeam → Organization
engineerMemberOfTeamEngineer → Team

Product ownership (category BUSINESS_RELATIONSHIP)

EdgeFrom → To
teamOwnsProductTeam → Product

This edge fills the gap between the people hierarchy and the existing product hierarchy — it is what lets AI Dev Cost roll spend up to a Product.

Budget scope (category BUSINESS_RELATIONSHIP)

Budget scope uses typed appliesTo* edges rather than a polymorphic scope enum, matching the conventions used elsewhere in the BCM.

EdgeFrom → To
budgetAppliesToEngineerBudget → Engineer
budgetAppliesToTeamBudget → Team
budgetAppliesToProductBudget → Product
budgetAppliesToOrganizationBudget → Organization
budgetOwnedByBudget → Engineer (the approver / accountable owner)

Rollup patterns

With this layer in place, AI Dev Cost queries fall out naturally:

  • Engineer → Team → Organization — walk the hierarchy edges to aggregate spend or seat count at any level.
  • Team → Product — follow teamOwnsProduct to roll engineering spend into product-level P&L.
  • Budget utilization — for any Budget, traverse its appliesTo* edge to the scope node, aggregate spend beneath that node, and compare against amount × period.
  • Alerts — compare aggregated spend against alertThresholdPct and hardCap to drive the AI Dev Cost insight pipeline.