What "expert-hours" means
Expert-hours are ATTRIBUT's estimate of how long a piece of work would have taken an experienced engineer to do by hand. The estimate is built entirely from the structure of your AI coding session — counts, sizes, and timing of what happened — and never from the words or code inside it.
Every session you run gets read for structural signal: how many lines were added or removed, how many files changed, how many turns and tool calls happened, how many searches were run, how many subagents were spawned, and so on. ATTRIBUT never reads what those lines say, only their shape, size, and timing. That signal is converted into an expert-hours estimate, which is what makes cost-per-outcome possible — it tells you how much expert work a session produced, not just how much it cost in AI spend.
Why not just count lines?
A raw line count is a poor stand-in for value, because it:
Rewards verbosity — more lines reads as more work, even when the result is worse.
Lets churn and copy-paste inflate the count without adding any value.
Makes deletions and refactors look like nothing, when they're often the hardest work.
Assumes a speed-up that the evidence does not support.
Expert-hours are built to avoid all four problems: they're sized by outcome rather than output, they give deletion, debugging, and coordination their own hours, they're read from structure so identical inputs produce an identical figure, and they're always reported as a range with a confidence level rather than a single false-precision number.
The five kinds of work
Every session resolves to a mix of five kinds of work. Each kind is read from its own structural signal and sized by its own formula, so the same expert-hours total can come from writing new code, deleting old code, debugging, exploring a codebase, or coordinating subagents.
Work type | What it is | Structural signal it reads | How it's sized |
Creation | Net-new capability — structure and behavior that didn't exist before | Added lines, new files, new symbols | Net-new structure converted to hours |
Reduction | Deletion and simplification, often the most valuable, least visible work | Removed lines, deleted files, dead code | Removed structure, weighted — deletion counts as real work |
Repair | Debugging and iteration to make existing code correct | Edit churn, turn count, test runs | Iteration depth combined with how localized the change is |
Understanding | Reading and navigating code — the work before the work | Files opened, searches run, tool calls that made no edit | Breadth of exploration across the repo |
Orchestration | Coordinating subagents and multi-step plans | Subagent spawns, tool-call depth, plan steps | Coordination span across the work graph |
A session that's mostly new feature code will skew toward Creation. A session spent chasing a flaky test will skew toward Repair. A session where an agent fans work out to several subagents will pick up Orchestration hours. The mix is specific to what actually happened in that session.
From a mix to a number
Once a session's mix across the five kinds is read, ATTRIBUT turns it into a dollar figure in three steps:
Expert-hours: the five kinds are sized and summed into a band — a low, a mid, and a high estimate — plus a confidence percentage, instead of one falsely precise number.
Outcome multiplier: the band is scaled by whether the work landed. Merged, shipped work scores close to full credit; abandoned work is discounted. This multiplier runs roughly 0.6 to 1.3.
Your rate: the resulting expert-hours are priced at the hourly rate you set. That rate is yours alone — ATTRIBUT never sends it anywhere else.
Expert-hours × outcome × your rate is the dollar value of expert work a session represents. Compare that to what the session cost in AI spend, and you get value returned per dollar spent — cost-per-outcome, rather than just a bill.
Structure, never content
It's worth repeating because it's the core guarantee: every input to expert-hours is structural — line counts, file counts, tokens, turns, tool calls, subagent spawns, timing. ATTRIBUT never reads the content of your code to produce this figure. Two sessions with the same shape produce the same expert-hours, regardless of what they actually built.
Why the numbers are ranges, not exact points
Expert-hours are reported as a band — a low-to-high range around a midpoint — with a confidence level, not a single exact figure. That's deliberate: estimating how long a piece of work would take a human is inherently uncertain, and a false point estimate would hide that uncertainty rather than represent it honestly. Over time, ATTRIBUT reconciles these estimates against real outcomes and tightens the bands, so the ranges get narrower as more data comes in.
