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:
- A people hierarchy —
Engineer → Team → Organization - A Budget envelope that can be scoped to any node in the hierarchy, or to a
Product
Element Types
| Element Type | Purpose |
|---|---|
| Organization | Top-level tenant. Roots the people hierarchy; budgets and spend roll up here. |
| Team | Group of engineers accountable for Products. Primary unit for AI Dev Cost budgets, adoption metrics, and spend-vs-velocity reports. |
| Engineer | Individual developer. Leaf of the hierarchy and unit of attribution for LLM usage, seats, and per-developer budgets. |
| Budget | Spending 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 toolsgitHubLogin— attribute commits and PRsjiraAccountId— attribute tickets and sprint workanthropicSeatId,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.
| Property | Notes |
|---|---|
budgetType | monthly, quarterly, annual — cadence over which the budget resets |
amount, currency | Amount in ISO-4217 currency (default USD) |
periodStart, periodEnd | Period boundaries |
alertThresholdPct | Percentage of budget consumed that should fire an alert (e.g., 80) |
hardCap | true if overages should block further spend; false for soft target |
status | active, paused, closed |
Relationships
Hierarchy edges (category HIERARCHY / MEMBER_OF)
| Edge | From → To |
|---|---|
teamBelongsToOrganization | Team → Organization |
engineerMemberOfTeam | Engineer → Team |
Product ownership (category BUSINESS_RELATIONSHIP)
| Edge | From → To |
|---|---|
teamOwnsProduct | Team → 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.
| Edge | From → To |
|---|---|
budgetAppliesToEngineer | Budget → Engineer |
budgetAppliesToTeam | Budget → Team |
budgetAppliesToProduct | Budget → Product |
budgetAppliesToOrganization | Budget → Organization |
budgetOwnedBy | Budget → 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
teamOwnsProductto 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 againstamount× period. - Alerts — compare aggregated spend against
alertThresholdPctandhardCapto drive the AI Dev Cost insight pipeline.