Skip to content
AI Tokenomics Fundamentals Certification Now Available →

Tokenomics Foundation

Value Attribution Data Architecture: Schema and Explainer

A FOCUS-Aligned Data Model for Connecting Spend to Verified Business Value to Facilitate AI Economics, Token Economics, and Unit Economics

Version 0.1.7 (November 11, 2026)

1. Conceptual Overview

While most FinOps teams can track token and GPU bills, and engineering teams can trace model latency and token counts, most organizations lack a standardized, auditable bridge connecting metered consumption through verified business outcomes to realized business worth. While the recent explosion of AI usage has popularized the terms “tokenomics” and “AI economics” to represent this business process, it is an outgrowth of a broader process called “unit economics” across all technology spend.

There are five sets of data related to the presentation and performance of these activities:

Five datasets in the value attribution chain: Cost and Usage (metered bill), Telemetry (runtime activity), Tasks (deliverable), Outcomes (verified result), and Value (realized worth).
  1. Cost and Usage. “What was the metered cost of the services we consumed?”
  2. Telemetry. “What precise component activity drove that consumption?”
  3. Tasks. “What discrete bodies of work were those activities trying to accomplish?”
  4. Outcomes. “What verified business results did that work produce?”
  5. Value. “What was the attributed worth of those results?”

These datasets (described in more detail below) are cross-connected and cross-functional: multiple business units are involved in their creation and stewardship. These datasets must be joined, whether landed in a single place or assembled at query time (Section 2.1), and stewarded in cross-functional partnership in order to derive unit economics KPIs that can then influence the future use of technology. Organizations are currently performing these activities in disparate ways, and immature organizations lack an off-the-shelf architecture to quickly and progressively apply to their practice. The symptoms are familiar: AI dashboards that do not reconcile to the P&L, and a cost per task that remains hard to compute even when every request is logged, because the systems that hold cost and the systems that hold results share no join keys.

This paper proposes a standardized data model and high-level methodology for these five datasets that can be leveraged to enable value attribution and unit economics. These data structures are aligned with the terminology and semantics of the FinOps Open Cost and Usage Specification (FOCUS) and OpenTelemetry (OTel) specifications stewarded by the Linux Foundation. This is an early draft and will be revised as early adopters implement this solution and provide feedback. Once hardened, this schema will be proposed to the FOCUS working groups and the OTel Semantic Conventions SIG for inclusion in future releases. Section 1 is written for executive and finance readers; Sections 2 through 4 are written for the FinOps practitioners, platform and data engineers, and FP&A partners who will build and govern these datasets. Section 5 describes the roadmap.

These concepts aim to accelerate the adoption and maturity of tokenomics by helping organizations move beyond cost per token toward cost per outcome and, ultimately, cost per value.

1.1 Five Datasets

Each dataset represents a distinct stage in the unit economics value chain, stewarded by a different part of the organization:

1. Cost and Usage (Metered Bill)

Stewarded by FinOps.

This dataset captures the hourly or daily resource charges from cloud and AI model providers. While an upstream Invoice dataset tells Accounts Payable what is owed at the end of the month, Cost and Usage tracks the amortized rate and resource draw of shared API deployments, provisioned throughput units, and GPU clusters. However, because multiple workflows share the same underlying models and infrastructure, Cost and Usage alone cannot tell you which business activity drove the spend.

2. Telemetry (Runtime Activity)

Stewarded by Engineering (typically at the Platform or AI Gateway layer).

Telemetry acts as the sub-meter inside the factory. It records individual model invocations, prompt/response token counts, and cache hits, applying relative cost weights so that shared infrastructure spend from Cost and Usage can be fairly allocated down to specific workloads and tasks.

3. Tasks (Deliverables)

Also stewarded by Engineering (at the Application or Workflow layer).

A Task represents a complete, deliverable unit of work, such as completing a Jira sub-task, conducting a multi-step security investigation, or assembling a clinical review packet. Crucially, a Task operates at a higher level than an individual prompt or chatbot session: a single Task often spans multiple chat sessions, agent runs, and human iterations over hours or days. Tracking Tasks as cohesive bodies of work allows teams to measure in-flight technical yield vs. scrap: capturing all the dead-end sessions, failed retries, and human rework required to get a deliverable past technical inspection before it ever contributes to a final business Outcome.

4. Outcomes (Verified Results)

Stewarded by various Lines of Business (e.g., Customer Support, Sales Operations, Engineering).

An Outcome is a completed, verifiable result that delivers utility to a customer, employee, or business process. Depending on the workload, Outcomes may be recorded as state changes in a transactional system of record (such as a merged Pull Request in GitHub or a resolved ticket in Zendesk), behavioral conversions in product analytics (such as an AI-assisted checkout), or validated productivity cohorts (such as hours saved across active copilot users). Crucially, the Outcomes dataset doesn't count raw completions, which belong in Tasks; it verifies whether the result met its post-delivery quality and SLA bar, netting out "warranty recalls" like reverted code, re-opened tickets, or human rework time. An Outcome is a verified judgment recorded by the responsible line of business, whether by a person, a system, or both. It is recorded as soon as there is a result to report and may be updated while Pending. Once its settlement window (the post-delivery SLA period set by the line of business) closes and the line of business agrees the result, it is Settled and no longer changes. A problem that surfaces after settlement is recorded as an amending entry if it undoes the Outcome (such as a chargeback) or as a new Outcome if it is a separate event (such as a later incident), much like adjusting entries in a ledger. Value is booked against Settled Outcomes.

5. Value (Attributed Worth)

Co-governed by Finance (FP&A) and Executive Stakeholders.

The Value dataset translates net verified Outcomes into organizational worth. Depending on the workload and stakeholder lens, a single Outcome can be valued as hard financial savings (Booked Cost Reduction), notional capacity returned to employees (Reported Productivity), revenue margin expansion, or non-monetary strategic impact such as Risk Mitigation and compliance posture.

1.2 Standards and Sources

These five datasets build upon established open specifications and enterprise platforms that already exist inside most organizations:

DatasetGoverning Specification or System(s) of RecordTypical Source Technologies & Platforms
1. Cost and UsageFOCUS™ (FinOps Open Cost and Usage Specification, stewarded by the FinOps Foundation)Cloud billing exports (AWS CUR 2.0, Azure Cost Management, GCP BigQuery Billing), AI provider usage APIs (OpenAI, Anthropic, Bedrock, Vertex AI), and Kubernetes/GPU cost allocators (OpenCost, Kubecost).
2. TelemetryOpenTelemetry (OTel) (Semantic Conventions, stewarded by the CNCF / Linux Foundation)Open-source and enterprise AI/Agent Gateways & Routers (LiteLLM, Higress, agentgateway, Agent Router, Helicone, Kong AI Gateway, Portkey), hosted routers (OpenRouter Broadcast), OTel Collectors, LLM observability platforms (Langfuse, Arize Phoenix, Datadog, Grafana, Honeycomb), and inference engines (vLLM, TensorRT-LLM).
3. TasksAgentic Workflow & CI/CD State Schemas (plus emerging MCP / OTel Task baggage conventions)Agent harnesses and orchestration frameworks (LangGraph, CrewAI, Microsoft Agent Framework, LlamaIndex, OpenAI Agents SDK, Semantic Kernel, Claude Code / IDE harnesses, Temporal), developer/CI systems (GitHub Actions, Git hooks, Jira/Linear sub-tasks), and out-of-band evaluation pipelines.
4. OutcomesDomain Systems of Record (SoR) & ELT Data ContractsTicketing & CRM (Zendesk, Salesforce, ServiceNow), Source Control (GitHub, GitLab), Product & Web Analytics (Amplitude, Mixpanel, Segment), Order/Claims Ledgers (Stripe, SAP, Epic), and Workforce Telemetry / Survey Benchmarks (Viva Insights, Qualtrics).
5. ValueCorporate FP&A Rate Cards, GAAP/IFRS Rules & Actuarial Risk FrameworksEnterprise Resource Planning & General Ledgers (SAP, Workday, NetSuite), FinOps value registries, and GRC / cyber-risk quantification models (FAIR, internal actuarial tables).

