HR Handbook For Operators 20 min read Updated May 2026

AI Agent Performance Reviews

Humans get 30/60/90 reviews. AI workers should too. The metrics are different — success rate, cost-per-task, time-to-completion, escalation rate — but the discipline is the same: data, comparison, decision.

This is the framework for the monthly 1:1 with your AI workforce. Including the "should we switch from Claude to GPT-5?" decision, the "should we retire this agent and try a different harness?" decision, the "how do I prove ROI to my CFO?" framing, and the per-role benchmarks operators we work with consistently see.

Pair this with Supervising AI Workers (daily/weekly cadence) and When AI Agents Fail (incident handling). Performance reviews are the trend-tracking layer above both.

Quick Answer

Track 4 metrics per agent: success rate (% completed without escalation), cost-per-task (compute + model), time-to-completion (start to result), escalation rate (% kicked back to a human). Review monthly during the first 90 days, then quarterly. A/B test models on the same task to find the cost/quality sweet spot. Retire agents whose success rate falls below 80% after 3 rounds of CLAUDE.md improvement, or whose cost-per-task exceeds the human alternative. Communicate ROI to your CFO as "humans now manage 5-15 AI workers each" — not "AI replaced humans."

Why review AI workers at all?

Three reasons:

  1. Cost-vs-value drift. A model upgrade costs 30% more. Was the quality bump worth it? Without metrics, you can't tell. The agent that was great in March may be over-spending in June because the model provider's pricing changed or the prompt grew without you noticing.
  2. Model A/B. Claude Sonnet 4.6 vs Opus 4.7 vs GPT-5 vs Gemini 2.5 — they're priced differently and good at different things. Run them on the same task and let data pick. Don't pick by Twitter excitement.
  3. Retirement decision. Some agents stop being worth their cost. Some get superseded by better harnesses. Some were the right answer in v1 and the wrong answer in v3 of your product. Reviewing surfaces this; not reviewing means dead agents linger and burn budget.

A fourth reason that grew in 2026 as fleets scaled past 20 agents: budget governance. CFOs and finance leaders started asking "show me the AI workforce monthly review" the way they ask for any other line-item review. The companies that have a structured review framework breeze through these conversations. The companies that don't get budget cuts they could have argued against.

The four metrics that matter

You'll see operators track 12 metrics. Most don't matter. Four do:

1. Success rate

Of N runs, how many completed without human intervention or downstream rejection? Healthy: 90-98% for well-defined tasks. Below 85%: the CLAUDE.md needs work. Above 99%: suspicious — verify the agent isn't pushing through ambiguity it should escalate.

How it's calculated: the platform's audit log marks each run as completed, escalated, or failed. Success rate = completed / total. Escalations and failures both count against success.

Common pitfall: defining success too loosely. "The agent posted a Slack message at the end" isn't success — the message could be reporting a failure. Define success as completed AND downstream-validated (the invoice posted to NetSuite without rejection; the test suite passed; the customer responded positively).

2. Cost-per-task

Compute (sandbox time) + model API cost, per completed task. Calculated automatically by the platform; surfaced in the dashboard. Compare to:

How it's calculated: sum of sandbox-runtime cost (per second of compute) + model API cost (input tokens × per-token + output tokens × per-token), divided by completed tasks. Platform exposes this per agent and rolls up by fleet.

Common pitfall: mixing up "cost-per-task-completed" with "cost-per-task-attempted". A flaky agent with 70% success rate and $0.30/attempt is actually $0.43 per completed task. Track the right one.

3. Time-to-completion

Wall-clock from event-arrived to result-posted. Useful because:

How it's calculated: wall-clock between the trigger event and the final post / write. Includes wake time (if sandbox was idle), processing time, downstream calls, and result-posting time. Platform exposes p50, p95, p99 — track all three.

Common pitfall: tracking only p50. p95 catches outliers that p50 hides. An agent at p50 of 14 seconds and p99 of 8 minutes has a tail problem; the p50 alone wouldn't show it.

4. Escalation rate

% of runs the agent stopped on and asked for human input. Healthy: 1-5%. Zero is suspicious (the agent isn't asking when it should). 10%+ is too noisy (CLAUDE.md needs more guidance, or the task isn't agent-shaped at all).

How it's calculated: count of runs that ended with an explicit "escalated" status (vs "completed" or "failed"). Different from failures: an escalation is the agent doing the right thing (knowing it doesn't know) rather than the wrong thing (pushing through and getting it wrong).

Common pitfall: conflating escalation rate with failure rate. An agent that escalates 5% of runs and completes 95% has a 95% success rate AND a 5% escalation rate — both are healthy. The 5% escalations don't reduce the success rate.

