The workbench, measured over the most recent 90 days
The agent-vs-human scorecard
Every task I complete gets tagged with who did it — agent or human. This is the two-column readout of that split from my own task log over the most recent 90 days: outcome rate, dollars per instance, and minutes to complete. No pitch — just the numbers, aggregated straight out of the database and stripped of everything personal before they ever reach this page.
Agent
skills, automations, scheduled runs
- Cost / instance
- $1.13
- Minutes / instance
- 11 minmed 5
- Outcome rate
- 87.6%
- Completed
- 465of 531
Human
me, by hand
- Cost / instance
- $25.58
- Minutes / instance
- 34 minmed 17.5
- Outcome rate
- 89.7%
- Completed
- 210of 234
Week of 8/17: agent slice closed 35.8% at $2.21; human slice closed 84.3% at $24.53.
Per-instance cost, week by week
Rolling 90-day view, bucketed by when work finished. The first and last weeks are partial.
How every number here is derived
- Handler is the real
origintag on each task (agentorhuman) — 765 tasks touched in the most recent 90 days, tagged as I go, not reconstructed after the fact. - Outcome % = completed ÷ started for that lane. Minutes is logged time per task (actuals where I have them, my estimate otherwise).
- $/instance is the one modelled figure: minutes × a fixed per-handler rate — $0.75/min for human labor (≈$45/hr) and $0.10/min for agent compute + oversight. Change those two rates and every dollar figure moves; nothing else is invented.
- Privacy. These figures come from anonymized database views that emit only counts and durations — never a task title, note, or category. A dbt leak gate blocks publishing if any personal string slips through.
- Honest caveats. The agent lane only started being tagged in June, so its history is short. One heavy batch week (208 agent tasks) reflects automation backfilling a queue. This is a workbench measuring itself, not a benchmark.
Read live from the database at build time · data as of Aug 24, 2026
How this is safe to publish
The numbers above come from my real task manager — every row in it has a title, notes, and people attached. None of that reaches this page. A dbt layer publishesallow-list views over the private tables: a column is invisible to the public until a model explicitly selects and reduces it to an aggregate. The only text the views emit is the handler tag, agent or human.
The leak gate, verbatim
Three checks, tightest first. Any row returned fails the build — and a failed build never publishes.
case
when p.value is null or not (p.value = any(p.allowed)) then 'not-in-allow-list'
when p.value ~* '[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}' then 'email-pattern'
when p.value ~ '(\+?\d[\s.-]?){7,}' then 'phone-pattern'
when p.value ~ '\d{3}-\d{2}-\d{4}' then 'ssn-pattern'
when lower(trim(p.value)) in (select pii from oracle) then 'matches-contact'
end as reasonLast dbt build: 27/27 gates green · leak gate PASS · Jul 22, 2026