These sources rarely share keys or formats, and some Task, Outcome, and Value data is not queryable at all, such as an outcome tracked only in an executive dashboard or a value objective set by leadership. Such records can be entered one at a time, with Value claims recording who attested to them, or gathered by an agent that asks their owners and writes the answers back in queryable form. Governance for how these records are populated belongs in the Implementation Playbook (Section 5).

1.3 Execution Hierarchy

To connect raw infrastructure spend to business value without forcing a single team to "grade its own homework," organizations need a shared anatomy for AI execution. Before examining database schemas, we must align on the five-level hierarchy that bridges executive portfolio management down to individual model invocations: Span -> Trace -> Task -> Outcome -> Workload.

Nested execution hierarchy: Span (atomic action) sits inside Trace (execution tree), then Task (deliverable), Outcome (business result), and Workload (capability). An optional loop shows an upstream Outcome, such as a merged pull request, triggering a downstream Task, such as release integration.

(An upstream Outcome may optionally trigger a downstream Task. See Section 1.3.1 for more information.)

The most granular entities (Span and Trace) are OTel terms that capture runtime engineering observability and aggregate into the Telemetry dataset. Because OTel is already the industry standard for tracing cloud-native software, extending it into unit economics allows organizations to build on telemetry their engineering teams already collect, wrapping those technical traces inside the top three business layers (Task, Outcome, and Workload).

01

Span (Atomic Action)

A single invocation of an underlying model endpoint, embedding API, vector database, or tool call where raw tokens (Input, Output, CacheRead, CacheWrite) and latency are metered. Multiple spans are aggregated by time window and resource into the Telemetry dataset.

02

Trace (Execution Tree)

A single end-to-end runtime execution loop or conversational turn triggered within an application or agent orchestrator. In OpenTelemetry, a Trace is a tree of parent and child Spans (for example, a single user prompt that triggers a vector database lookup span, a guardrail check span, and two model inference spans).

03

Task (Deliverable)

Multiple Traces, chat sessions, and agent runs are aggregated into a cohesive Task (such as completing a Jira sub-task or investigating an insurance claim), where work is inspected against a technical quality bar to separate productive yield from in-flight scrap.

04

Outcome (Business Result)

One or more completed Tasks culminate in an externalized business Outcome (such as a merged Pull Request, a deflected support ticket, or a checkout conversion) that is verified against post-delivery SLA and quality standards.

05

Workload (Business Capability)

Rather than existing as a separate table, a Workload is the overarching AI product, service, or initiative being measured (such as an AI Coding Assistant, a Customer Support Bot, or a Real-Time Fraud Engine). As we will discuss later, stamping a WorkloadId and TaskId onto telemetry allows FinOps, Engineering, and Finance to roll up total cost, scrap rates, verified outcomes, and net ROI at the executive portfolio level.

Business DomainSpanTraceTaskOutcomeWorkload
Software Engineering
(Feature SDLC)
1 call to a frontier model (12k cached input, 800 output tokens)1 IDE chat turn or agent loop (read schema -> write code -> run test)Complete Jira sub-task (PROJ-102) (Developer altitude); or merge PR & pass staging QA (rel_task_88) (Release altitude)Merged Pull Request (pr_401) surviving 24h without revert; or Shipped Production Release (rel_2026_11) surviving 14-day change-failure SLAcoding_agent (AI Feature Dev Assistant)
Software Engineering
(Code Migration)
1 AST-refactoring call on a frontier model1 automated file-upgrade & test-fix loopUpgrade legacy service module (mod_auth) to Java 21; passes regression suiteDecommissioned legacy runtime (app_legacy_04) running in production with zero P1 incidentsmigration_agent (Automated Modernization Bot)
Customer Operations1 tool-call inference on a small, fast model + 1 vector DB query1 conversational turn (look up invoice -> compute pro-rated credit)Execute billing dispute investigation & refund calculation across full case threadResolved support ticket (ticket_8821) with zero escalation or 24h re-opensupport_bot (Autonomous Billing Agent)
Revenue & E-Commerce1 reasoning pass on a self-hosted GPU cluster1 checkout risk evaluation request treeComplete multi-signal order risk assessment (velocity, device graph, payment)Cleared order (ord_99104) settled with zero chargeback in 30 dayscheckout_fraud (Real-Time Fraud Engine)
Healthcare Operations1 multimodal vision call to a multimodal model over 18-page PDF1 document OCR parse + clinical guideline RAG passAssemble complete clinical prior-authorization packet across patient chart & lab PDFsPrior-authorization (claim_5502) approved by payer on first submissionprior_auth (Clinical Prior-Auth Copilot)
Cybersecurity (SecOps)1 log-summarization call on a small, fast model1 sub-agent turn querying SIEM + endpoint telemetryCorrelate IAM logs & sandbox suspicious binary across full incident playbookAlert (inc_3319) closed as verified false-positive or contained with zero breachsoc_triage (Autonomous SOC Investigator)

1.3.1 Task to Outcome Relationship

Across enterprise value chains, what constitutes a finished Outcome versus an intermediate Task is relative to the organizational altitude and stage of the workflow being governed. In complex domains like the Software Development Lifecycle (SDLC), work naturally recurses across stages: an upstream team's verified Outcome frequently serves as the input trigger for a downstream process's Task (Task -> Outcome -> Task -> Outcome).

Micro-Altitude (Developer / PR Level)

Completing a Jira sub-task (PROJ-102) is a Task (inspected against an in-flight CI build gate) that culminates in a Merged Pull Request (pr_401) as its verified Outcome (evaluated against a 24-hour revert SLA).

Macro-Altitude (Release Engineering / SDLC Throughput Level)

From a VP of Engineering or CFO perspective, an individual merged Pull Request is merely an intermediate factory deliverable. At this altitude, pr_401 acts as the upstream trigger for a release integration Task (rel_task_88, where multiple merged PRs undergo staging QA and release-candidate verification) that culminates in Release-Level Throughput, a Shipped Production Release (rel_2026_11) surviving its 14-day change-failure-rate SLA, as the externalized business Outcome.

Organizations can model this flexibility in two ways: (1) Single-Altitude Selection, where the team defines Task and Outcome at the single governance altitude that matches their System of Record (e.g., Merged PRs as Tasks rolling directly into a Production Release Outcome), or (2) Multi-Stage Chaining, where Stage 1's verified OutcomeId is linked to Stage 2's downstream Task via the optional UpstreamOutcomeId foreign key on the Task table.

2. Technical Details

To operationalize the five datasets without forcing organizations into a single proprietary tooling stack, the data model establishes clear structural rules for entity joins, aggregation grain, cost allocation, and quality accounting. Detailed implementation methodologies (e.g., runtime telemetry instrumentation, heuristic correlation pipelines, and organizational rollout) are intentionally left out of scope for this proposal and deferred to future working group releases and the Implementation Playbook (Section 5).

2.1 Logical Overview

While Section 1 introduced the five datasets from an organizational and business perspective, implementing them in an enterprise data warehouse requires understanding their distinct table archetypes, row grains, and lifecycle behaviors.

These datasets are logical. The schema fixes their keys, row grain, and reserved values, not where they are stored: they can be landed in one warehouse or platform, or assembled at query time from each system of record, for example through Model Context Protocol (MCP) servers. The shared keys are what make either approach work. Reconciling allocated cost to the bill is simplest when the data sits in one place, so finance-grade KPIs will usually call for landing it centrally.

A high-level description of each table follows, with their schemas available in Section 3.