Reading the metrics: what's signal vs noise

Not every metric movement is meaningful. Calibrate your sensitivity:

MovementLikely causeAction
Success rate ±2% week over weekNormal varianceWatch; don't intervene
Success rate down 5%+ in 7 daysReal drift; downstream change; model regressionInvestigate immediately
Cost-per-task up 50%+Loop or larger context windowCheck audit log for runaway tasks
Time-to-completion p99 doubledDownstream system slow; or agent stuckCheck downstream health first
Escalation rate to zeroAgent stopped asking; CLAUDE.md tone too aggressiveDrop back to live-watching; recalibrate
Escalation rate doubledNew work pattern the CLAUDE.md doesn't coverRead recent escalations; update CLAUDE.md
All four metrics flat for 3+ monthsSteady state — agent is doing its jobDon't over-tune; review quarterly instead of monthly
Cost up but success up tooYou moved to a more capable modelCompute the cost-per-successful-task; if it's better, fine
Multiple agents fail in same windowDownstream incidentDon't blame the agents; investigate downstream

Building the review dashboard

The platform's audit log feeds the metrics view automatically. The dashboard shows, per agent:

For larger fleets, sortable by any column — the agents that need attention bubble to the top. The "needs attention" view shows agents with metric anomalies (success down, cost up, escalation rate at zero, etc.).

Three dashboard views you'll use

ViewPurposeHow often
Per-agent detailMonthly review of one agentMonthly during first 90 days; then quarterly
Cohort comparison"Why is my legal agent at 88% but my finance agent at 96%?"Quarterly
Fleet-wide rollup"How much is the AI workforce costing? How many hours are we saving?"Monthly for the leadership update

A/B testing models on the same task

The platform's model layer lets you swap which underlying model an agent uses without changing the CLAUDE.md or tools. Run the same task on two configurations and compare:

ConfigModelCost/taskSuccess rateTime-to-completionVerdict
A (control)Claude Sonnet 4.6$0.8594%14 secBaseline
BClaude Opus 4.7$2.4097%22 sec+3% quality, 2.8× cost — only worth it for high-stakes tasks
CGPT-5$1.2092%11 sec-2% quality, 1.4× cost — not the win
DGemini 2.5 Pro$0.5589%12 sec-5% quality, 0.65× cost — only for cost-sensitive bulk work
EClaude Haiku 4.5$0.1883%6 sec-11% quality, 0.21× cost — fast tier for low-stakes triage
FClaude Sonnet 4.6 + reasoning$1.4096%28 sec+2% quality, 1.6× cost — borderline; check if specific task class needs it

The right answer is rarely "the best model." It's "the cheapest model that hits your quality bar." For most knowledge work, that's the mid-tier (Sonnet, GPT-5 standard, Gemini Pro). Reach for the top tier (Opus, GPT-5 Reasoning) only for the high-stakes 5%.

Tiered routing: model per task class

For agents that do triage-then-action, you can tier the work: use Haiku for the first pass (cheap, fast), promote to Sonnet only for items that pass triage, escalate to Opus only for items the Sonnet tier flagged. The cost math compounds:

python — pseudocode for tiered routing
def route_task(task):
    # Tier 1: quick triage with Haiku
    triage = call_model("claude-haiku-4-5", "Is this routine or complex? " + task)
    if triage.is_routine:
        return call_model("claude-haiku-4-5", task)   # cheap path

    # Tier 2: real work with Sonnet
    result = call_model("claude-sonnet-4-6", task)
    if result.confidence >= 0.9:
        return result

    # Tier 3: tough cases with Opus
    return call_model("claude-opus-4-7", task)

Real cost numbers from a tiered customer-support deployment:

Tier% of volumeCost/runWeighted cost
1 (Haiku — routine)72%$0.04$0.029
2 (Sonnet — real work)23%$0.20$0.046
3 (Opus — tough cases)5%$1.10$0.055
Blended100%$0.13

vs flat-Sonnet at $0.20/run: tiered is 35% cheaper at the same overall quality. Worth the engineering for high-volume agents.

Sample size for A/B tests

Don't conclude from 20 runs. Statistical-significance ranges:

Effect size you want to detectRuns per arm
Big (10%+ difference in success rate)~100 per arm
Medium (3-5%)~500 per arm
Small (1-2%)2,000+ per arm
Tiny (under 1%)10,000+ per arm — usually not worth chasing

For low-volume agents (a paralegal doing 5 NDAs/day), the platform's A/B-test tool runs both configs in parallel, accumulating samples until significance threshold; then declares a winner.