2.1.1 Logical Datasets

1. CostAndUsage

Row Grain: One row per charge, typically captured at an hourly or daily grain.

Technical Role: Acts as the immutable financial numerator for the entire architecture. It provides the reconciled BilledCost and amortized EffectiveCost (accounting for enterprise discounts, Provisioned Throughput Units, and reserved GPU commitments) across shared cloud and AI provider resources. Because a single ResourceId typically serves many workloads and users simultaneously, this table contains no task- or outcome-level identifiers.

2. Telemetry

Row Grain: One row per unique combination of Consumption Scope (the candidate billing-alignment tuple under evaluation) and TaskId within a time window aligned to the Cost and Usage charge period.

Technical Role: Serves as the high-compression bridge between runtime engineering observability and periodic financial billing. Rather than storing millions of raw telemetry spans in the financial warehouse, the Telemetry table aggregates leaf-level spans, such as model inference and tool spans, into hourly or daily buckets, summing token categories (e.g., InputTokenCount, OutputTokenCount, CacheReadTokenCount, CacheWriteTokenCount) and computing a normalized ActivityWeight used to allocate shared EffectiveCost from CostAndUsage.

3. Task

Row Grain: One row per discrete deliverable unit of work (TaskId) within an Outcome (OutcomeId), bounded by the task's execution lifecycle.

Technical Role: Transitions the data model from fixed billing intervals to work-item lifecycles. Because a single Task (such as completing a Jira sub-task or executing an investigation workflow) may span multiple hours, days, and chat sessions, its row aggregates all underlying telemetry linked to that TaskId. It records the binary technical inspection gate (TaskQualityBarMet) to isolate in-flight work scrap (FALSE) from passing engineering yield (TRUE), while capturing human review drag (TaskFrictionQuantity) and failure cleanup toil (TaskReworkPenaltyQuantity).

4. Outcome

Row Grain: One row per entry (OutcomeEntryNumber) for a completed business result (OutcomeId) within a workload (WorkloadId). Entry 1 records the result; later entries record amendments after settlement.

Technical Role: Captures externalized business results ingested from operational Systems of Record, product analytics, or workforce cohorts. Each entry is Pending while its settlement window is open and may be updated as the result develops (for example, a rollback or ticket reopen within the window); once Settled, it is frozen. A problem that surfaces after settlement is recorded as an amending entry with signed quantities if it undoes the Outcome, or as a new Outcome if it is a separate event. Each line of business makes that call per Outcome type, alongside its settlement window. It nets out operational friction and post-delivery rework penalties from raw observed output to produce NetOutcomeQuantity: the verified operational denominator for unit economics. Net values for an Outcome are the sum of its entries. Outcomes may also be recorded as periodic cohorts (for example, orders cleared in a month) rather than one row per transaction, which keeps amendments rare.

5. Value

Row Grain: One row per stakeholder value claim (ValueClaimId) linked to a verified OutcomeId over its value lifecycle.

Technical Role: Decouples operational measurement from financial valuation. Because different executives value the same operational outcome differently (e.g., a CFO measuring hard cost reduction vs. a CTO measuring engineering velocity or a CISO measuring risk mitigation), the Value table allows one OutcomeId to join to one or more governed value claims. Each row applies a Finance-approved ConversionMultiplier to the Outcome's NetOutcomeQuantity as of OutcomeCutoffDateTime to track worth across its lifecycle (PlannedValue, EstimatedValue, RealizedValue) and governs whether that worth is notional capacity (ValueStatus = 'Reported') or hard P&L impact (ValueStatus = 'Booked').

DatasetTable ArchetypePrimary Row Grain (PK)Time-Window BehaviorPrimary Role in Join Chain
1. CostAndUsagePeriodic Commercial LedgerConsumption Scope + ChargePeriodStart/EndFixed billing intervals (typically hourly/daily)Supplies EffectiveCost numerator per Consumption Scope.
2. TelemetryPre-Aggregated Sub-MeterConsumption Scope + WorkloadId + TaskId + TelemetryPeriodStart/EndFixed intervals matching ChargePeriodSplits EffectiveCost via ActivityWeight and links resources to TaskId / OutcomeId.
3. TaskDeliverable Lifecycle LogTaskId + TaskPeriodStart/EndVariable duration (spans task start to finish)Grades in-flight technical QA (TaskQualityBarMet) and rolls up to OutcomeId.
4. OutcomeBusiness Result LedgerWorkloadId + OutcomeId + OutcomeEntryNumberEntries editable while Pending and frozen once Settled; later amendments added as new entriesGrades SLA survival (OutcomeQualityBarMet) and outputs NetOutcomeQuantity.
5. ValueFinancial & Strategic Valuation LedgerWorkloadId + OutcomeId + ValueClaimId + ValuePeriodStart/EndMatches OutcomePeriod or fiscal recognition windowMultiplies NetOutcomeQuantity by ConversionMultiplier into 'Reported' or 'Booked' worth.

2.1.2 Dataset Joins

The five datasets connect through a relational chain of primary and foreign keys anchored by standardized UTC time windows:

Cost and Usage <-> Telemetry (Composite Consumption Scope + Time Window)

  • The Consumption Scope always includes the provider. When a charge is tied to a resource, the resource completes it, since ResourceId is unique within a service provider. Otherwise it uses the finest account key available (SubAccountId when present, else BillingAccountId) and ServiceName, plus ModelId for pay-per-token charges.
  • The definition of the grain needs further discussion in the FOCUS WG.

Telemetry <-> Task (WorkloadId + TaskId)

Task <-> Outcome (WorkloadId + OutcomeId)

Outcome <-> Value (WorkloadId + OutcomeId)

2.1.3 Optional Multi-Outcome Chaining

When a verified business result in Stage 1 (OutcomeId, e.g., a merged Pull Request or an escalated Tier-1 security alert) triggers new deliverable work in Stage 2 (e.g., a release integration task or an incident remediation workflow), the downstream Task record may reference the prior stage's OutcomeId in UpstreamOutcomeId.

  • Cost Rollup Guardrail: Telemetry activity always binds strictly once to the specific TaskId where tokens were consumed. UpstreamOutcomeId provides lineage to roll up cumulative end-to-end value-chain cost across stages without ever double-counting EffectiveCost in portfolio aggregations.

2.2 Telemetry Schema

The Telemetry dataset is meant to be populated from aggregated telemetry data in OpenTelemetry (OTel) format, leveraging a forthcoming telemetry schema using the focus.* namespace. This will facilitate organizations leveraging harmonized FOCUS-aligned semantics across all data sources, and it will ensure that there is a place to stamp each trace with the relevant Workload and Task (and Outcome, where it is known at runtime).

A proposed second FOCUS working group, the FOCUS SemConv WG, shall partner with the OpenTelemetry Semantic Conventions Special Interest Group (OTel SemConv SIG) to author and publish this telemetry schema, starting in the FOCUS 1.6 release cycle. The schema will be authored in its own repository, an approach OTel supports, with the goal of upstreaming its concepts into the official OTel semantic conventions.

Then, we shall enable use of this schema in the ecosystem through a combination of pull requests issued to agent harnesses and orchestration frameworks (e.g., LangGraph, CrewAI), open-source gateways and routers (e.g., LiteLLM, Higress, agentgateway, Agent Router), inference engines (e.g., vLLM, llm-d), commercial routers (e.g., OpenRouter), cloud service providers (e.g., AWS, Azure, GCP), and observability platforms (e.g., Datadog, Grafana).

Because no provider emits focus.* yet, the first artifacts will support enterprises that enrich their own telemetry without upstream help: a reference Collector configuration and sample data (Section 5).

That work will proceed between now and June 2027, and this paper will be updated to reflect progress. The proposed attributes, the rules for where they go, and governance will be set out in a forthcoming design brief.

2.2.1 gen_ai.* vs focus.*

The proposed focus.* semantic convention namespace is intentionally orthogonal to domain-specific OpenTelemetry namespaces such as gen_ai.*, http.*, or db.*. Rather than duplicating technical consumption counters (such as gen_ai.usage.input_tokens or gen_ai.response.model), focus.* provides the universal commercial billing-scope keys and business value-lineage identifiers (focus.workload.id, focus.task.id, and focus.outcome.id). This allows the architecture to govern AI token economics today while scaling seamlessly to non-AI cloud and infrastructure workloads. Note that focus.* carries join keys, not dollar costs. The cost of an individual request is often unknown while it runs, so cost is joined later from CostAndUsage through the Consumption Scope.

2.2.2 Attribution Layers

Attribution keys reach telemetry at three layers: runtime emitters (items 1 and 2), the OTel Collector (item 3), and the enterprise before rows enter the Telemetry dataset (item 4). Until harnesses, gateways, and providers emit focus.* natively, an enterprise should assume it receives no keys from upstream and plan to supply every key at the last two layers.

01

Agent Harnesses and Orchestration Frameworks

Harnesses and frameworks (e.g., LangGraph, CrewAI, Microsoft Agent Framework, LlamaIndex, OpenAI Agents SDK, and coding harnesses) manage the multi-turn execution loop (Trace) and know why the work is running. They accept focus.workload.id and focus.task.id from the calling application at the start of the trajectory, stamp them on the root span, and propagate them downstream via W3C Baggage headers.

  1. The framework does not invent these identifiers. The application or workflow that launches the run knows which workload it belongs to and which ticket, case, or work item it serves, and passes them in as run metadata. Because most frameworks already accept run metadata, the required change is small: map that metadata to focus.* and ensure it survives sub-agents, parallel branches, and asynchronous boundaries, where propagation most often breaks.
  2. Harnesses also stamp focus.outcome.id, but only when the Outcome already exists at the start of the run, such as a support ticket, insurance claim, or security alert. When the Outcome is created during or after the run, such as a Pull Request the agent opens or a release shipped days later, OutcomeId is not required on telemetry; it is linked through the Task dataset (Task.OutcomeId) or resolved through late binding (Section 2.4.1).
  3. Whether the Outcome meets its quality bar is determined by the line of business over the Outcome's settlement window, which is why OutcomeQualityBarMet lives in the Outcome dataset rather than in telemetry. Shared internal services, such as a central RAG index or guardrail agent, inherit the caller's lineage from this baggage rather than originating their own, so their consumption is attributed to the calling workload.

02

AI Gateways, Routers, and Inference Engines

Gateways and routers (e.g., LiteLLM, Higress, agentgateway, Agent Router, Helicone, OpenRouter) sit at the model execution boundary. They inherit the upstream lineage baggage from the harness. For pay-per-token APIs, they know where the call was billed (provider, billing account, service, and model, from configuration and the response) and stamp those attributes onto the leaf inference spans. For inference billed by resource, such as a self-hosted engine like vLLM or a GPU instance from a cloud or neocloud, only the serving side knows the billed resource. The inference engine or provider stamps it on its own spans, which link to the gateway's client span through trace context: the server span's parent is the client span. That requires the server to continue the caller's trace, which vLLM did not do in the team's testing, and hosted APIs to return at least one span per request.

03

Telemetry Collectors

Collectors on a host or in a cluster add what the infrastructure knows, even when the application does not: host, pod, and cluster metadata, and, from cloud instance metadata, the sub-account, resource, and region. They have no organizational context, and the billing account comes from configuration.

04

Enterprise Enrichment

Before telemetry is aggregated into the Telemetry dataset, the enterprise adds what only it knows: workload, task, and outcome IDs mapped from business keys, and any billing scope still missing, from its own configuration and inventory. Because exported spans are never edited, this happens at ingest or in the Telemetry dataset itself. The forthcoming design brief lists which layer can supply each key.

2.3 Aggregation & Allocation

Retaining individual OpenTelemetry Spans and Traces inside a data warehouse creates unnecessary data volume and risks double-counting tokens across parent and child spans.

2.3.1 Leaf-Span Aggregation

The Telemetry dataset aggregates only leaf-level spans, such as model inference and tool spans, into time windows matching Cost and Usage billing periods. Tracing identifiers (span_id, parent_span_id, trace_id) are omitted from the dataset, reducing row volume by orders of magnitude while preserving attribution dimensions (e.g., SubAccountId, ServiceName, ResourceId, WorkloadId, TaskId, OutcomeId).

Leaf level is judged separately for each Consumption Scope. A span counts toward the charges its billing-scope attributes identify, and an attribute set on a span overrides the same attribute on the emitting service's OpenTelemetry Resource. For each scope, the dataset aggregates the deepest spans that carry its keys. When a support bot running in a container calls a model API, the model call counts toward the model provider's charges, while the container's charges are weighted by the span that handled the request, whose duration includes time spent waiting on the model.

2.3.2 Allocating Shared Spend via ActivityWeight

Because a single billed resource (e.g., provisioned throughput deployment or shared GPU cluster) serves multiple workloads and tasks simultaneously, raw token counts cannot be summed equally to split a bill. The Telemetry schema introduces ActivityWeight as a normalized numeric weight for each row. A task's allocated share of EffectiveCost for a given Consumption Scope and time window is calculated as its share of total ActivityWeight on that Consumption Scope during that window.

Note on Future Standardization: The exact weighting formulas used to compute ActivityWeight (for example, weighting output tokens at 3x–5x input tokens and cached reads at 0.1x based on vendor rate cards or hardware FLOP profiles) require further working group discussion and will be standardized in a future release. Where a scope's charges carry different rates, such as for input, output, and cached tokens or by region, weights should be matched to the charge rows priced for that usage.

This schema standardizes the inputs to shared cost allocation, the join keys and the usage weights, not the allocation method. Organizations and FinOps tools already allocate shared cost, with methods that vary by provider and service; ActivityWeight lets any of those methods be applied consistently across the five datasets.

Allocating by ActivityWeight also spreads the cost of unused capacity, such as an idle hour on a provisioned deployment, across whoever used the resource in that window. Organizations should decide explicitly whether to spread it or hold it separately so utilization stays visible; a future version may define how.

2.3.3 Costs without Telemetry

Not all cost reaches a workload through telemetry. Some billed charges, such as enterprise support or SaaS seats, have no usage signal to join, and some costs of operating a workload, such as labor, appear on no bill at all. The allocation described in this section covers only cost that telemetry can match. One option, not yet represented in the proposed schema, could extend the Telemetry dataset to cover the rest:

AllocationBasis

a column recording how each row's share was set: 'Telemetry' when usage signals set its ActivityWeight, or 'Rule' when an organization's allocation rule did, such as splitting a support contract by headcount or data transfer by account.

OVERHEAD

a reserved value for TaskId and OutcomeId on cost shared by a whole workload rather than any one task, such as SaaS seats for the team that runs it. Unlike 'UNLINKED', and like 'NON_PRODUCTION_OVERHEAD' (Section 2.4.1), it is not scrap and is left out of Scrap Rate.

Labor

internal cost rows loaded alongside billed charges, giving both a billed view and a fully loaded view of a workload. Labor already measured as friction or rework (Section 2.4.3) must not also be counted as cost.

2.4 Scrap, Friction, and Rework

A core design requirement of this schema is preventing "happy-path bias," where organizations divide only the tokens of their final successful prompt by their business outcomes, ignoring failed iterations and human cleanup. The schema accounts for waste across three distinct mechanisms.

2.4.1 Early- and Late-Binding Attribution

In automated pipelines, TaskId and OutcomeId may be injected synchronously at runtime by the agent harness via OpenTelemetry baggage (Section 2.2.2). In interactive workflows (such as an engineer working in an IDE before a Pull Request exists), those foreign keys are resolved asynchronously post hoc.