A/B testing prompts (the CLAUDE.md A/B)

Same shape as model A/B, different variable. Run two CLAUDE.md versions on the same task fleet and compare:

Allocate 50/50 of the next 100 runs across A and B. Compare the four metrics. Ship the winner. Discard the loser.

Most prompt A/Bs are about reducing escalation rate, not improving success rate. "If the invoice is ambiguous, prefer to flag rather than guess" reduces 'wrong outputs' faster than it improves the success rate of clear-cut cases.

Real prompt A/B examples

ChangeHypothesisResult
Add "verify each citation against the database before including"Reduces hallucinated citationsHallucination rate dropped from 4% to 0.3%; latency up 8%
Change escalation threshold from ">$10K" to ">$5K"Fewer expensive mistakes; higher escalation rate (acceptable)Escalation rate up from 3% to 7%; mistakes-on-large-invoices dropped
Add 3 worked examples of the right output formatReduces format mistakesFormat errors down 70%; minor cost increase from longer context
Add "always retry portal logins twice before escalating"Fewer noisy escalations from transient errorsEscalation rate down 18%; success rate up 2%

Cohort comparison: same task, different agents

If multiple agents do the same workflow (e.g. you have 3 AI paralegals across 3 partners), compare them:

AgentOwnerSuccess rateCost/taskEscalationNotes
nina-litigationPartner A96%$1.203%Top performer
peter-corporatePartner B91%$1.457%OK; CLAUDE.md is missing some patterns
aida-real-estatePartner C88%$1.809%Below bar; needs investigation

Why does Partner C's agent perform worse? Three possibilities:

  1. Real-estate work is genuinely harder than litigation. Some workflows are more agent-shaped than others.
  2. Partner C's CLAUDE.md is less specific. Compare the docs side by side; copy what's working in A and B.
  3. Partner C is assigning more ambiguous tasks. The escalation rate hint at this.

Cohort comparison turns "is my agent good?" into "is my agent good compared to peers?" — a much sharper question.

Cross-fleet cohort comparison

For larger orgs with the same role across multiple departments (e.g. a Finance AP-clerk and an Operations AP-clerk), cohort comparison surfaces:

The 30-day review template

Run this monthly per agent during the first 90 days; quarterly afterward. Takes 15-30 minutes:

1

Pull the metrics dashboard

Last 30 days. Note the four metrics. Compare to the previous 30 days. Note any anomalies — sudden movements, sustained trends.

2

Spot-check 5 random successful runs

Read the audit log. Are the outputs actually good, or is the agent passing self-checks while producing low-quality work? Spot-checking catches "looks fine to the metrics, isn't actually fine."

Pick the random sample without bias. Don't pick "the most recent" or "the highest cost" — those have selection effects. The platform's "random sample" tool gives you 5 unbiased picks.

3

Read the failure & escalation log

Are failures clustered (same root cause) or scattered? Clusters → CLAUDE.md update. Scatter → individual fixes or accept as background noise.