When telemetry activity is not linked to a downstream Task or Outcome, whether because the work was abandoned or because the link was never recorded, TaskId and OutcomeId default to the reserved value 'UNLINKED'. This guarantees that 100% of EffectiveCost matched to telemetry (Section 2.3.3) is accounted for in unit economics denominators rather than being silently dropped by inner joins.

Scrap Rate (Section 4.2) counts unlinked cost as scrap until it is linked, and reports it as a separate line so missing links are not mistaken for failed work.

Planned non-production compute, such as offline evals, fine-tuning, and RAG indexing, is not scrap. It is stamped with the reserved value 'NON_PRODUCTION_OVERHEAD' (or a dedicated overhead WorkloadId) so that it is reported separately from broken production execution. (Specific post-hoc correlation methodologies are out of scope for this document.)

2.4.2 Two Quality Gates

  • TaskQualityBarMet (In-Flight Technical Gate)
    1. Evaluates whether a deliverable unit of work passed technical inspection (e.g., code compiled, CI tests passed, or draft passed automated evaluation). Failed tasks (FALSE) represent in-flight scrap.
  • OutcomeQualityBarMet (Post-Delivery SLA Gate)
    1. Evaluates whether a shipped result survived its settlement window without rollback, ticket reopen, or customer failure. Failed outcomes (FALSE) represent post-delivery warranty recalls. OutcomeQualityBarMet is recorded on every entry, so an Outcome's latest entry always shows its current status. A failure inside the settlement window updates the Pending entry; a failure after settlement that undoes the Outcome is recorded as an amending entry with OutcomeQualityBarMet = FALSE and a negative QualifiedOutcomeCount.

2.4.3 Friction and Rework Penalties

Both Task and Outcome track raw output (ObservedTaskQuantity, ObservedOutcomeQuantity) alongside two deduction columns, shown here without their Task or Outcome prefix:

  • FrictionQuantity (Babysitting/Triage Tax)
    1. Human verification, review, and editing drag incurred even when the AI passes its quality bar.
  • ReworkPenaltyQuantity (Failure Cleanup Tax)
    1. Human labor spent reverting, debugging, or redoing work when a Task or Outcome fails its quality bar. Subtracting both from the observed quantity (or comparing against the baseline) yields the net quantity (NetTaskQuantity or NetOutcomeQuantity), which can be negative when a failed outcome creates more cleanup toil than value. When OutcomeUnit is a discrete count (e.g., 'deflected_tickets'), friction and rework measured in time cannot be subtracted from it directly; they are recorded in the Task table in time units and monetized in Value as a separate, negative value claim.

2.5 Value Lifecycle

The Value dataset separates operational measurement from financial recognition.

2.5.1 Multi-Stakeholder Claims (ValueClaimId & StakeholderRoleName)

A single verified Outcome can be valued through different executive lenses (e.g., CFO cost reduction, CTO engineering velocity, CISO risk avoidance) using a governed ConversionMultiplier. These claims are alternative lenses on one result, not additive value: RealizedValue must never be summed across StakeholderRoleName claims for the same OutcomeId. Portfolio KPIs are segmented by StakeholderRoleName or restricted to a single designated claim per Outcome.

2.5.2 Recognition Status (ValueStatus)

Distinguishes between 'Reported' value (notional productivity capacity returned to employees or estimated operational benefit) and 'Booked' value (hard-dollar budget reductions, vendor contract savings, or realized revenue margin verified by FP&A in a specific General Ledger or Cost Center destination). Booked value must also be attested: AttestorId, AttestorRoleName, and AttestedDateTime record who verified the claim, in what role, and when. The attestor's role must differ from the claimant's StakeholderRoleName, so no team grades its own homework. Each attestation covers the claim's current ValueStatus and RealizedValue; Reported value may remain unattested.

When an Outcome is valued in revenue, the claim should record contribution margin rather than gross revenue, as in the ConversionMultiplier example of $42.00 margin per order. A claim at gross revenue would make Net Workload Economic Margin and ROI subtract only the workload's own costs, not the cost of producing that revenue, and overstate the return.

2.5.3 Lifecycle Valuation (PlannedValue, EstimatedValue, RealizedValue)

Allows organizations to compare budgeted business-case projections (PlannedValue) and in-flight accruals (EstimatedValue) against post-settlement audited worth (RealizedValue). Outcomes still inside their settlement window at an accounting close carry EstimatedValue with a NULL RealizedValue, and settle into RealizedValue once the settlement window set by the line of business closes, at which point FP&A books RealizedValue against the net Outcome as of that date (OutcomeCutoffDateTime). An amending entry that arrives after a claim is booked does not restate it; it produces an adjusting claim, which may be negative, in the current period. Comparing PlannedValue with RealizedValue also closes the loop between measurement and investment: the result an owner asserts when work is funded becomes the benchmark for the next funding decision.

2.6 Attribution Modes

Not every workload needs request-level attribution. Billing data typically arrives daily while AI requests arrive by the second, so attributing every request to a specific Task or Outcome requires streaming lineage metadata and considerably more processing. The schema therefore supports two attribution modes, chosen per workload. They differ in precision and cost, not in structure, and neither is a stage on the way to the other.

2.6.1 Cohort Mode

Each workload is treated as its own Task and Outcome over a monthly window, with TaskId and OutcomeId set to a cohort identifier that combines the WorkloadId and the window (for example, 'coding_agent_2026_10'). Telemetry is attributed at the workload level from aggregate metrics, and Outcome rows record cohort volumes in AttemptedOutcomeCount and QualifiedOutcomeCount. It suits workloads whose decisions are made at the workload level, such as whether to keep funding a capability.

2.6.2 Atomic Mode

TaskId and OutcomeId are recorded per request, either stamped on telemetry or linked afterward through the Task dataset, so cost is attributed to individual Tasks and Outcomes. It suits workloads whose decisions depend on individual results, such as which kinds of tasks are worth automating.

Choose each workload's mode by the decision it informs, and invest in precision only where that decision depends on it. A portfolio will usually mix modes. Every mode produces the same five datasets, so KPIs remain comparable across them.

3. Schema

This section defines the five datasets necessary to perform the value attribution process. For more information on the concepts, see Section 1. All entities use PascalCase naming conventions and standard UTC time windows.

The five tables, Cost and Usage, Telemetry, Task, Outcome, and Value, shown left to right with their key columns and measures, joined in sequence: from BilledCost and EffectiveCost through token counts, task and outcome counts and quantities, to RealizedValue, EstimatedValue, and PlannedValue.

3.1 CostAndUsage

  • Purpose: Provides the authoritative, reconciled financial bill (EffectiveCost and BilledCost) for every AI model endpoint, PTU commitment, and GPU cluster.
  • Note: This is not an exhaustive list of columns in the Cost and Usage dataset; only those relevant to value attribution are listed. For the full specification, please refer to the FOCUS specification.
Column NameData TypeNullabilityDefinition & Role
ServiceProviderNameStringNOT NULLCloud or AI vendor (e.g., 'AWS', 'Azure', 'GCP', 'Anthropic', 'OpenAI').
BillingAccountIdStringNOT NULLRoot billing account identifier.
SubAccountIdStringNullableCloud sub-account, project, or workspace ID.
ServiceNameStringNOT NULLProvider service offering (e.g., 'Amazon Bedrock', 'Azure OpenAI'). Part of the Consumption Scope tuple.
ResourceIdStringNullableUnique identifier of the billed AI resource (e.g., Bedrock Endpoint ARN, Azure PTU deployment ID, or Kubernetes GPU cluster ID).
SkuPriceDetails.ModelIdStringNullableModel identifier for model charges, a FOCUS-defined SkuPriceDetails property since FOCUS 1.5. Part of the Consumption Scope tuple: joins to Telemetry.ModelId on pay-per-token charges, where ResourceId is null.
ChargePeriodStartDate/TimeNOT NULLInclusive UTC start timestamp (>=) of the billing window (typically hourly).
ChargePeriodEndDate/TimeNOT NULLExclusive UTC end timestamp (<) of the billing window.
ChargeCategoryStringNOT NULLFOCUS charge category (e.g., 'Usage', 'Purchase', 'Tax').
PricingCategoryStringNullableFOCUS pricing model ('Standard', 'Committed', 'Dynamic', 'Other').
ConsumedQuantityNumericNullableVendor-billed volume (e.g., token units, provisioned throughput hours, GPU instance hours).
ConsumedUnitStringNullableUnit of billed consumption ('1K Tokens', '1M Tokens', 'PTU Hours', 'GPU Hours').
BilledCostNumericNOT NULLRaw invoiced cash spend for the period.
EffectiveCostNumericNOT NULLPrimary Cost Numerator: Amortized cost including commitment discounts, PTU utilization, and reserved GPU amortization.

3.2 Telemetry

  • Purpose: Aggregates raw OpenTelemetry leaf inference spans (gen_ai.* + focus.*) into hourly or daily PascalCase records matching ChargePeriodStart and ChargePeriodEnd. Eliminates parent_span_id, span_id, and trace_id to prevent parent-child token double-counting and reduce row volume by ~99%.
  • Note: Data in OTel format is the source for this dataset, but value attribution does not need to retain data at the individual span level. Section 2.2 describes the OTel attributes this dataset is built from.
Column NameData TypeNullabilityMapped From OTel Runtime AttributesDefinition & Role
TaskIdStringNOT NULLfocus.task.id (or Post-Hoc Enriched)Joins to Task.TaskId. Defaults to 'UNLINKED' if unlinked, or the workload's cohort identifier (Section 2.6) when Task-level tracking is omitted.
OutcomeIdStringNOT NULLfocus.outcome.id (optional; otherwise inherited via Task)Joins to Outcome.OutcomeId. Defaults to 'UNLINKED' if unlinked.
WorkloadIdStringNOT NULLfocus.workload.idIdentifies the overarching AI capability ('coding_agent').
ServiceProviderNameStringNOT NULLfocus.service_provider.nameJoins to Cost and Usage.ServiceProviderName.
BillingAccountIdStringNOT NULLfocus.billing_account.idJoins to Cost and Usage.BillingAccountId.
ResourceIdStringNullablefocus.resource.idJoins to Cost and Usage.ResourceId.
ServiceNameStringNullablefocus.service.nameJoins to Cost and Usage.ServiceName.
SubAccountIdStringNullablefocus.sub_account.idJoins to Cost and Usage.SubAccountId.
ModelIdStringNullablegen_ai.response.modelSpecific model invoked (the provider’s versioned model identifier). Joins to Cost and Usage.SkuPriceDetails.ModelId.
TelemetryPeriodStartDate/TimeNOT NULLDATE_TRUNC(<ChargePeriod grain>, start_time_unix_nano)Inclusive UTC start timestamp (>=) matching ChargePeriodStart.
TelemetryPeriodEndDate/TimeNOT NULLTelemetryPeriodStart + 1 <ChargePeriod grain>Exclusive UTC end timestamp (<) matching ChargePeriodEnd.
InvocationCountNumericNOT NULLCOUNT(span_id) (leaf inference spans)Number of atomic model calls aggregated in this window.
InputTokenCountNumericNOT NULLSUM(gen_ai.usage.input_tokens)All prompt tokens, including those read from or written to cache.
OutputTokenCountNumericNOT NULLSUM(gen_ai.usage.output_tokens)Completion / reasoning tokens generated.
CacheReadTokenCountNumericNOT NULLSUM(gen_ai.usage.cache_read.input_tokens)Prompt tokens served from KV cache.
CacheWriteTokenCountNumericNOT NULLSUM(gen_ai.usage.cache_write.input_tokens)Prompt tokens written to KV cache.
TotalDurationMsNumericNOT NULLSUM((end_time - start_time) / 1e6)Total cumulative inference latency in milliseconds.
ActivityWeightNumericNOT NULLDerived relative cost weightNormalized consumption weight used to allocate shared Cost and Usage.EffectiveCost across rows sharing the same Consumption Scope and time window.

3.3 Task

  • Purpose: Tracks deliverable units of work, evaluates the in-flight technical quality gate (TaskQualityBarMet), and captures factory-floor human friction and rework drag in TaskUnit.
  • The methodology for how to establish a Baseline for a given Task is out of scope of this document.
Column NameData TypeNullabilityDefinition & Role
TaskIdStringNOT NULLUnique identifier for the body of work ('task_102', 'PROJ-401-a1b2c', or 'UNLINKED').
OutcomeIdStringNOT NULLParent business outcome ('pr_401', 'ticket_8821', or 'UNLINKED' if not linked to an outcome).
WorkloadIdStringNOT NULLGrouping identifier for the AI capability ('coding_agent').
UpstreamOutcomeIdStringNullableOptional Recursive Chaining Key: References a completed upstream Outcome.OutcomeId (e.g., 'pr_401') that triggered or fed into this task (Task -> Outcome -> Task -> Outcome). NULL for single-stage workflows.
TaskPeriodStartDate/TimeNOT NULLInclusive UTC timestamp (>=) when the task began.
TaskPeriodEndDate/TimeNOT NULLExclusive UTC timestamp (<) when the task concluded.
TaskTypeStringNOT NULLFunctional classification ('db_migration_gen', 'unit_test_gen', 'refund_calc').
TaskNameStringNullableHuman-readable label from the system of record, such as a ticket title ('Fix refund rounding'). Kept out of telemetry, since names change and may contain sensitive details.
TaskQualityBarMetBooleanNOT NULLIn-Flight Technical Gate: TRUE if the task deliverable passed technical verification (e.g., compiled, passed CI tests, or passed automated evals).
AttemptedTaskCountNumericNOT NULL1 for an atomic task row; count of unlinked sessions/traces for 'UNLINKED'.
QualifiedTaskCountNumericNOT NULL1 if TaskQualityBarMet = TRUE; 0 if FALSE. Denominator for Cost Per Qualified Task.
TaskUnitStringNOT NULLNative unit of measure for the quantity columns on this row ('minutes', 'tasks', 'test_cases').
BaselineTaskQuantityNumericNullablePre-AI benchmark for this task in TaskUnit (NULL if baselines are only tracked at the Outcome level).
ObservedTaskQuantityNumericNOT NULLRaw post-AI active quantity consumed or produced in TaskUnit.
TaskFrictionQuantityNumericNOT NULL (Default 0)The AI Triage / Babysitting Tax: Extra human verification, diff-reading, and light editing drag (occurs even when TaskQualityBarMet = TRUE).
TaskReworkPenaltyQuantityNumericNOT NULL (Default 0)The Failure Cleanup Tax: Human effort wasted debugging, reverting, or cleaning up when TaskQualityBarMet = FALSE.
NetTaskQuantityNumericNOT NULLNet task output in TaskUnit after subtracting TaskFrictionQuantity and TaskReworkPenaltyQuantity.

3.4 Outcome

  • Purpose: Measures verified business results in operational Systems of Record, product analytics, or workforce cohorts (OutcomeQualityBarMet) and computes NetOutcomeQuantity after accounting for friction and post-delivery rework. Each row is an entry: Pending entries may be updated, Settled entries are frozen, and an Outcome's net values are the sum of its entries.