For escalations, are humans answering them in time? If escalations are sitting in the queue for 2+ days, the escalation channel is wrong (humans don't see it) or the supervisor is overloaded.

4

Calculate hours-saved equivalent

Successful runs × time-it-would-take-a-human = hours saved. Compare to the cost. ROI usually comes out 20-100×.

Be honest about the human-time estimate. "How long does this task take you?" Ask the human; don't guess. The story you'll tell your CFO depends on this number being defensible.

5

Get substance feedback (for work you don't fully evaluate)

For agents doing legal / medical / finance / engineering work where the substance requires domain expertise: ask a senior in-domain human to review 3-5 runs. Their feedback complements your process review.

A common pattern: operator does process review monthly; senior reviewer does substance review monthly with a 5-run sample; together they catch both kinds of issues.

6

Decide: keep, expand, retire, swap

One of four:

  • Keep — metrics are healthy, ROI is positive, no major changes.
  • Expand scope — agent is exceeding bar; give it adjacent work.
  • Retire — success rate too low, cost too high, or task isn't agent-shaped. Stop using.
  • Swap model or harness — try a different underlying model or different harness (Claude Code → Devin, etc.) and re-test next month.
7

Document the decision

One paragraph in the agent's CLAUDE.md history (or a separate review log). What you saw; what you decided; what changed. Future-you (or a future operator) reading this in 6 months should understand the trajectory.

When to retire an AI agent

Hard signals to retire:

"Retire" doesn't mean "fire forever." It means: pause this configuration, write down what didn't work, try a different harness or different scope. Sometimes a retired agent comes back successfully on a narrower scope.

The retire-and-re-deploy pattern

  1. Pause the current agent. Audit log captures everything; sandbox stops.
  2. Document what didn't work. CLAUDE.md history; specific failure patterns; what was tried.
  3. Decide the next-best option:
    • Different harness (Claude Code → Devin if more autonomy is needed; Devin → Claude Code if less)
    • Different model (Sonnet → Opus if reasoning was the bottleneck)
    • Narrower scope (instead of "all NDAs," just "mutual NDAs over $X")
    • Hand back to a human (some work is genuinely human-only)
  4. Onboard the replacement with the same playbook (see Onboarding an AI Employee) — but skip steps the predecessor's history makes obvious.
  5. Run side-by-side for a week if possible (replacement on shadow data; predecessor on production). Verify replacement is actually better, not just different.
  6. Switch over; archive predecessor's CLAUDE.md and audit log per compliance retention.

The quarterly workforce review

Once a quarter, zoom out from per-agent to fleet-level. This is the meeting you have with your CFO / VP Eng / leadership team.

The output is a one-page report. Forward it to the CFO and the leadership team. The numbers are dramatic; the leverage is the story.

The one-page quarterly report template

markdown — quarterly AI workforce report
# AI Workforce Quarterly Review — Q2 2026

## Headline
- 47 AI workers across 7 departments
- Total compute + model cost: $4,820 / quarter
- Hours saved (vs human alternative): 2,340 hours / quarter
- Headcount equivalent: ~6 FTE-equivalents
- Cost ratio: 1 AI dollar saves $14 of human time

## What changed
- Added: 3 paralegals (Legal); 2 customer-support tier-1 (Support)
- Retired: 1 sales-research agent (escalation rate 22%; not agent-shaped)
- Swapped: AP fleet moved Sonnet → Sonnet+reasoning; +12% success, +28% cost

## By department
| Dept | Agents | Cost | Hours saved | ROI |
| ---- | ------ | ---- | ----------- | --- |
| Finance | 8 | $620 | 480 | 38× |
| Legal | 12 | $1,840 | 720 | 17× |
| Support | 9 | $480 | 540 | 49× |
| Marketing | 6 | $720 | 320 | 19× |
| Eng | 7 | $560 | 180 | 14× |
| HR | 3 | $200 | 80 | 17× |
| Ops | 2 | $400 | 20 | 2.5× ⚠️ low

## Investment recommendations next quarter - Expand Finance fleet (highest ROI; bookkeeper backlog growing) - Investigate Ops fleet ROI (2.5× is low; either work is wrong-shaped or CLAUDE.md needs work) - Retire the legacy "social-media-monitor" agent (volume dropped 80% YoY) ## Compliance posture - All audit logs at 7-year retention (SOC2 + financial) - Per-agent encryption layers documented - Quarterly access-review completed for all 47 agents

Ship one of these per quarter. Forward to the CFO and the leadership team. Don't make them ask for it.

Industry benchmarks (anonymized)

Steady-state ranges from operators we work with at month 4+ of agent operation:

RoleHealthy success rateHealthy cost/taskHealthy escalation rateHealthy time-to-completion p95
AP clerk (invoice processing)94-98%$0.05-0.152-4%2-5 min
Paralegal (NDA review)88-94%$0.40-0.803-7%3-8 min
Research analyst (web research)90-96%$0.50-1.502-5%5-15 min
QA tester (browser flows)92-97%$0.10-0.251-3%2-6 min
Code reviewer85-92%$0.05-0.155-10%2-5 min
Customer-support tier-170-85% complete$0.02-0.0815-30%30-90 sec
Practice manager (HIPAA)90-95%$0.20-0.603-6%1-4 min
Coding agent (PR work)80-90%$0.50-2.005-12%5-20 min
Always-on monitoring99%+$0.001-0.01variesn/a

If your agent is well below the 25th percentile of its role's range, the playbook for getting to the 50th is usually CLAUDE.md tightening. If it's above the 75th, you're operating well — focus on scaling rather than tuning.

Common review mistakes

1. Reviewing too often

Operators new to AI workforce do weekly reviews because they're anxious. Weekly is too often after the first 90 days; you're picking up noise instead of signal. Drop to monthly after first 90 days, quarterly after first year.

2. Reviewing one agent in isolation

"Is this agent good?" is a worse question than "is this agent good compared to peers in the same role?" Always do cohort comparison if you have multiple agents in the same role.

3. Optimizing for one metric

Improving success rate by tightening escalation rules increases escalation rate, which decreases success rate. Tracking only one metric leads to gaming. The four metrics together are the framework.

4. Not setting a "what done looks like" before A/B testing

"Test if Opus is better than Sonnet" with no specific success criterion = an A/B that never concludes. Pick the criterion (success rate up 3%; cost-per-task down 20%) before you start; declare based on the data hitting the criterion.

5. Treating model upgrade as automatically good

"GPT-5.5 is out, let's upgrade." For some tasks, yes. For most, run an A/B for 2 weeks and let the data decide. Free upgrades sometimes regress on specific task classes.

6. Skipping the substance review

Process metrics are easy. Substance review is harder. The agents that look good on process but ship subtly-wrong work are the ones you don't want. Make substance review a quarterly habit even if metrics look fine.

7. Forgetting to document the decision

3 quarters from now, no one remembers why you swapped from Sonnet to Opus. Write it down — one paragraph in the CLAUDE.md history. Audit-log-as-decision-log.

Communicating ROI to the CFO

The conversation goes one of three ways depending on framing:

FramingCFO reaction
"AI replaces human workers"Defensive, hostile, "but we need humans" — bad outcome
"AI saves us $X by automating tasks"Curious, asks for proof, demands justification
"Each of our humans now manages 5-15 AI workers, doing higher-leverage work"Engaged, sees the strategic narrative, asks how to scale

The third framing wins. The math is identical; the story is dramatically different. Use it.

Concrete numbers that work in CFO conversations:

Numbers like these turn the AI workforce from a cost line into a capability narrative. CFOs care about the latter.

Frequently asked questions

How often should I run a performance review?

Per-agent: monthly during the first 90 days, then quarterly. Per-fleet: quarterly. Per-model-or-prompt-A/B: ad-hoc when you're considering a change.

Do I review the model or the agent?

The agent. The model is a component, like the type of laptop a human uses. The agent (job description + tools + model + workflow) is the unit of work.

What if my agent's metrics are good but the team complains?

Spot-check 10 runs and ask the complainers to sit with you. Often the metric is "completed without escalation" but the team's complaint is "the output isn't quite right and I'm fixing it silently." If complaints exist, the metrics are missing a dimension — usually quality. Add a sampled quality review (rate every 20th run).

Can I compare AI agents to human employees in performance reviews?

Yes, on output and cost — not on growth potential. Humans get raises and stretch goals because they grow. AI agents stay at their current capability (the model improves on a separate cycle). Don't blend the review formats.

What's the right sample size for an A/B test?

Big effect (10%+): ~100 per arm. Medium (3-5%): ~500 per arm. Small (1-2%): 2,000+ per arm. Tiny (under 1%): usually not worth chasing.

How do I review an agent doing work I don't fully understand?

Split into process and substance. Process metrics you can review. Substance review needs a senior in-domain human. Schedule monthly substance review with a 5-run sample.

When should I switch from one model to another?

When the data says so, not when the news says so. New model launches don't automatically warrant a switch. A/B for 2 weeks; switch if meaningfully better at acceptable cost.

How do I communicate the AI workforce ROI to my CFO?

Three numbers per fleet: total fleet cost, total hours saved, headcount-equivalent ratio. Frame as "humans now manage 5-15 AI workers" not "AI replaced humans."

What happens if the model degrades after a model update?

The platform supports model version pinning. Pin to a specific version for production agents; upgrade deliberately, not automatically. A/B for a week before switching the full fleet.

Should I review every agent the same way?

No. Mission-critical: monthly with substance spot-checks. High-impact internal: quarterly. Low-impact internal: semi-annual. Always-on monitoring: only on metric anomalies.

What's the right number of agents per supervisor?

5-15 at sustainable cadence. 5 if high-touch (paralegal, code reviewer). 15 if low-touch (AP clerks, monitoring). Past 20 per supervisor, supervision quality drops.

Can I see how my agents compare to industry benchmarks?

Yes, anonymized. The platform publishes quarterly benchmarks by role showing 25th/50th/75th percentile.

What's the difference between performance review and supervision?

Supervision is daily/weekly — what's happening now. Performance review is monthly/quarterly — how is the agent doing over time. Both are needed.

How do I retire an agent without losing the work?

Three options: (1) replace with a different harness or model — same role, different tools, run side-by-side for a week. (2) re-scope to a narrower role and retire the broader version. (3) hand back to a human if the AI version genuinely doesn't work.

What if my agents' metrics are flat — neither improving nor degrading?

Flat is healthy at steady state. After the first 3 months, you should see relatively flat metrics — that's the agent operating predictably. Don't over-tune.

What's next

Run your first performance review

The dashboard's metrics view is per-agent. Pull the 30-day report and start.

Open Dashboard