Column NameData TypeNullabilityDefinition & Role
OutcomeIdStringNOT NULLIdentifier for the business result ('pr_401', 'ticket_8821'), cohort window ID, or 'UNLINKED'. Shared by the original entry and its amendments.
WorkloadIdStringNOT NULLGrouping identifier for the AI capability ('coding_agent', 'support_bot').
OutcomeEntryNumberNumericNOT NULL1 for the entry that records the result; 2, 3, and so on for each amendment after settlement. With WorkloadId and OutcomeId, forms the primary key.
OutcomePeriodStartDate/TimeNOT NULLInclusive UTC start timestamp (>=) of the outcome lifecycle or cohort window.
OutcomePeriodEndDate/TimeNOT NULLExclusive UTC end timestamp (<) when the outcome closed/settled or cohort window ended.
OutcomeRecordedDateTimeDate/TimeNOT NULLUTC timestamp when this entry was recorded or last updated. An Outcome's net as of a date is the sum of entries recorded on or before it.
OutcomeStatusStringNOT NULL'Pending' while the entry's settlement window is open and it may still be updated; 'Settled' once the line of business agrees the result, after which the entry never changes.
OutcomeSettledDateTimeDate/TimeNullableUTC timestamp when the entry was settled; NULL while Pending.
OutcomeTypeStringNOT NULLFunctional classification ('deflected_ticket', 'merged_pr', 'order_cleared'). Each line of business sets its settlement window per OutcomeType.
OutcomeNameStringNullableHuman-readable label from the system of record ('Refund for order 5521'). Kept out of telemetry, since names change and may contain sensitive details.
WorkloadNameStringNullableHuman-readable label for dashboards ('Autonomous Billing Triage Bot'). Must be the same on every row with the same WorkloadId.
OutcomeQualityBarMetBooleanNOT NULLPost-Delivery Business/SLA Gate: TRUE if the result met its business SLA without rollback, reopen, or CSAT failure. Recorded on every entry: it may change while the entry is Pending and is final once Settled. An amending entry that undoes the Outcome carries FALSE, so the latest entry shows the Outcome's current status.
AttemptedOutcomeCountNumericNOT NULL1 for an atomic outcome; total attempted volume for cohort rows; 0 for 'UNLINKED'. Signed: amending entries carry only the change, usually 0.
QualifiedOutcomeCountNumericNOT NULL1 for passing atomic outcomes (0 if failed); passing volume for cohort rows. Signed: an amending entry that recalls a result carries a negative value (e.g., -1). Universal denominator for Cost Per Qualified Outcome (CPQO).
OutcomeUnitStringNOT NULLNative business unit of measure ('minutes', 'deflected_tickets', 'orders', 'hours').
BaselineOutcomeQuantityNumericNullablePre-AI benchmark in OutcomeUnit (populated for Delta/Savings mode; NULL for Absolute Throughput mode).
ObservedOutcomeQuantityNumericNOT NULLRaw post-AI observed quantity in OutcomeUnit. Signed on amending entries.
OutcomeFrictionQuantityNumericNOT NULL (Default 0)Triage/verification drag in OutcomeUnit (rolled up from Task when TaskUnit = OutcomeUnit, or measured at Outcome level).
OutcomeReworkPenaltyQuantityNumericNOT NULL (Default 0)Cleanup/rollback drag from failed tasks (TaskQualityBarMet = FALSE) or outcome recalls recorded on amending entries.
NetOutcomeQuantityNumericNOT NULLPrimary Operational Output: Feeds Value directly. Can be negative when an outcome fails and incurs rework drag. An Outcome's net is the SUM across its entries.
OutcomeEntryNotesStringNullableFree-text context for the entry, such as the reason for an amendment ('release rolled back', 'ticket reopened') or the scope of a cohort.

3.5 Value

  • Purpose: Converts Outcome.NetOutcomeQuantity into financial or strategic worth and tracks whether a cross-functional governance body has formally recognized the impact on a P&L or budget line (ValueStatus).
Column NameData TypeNullabilityDefinition & Role
WorkloadIdStringNOT NULLJoins to Outcome.WorkloadId.
OutcomeIdStringNOT NULLJoins to Outcome.OutcomeId, referencing the Outcome as a whole (all of its entries) rather than a single entry.
ValueClaimIdStringNOT NULLUnique identifier for the value claim (allows 1 Outcome to generate multiple stakeholder claims if governed).
ValuePeriodStartDate/TimeNOT NULLInclusive UTC start timestamp (>=) matching OutcomePeriodStart, or the start of the fiscal period in which an adjusting claim is recognized.
ValuePeriodEndDate/TimeNOT NULLExclusive UTC end timestamp (<) matching OutcomePeriodEnd, or the end of that fiscal period.
StakeholderRoleNameStringNOT NULLExecutive role governing the valuation rate ('CFO', 'CTO', 'CRO', 'CISO', 'CCO').
ValueCategoryNameStringNOT NULLValue classification ('Cost Reduction', 'Engineering Capacity', 'Incremental Revenue', 'Risk Avoidance').
ConversionMultiplierNumericNOT NULLFinance-approved rate per OutcomeUnit (e.g., $1.50 per net minute saved, $8.50 per deflected ticket, $42.00 margin per order).
ValueUnitStringNOT NULLISO currency code ('USD', 'EUR') when the value is monetary; otherwise the non-monetary unit of worth ('hours', 'risk_points').
ValueStatusStringNOT NULLFinancial Recognition Gate:
• 'Reported': Operational/notional capacity or value created.
• 'Booked': Hard dollar impact verified by FP&A in a budget or P&L line item.
ValueDestinationStringNullableTarget P&L line, Cost Center, or GL account when ValueStatus = 'Booked' (e.g., 'CC-402 BPO Support OpEx').
AttestorIdStringNullableStable identifier of the person or system that verified the claim (e.g., an employee or service ID, not a display name). Required when ValueStatus = 'Booked'.
AttestorRoleNameStringNullableRole of the attestor ('FP&A', 'Controller', 'Internal Audit'). Must differ from StakeholderRoleName so that no claimant attests its own value. Required when ValueStatus = 'Booked'.
AttestedDateTimeDate/TimeNullableUTC timestamp when the current ValueStatus and RealizedValue were attested. Required when ValueStatus = 'Booked'.
OutcomeCutoffDateTimeDate/TimeNullableOutcome entries recorded on or before this time are included in this claim's valuation; typically the close of the Outcome's settlement window. Required when ValueStatus = 'Booked'.
RealizedValueNumericNullableFinal Worth, attributed after work is performed (net Outcome.NetOutcomeQuantity as of OutcomeCutoffDateTime * ConversionMultiplier); NULL until the Outcome's settlement window closes. Later amendments produce an adjusting claim in the current period rather than restating this value.
EstimatedValueNumericNullableEstimated Worth, accrued while work is performed.
PlannedValueNumericNullablePlanned Worth, budgeted before work is performed.

4. KPIs

Joining these five datasets, whether landed in one warehouse or assembled at query time, enables cross-functional teams to calculate standardized KPIs across four layers: infrastructure; yield, scrap, and friction; outcomes and valuation; and cost to value. Outcome KPIs use net values summed across each Outcome's entries, and realized-value KPIs are segmented by ValueStatus; Outcomes still inside their settlement window contribute only through EstimatedValue.

4.1 Infrastructure KPIs

These KPIs leverage the CostAndUsage and Telemetry datasets.

KPI NameFormula / DerivationStrategic Purpose
Effective Cost per Activity Weight UnitSUM(CostAndUsage.EffectiveCost) / SUM(Telemetry.ActivityWeight)Establishes the true amortized unit rate of a model deployment or GPU cluster after enterprise discounts, PTU utilization, and idle capacity.
Task / Outcome Compute CostTelemetry.ActivityWeight * (Consumption Scope EffectiveCost / Total Consumption Scope ActivityWeight)Fairly distributes shared infrastructure spend down to individual TaskId, OutcomeId, and WorkloadId records.
KV Cache Hit RatioSUM(CacheReadTokenCount) / SUM(InputTokenCount)Measures prompt-caching efficiency across workloads to reduce latency and input token consumption.

4.2 Yield, Scrap & Friction KPIs

These KPIs leverage the Telemetry and Task datasets.

KPI NameFormula / DerivationStrategic Purpose
Task Technical Yield (%)SUM(QualifiedTaskCount) / SUM(AttemptedTaskCount) (excluding 'UNLINKED')Measures the percentage of deliverable work items that pass in-flight technical QA (TaskQualityBarMet = TRUE).
Scrap Rate (%)Cost of ('UNLINKED' + Task where TaskQualityBarMet = FALSE) / Total Workload EffectiveCostExposes the hidden percentage of AI spend burned on abandoned chat sessions, dead-end agent loops, and failed builds. Report the 'UNLINKED' share as its own line.
Cost per Qualified Task (CPQT)Total Workload EffectiveCost / SUM(Task.QualifiedTaskCount)True engineering unit cost to produce one passing technical deliverable (inclusive of upstream scrap).
In-Flight Friction & Rework RatioSUM(TaskFrictionQuantity + TaskReworkPenaltyQuantity) / SUM(ObservedTaskQuantity)Quantifies the "AI babysitting tax": how much human review and cleanup toil is required per unit of task output.

4.3 Outcome & Valuation KPIs

These KPIs leverage the Outcome and Value datasets.

KPI NameFormula / DerivationStrategic Purpose
Outcome SLA Survival Rate (%)SUM(QualifiedOutcomeCount) / SUM(AttemptedOutcomeCount)Measures post-delivery reliability: the share of shipped AI outcomes that survive without revert, ticket reopen, or SLA breach (OutcomeQualityBarMet = TRUE).
Post-Delivery Friction & Recall Drag (%)SUM(OutcomeFrictionQuantity + OutcomeReworkPenaltyQuantity) / SUM(ObservedOutcomeQuantity)Quantifies the operational drag lost to human verification and post-delivery warranty recalls at the business System-of-Record layer.
Realized Value per Qualified OutcomeSUM(Value.RealizedValue) / SUM(Outcome.QualifiedOutcomeCount) (segmented by StakeholderRoleName and ValueStatus)Establishes the average attributed worth generated by each verified business outcome after accounting for operational friction and rework deductions.
Plan-to-Actual Value VarianceSUM(Value.RealizedValue) - SUM(Value.PlannedValue)Tracks whether an AI workload is delivering against its original business case projections after accounting for real-world SLA survival and rework.

4.4 Cost to Value KPIs

These KPIs leverage all five datasets across the schema: CostAndUsage -> Telemetry -> Task -> Outcome -> Value.

By joining all five datasets across the consumption scope bridge and entity lifecycle keys, organizations unlock north-star unit economics KPIs that connect amortized cloud and model bills all the way to booked P&L impact. All value-based KPIs below observe the non-aggregation rule in Section 2.5.1. They also use EffectiveCost from CostAndUsage, which captures infrastructure and model spend; human-in-the-loop labor, SaaS, and data licensing costs are excluded unless they are also landed in CostAndUsage.

Each cost-to-value KPI can be reported on two cost bases, labeled so they are never mixed: billed cost, the EffectiveCost from Cost and Usage, and fully loaded cost, which adds internal costs such as the people who operate the workload (Section 2.3.3). Labor already counted as friction or rework (Section 2.4.3) is not added again.

KPI NameFormula / DerivationStrategic Purpose
Cost per Qualified Outcome (CPQO)Total Workload EffectiveCost (including 'UNLINKED' & failed Tasks) / SUM(Outcome.QualifiedOutcomeCount)Divides 100% of a workload's amortized infrastructure spend (inclusive of upstream abandoned traces and failed task iterations) strictly by net verified business outcomes (OutcomeQualityBarMet = TRUE).
Cost per Net OutcomeTotal Workload EffectiveCost / SUM(Outcome.NetOutcomeQuantity)Unit cost per net unit of business output after friction and rework deductions, in OutcomeUnit. Complements CPQO when outcomes are measured in quantities (e.g., hours saved) rather than counts. Undefined when NetOutcomeQuantity is zero or negative.
Cost per Unit of Value (Spend-to-Value Ratio)Total Workload EffectiveCost / SUM(Value.RealizedValue) (segmented by ValueStatus = 'Booked' vs. 'Reported')Answers "How many cents of AI compute spend does it take to generate $1.00 of verified business value?" Directly fulfills the goal of moving from cost per token to cost per value.
Net Workload Economic Margin ($)SUM(Value.RealizedValue) - Total Workload EffectiveCost (typically evaluated where ValueStatus = 'Booked')Quantifies the net dollar surplus (or deficit) generated by an AI capability after subtracting its full amortized infrastructure bill, including all scrap and retry burn.
ROI (%)(SUM(Value.RealizedValue) - Total Workload EffectiveCost) / Total Workload EffectiveCost (segmented by ValueStatus = 'Booked' vs. 'Reported')Executive return on investment across the full value chain, separating hard P&L cost reductions or revenue gains ('Booked') from notional capacity returned to the workforce ('Reported'). Break-even is 0%; a negative ROI means the workload cost more than the value it produced.
Scrap-Adjusted Margin Erosion (%)(Total Scrap & Failed-Task EffectiveCost) / SUM(Value.EstimatedValue)Reveals how much of a workload's theoretical gross value is eroded by factory-floor token scrap ('UNLINKED', TaskQualityBarMet = FALSE).

Comparisons with baselines need care. Teams often route routine work to AI and keep complex work with people, so comparing AI results with a baseline drawn from all work, or from the period before AI, can overstate savings. Baselines should come from comparable work, matched at least on TaskType and OutcomeType. Type alone does not capture complexity, and the schema does not yet record how complex a Task was or why it went to AI rather than a person. A future version of this schema will address how to record both, and the Implementation Playbook will discuss this in more detail.

5. Roadmap

This paper is one part of a broader effort, driven by the Tokenomics Foundation in partnership with the FOCUS working groups, to standardize the data layer that connects AI spend to verified value. Requirements start in the Tokenomics Foundation working groups, pass through a FinOps Foundation working group, and are hardened into specifications by the FOCUS working groups. The work proceeds in five stages:

  • Build on FOCUS: Billed AI costs across the tokenomics stack already land in FOCUS, and the FOCUS 1.6 release cycle (November 2026 through April 2027) continues that work. The Cost and Usage dataset requires no reinvention.
  • Publish and Enable the Telemetry Schema: The proposed FOCUS SemConv WG will author the focus.* OpenTelemetry semantic conventions (Section 2.2) and drive adoption across harnesses, gateways, routers, inference engines, cloud providers, and observability platforms.
  • Specify the Task, Outcome, and Value Datasets: The Tokenomics Foundation working groups will supply requirements grounded in their value classification methodology, and the FOCUS working groups will own design and specification for inclusion in a future FOCUS release.
  • Release Sample Data and a Reference Implementation: Sample datasets and joins will show two scenarios: an enterprise that receives no focus.* data from upstream and one that receives part of it, each for a GenAI workload and a classic cloud workload. The first release centers on the Task, Outcome, and Value datasets, since joining usage to cost is well established. Early adopters can test it and report back before the playbook is final.
  • Publish an Implementation Playbook: Targeted for June 2027, the playbook will provide the joins, worked calculations for the KPIs in Section 4, persona-specific guidance, and governance for how Outcome records are populated and verified, whether by people or by automated systems.

These stages culminate in a public end-to-end demonstration, targeted for the Tokenomics Foundation's June 2027 conference and built with practitioners and vendors. Practitioners willing to pilot early versions with their own data, along with cloud, platform, model, and observability partners, are invited to join the FOCUS and Tokenomics working groups. To get involved, email hello@tokeneconomics.com.

Value Attribution Data Architecture · Version 0.1.7 · Last updated: November 11, 2026