Manual review minutes
Manual review minutes is the human time a model leaves behind: the cases it flags or cannot resolve, multiplied by how long each one takes.
\[ \text{review minutes} = \text{cases sent to review} \times \text{average minutes per case} \]
It measures workload, but staffing and threshold decisions also depend on arrival timing, usable capacity, review quality, and the consequences of unreviewed cases.
Expected workload and staffing variability
With a finite mean, count times mean gives expected total review time. Right skew affects the variability and the staffing buffer, especially for small pools; it does not invalidate the expectation.
For example, 2,000 cases with an expected handling time of three minutes imply 6,000 reviewer-minutes, or 100 reviewer-hours. Count active human work consistently: investigation, documentation, escalation, and repeat review may all contribute. Elapsed time from case creation to closure also includes waiting and is not the same measure. If two people work on one case, their labor minutes add even when they work simultaneously.
Use an average appropriate to the cases sent for review. Changing a model threshold can change the mix of easy and difficult cases, so a fixed three-minute average may no longer apply. For a fixed count, summing case-specific expected times gives expected total workload; independence is not required for that expectation. Independence does matter for variability. When a shared incident produces many difficult cases at once, a model of independent handling times can understate peaks.
Estimate the distribution of total work over the planning interval, along with arrival patterns and existing backlog. A per-case 95th percentile multiplied by case count is not generally the 95th percentile of the total. Historical replay or a queue simulation can help when the assumed arrivals, routing, and service times resemble the intended operation.
Total minutes divided by minutes per person is a queue at full utilization
Dividing expected work by usable reviewer time gives a workload-equivalent staffing amount, not a guarantee about waiting. For example, 6,000 daily minutes divided by 300 usable minutes per person gives 20 reviewer-day equivalents before accounting for the timing of demand, skill constraints, or a target wait. In a queue with variable arrivals and service times, capacity equal to average incoming work leaves no steady-state recovery margin.
The following NumPy example isolates that queueing effect. Cases arrive as a Poisson process, service times are independent exponential draws averaging three minutes, and eight interchangeable reviewers serve one first-come queue. Utilization ρ is the arrival rate divided by total service capacity, 8/3 cases per minute. The code assigns each arrival to the next available reviewer and records waiting before service; it does not include handling time in the wait. The first 20,000 observations are discarded to reduce the initial empty-queue effect. The analytical column is the corresponding M/M/8 steady-state mean, not its 95th percentile.
import numpy as np
from math import factorial
rng = np.random.default_rng(6060)
service_minutes = 3.0
mu = 1.0 / service_minutes
def simulate(arrivals_per_min, reviewers, n=120000):
lam = arrivals_per_min
gaps = rng.exponential(1.0 / lam, n)
arrive = np.cumsum(gaps)
work = rng.exponential(service_minutes, n)
free = np.zeros(reviewers)
wait = np.empty(n)
for i in range(n):
j = int(np.argmin(free))
start = max(arrive[i], free[j])
wait[i] = start - arrive[i]
free[j] = start + work[i]
return wait
reviewers = 8
capacity = reviewers * mu
print("Eight reviewers, %.0f minutes a case, so the team can clear %.2f cases"
% (service_minutes, capacity))
print("a minute. Cases arrive at random.")
print()
print("%12s %12s %14s %14s %14s"
% ("arrivals/min", "utilization", "mean wait", "p95 wait", "theory M/M/8"))
for rho in (0.50, 0.70, 0.85, 0.92, 0.97):
lam = capacity * rho
w = simulate(lam, reviewers)[20000:]
offered = lam / mu
tail = offered ** reviewers / (factorial(reviewers) * (1 - rho))
p_wait = tail / (sum(offered ** k / factorial(k) for k in range(reviewers)) + tail)
theory_wait = p_wait / (capacity - lam)
print("%12.3f %11.0f%% %13.1f %14.1f %14.1f"
% (lam, rho * 100, w.mean(), np.quantile(w, 0.95), theory_wait))
print()
# Eight reviewers, 3 minutes a case, so the team can clear 2.67 cases
# a minute. Cases arrive at random.
#
# arrivals/min utilization mean wait p95 wait theory M/M/8
# 1.333 50% 0.0 0.1 0.0
# 1.867 70% 0.3 1.9 0.3
# 2.267 85% 1.4 6.0 1.4
# 2.453 92% 3.7 13.2 3.5
# 2.587 97% 10.8 33.9 11.3
In this M/M/8 simulation, Poisson arrivals and independent exponential service times produce a mean wait of about 1.4 minutes at 85% utilization and 10.8 at 97%, roughly 7.7 times as long for 14% more work. Consistent with the M/M/c model described in MIT’s queueing notes, the Erlang C column gives the matching steady-state queueing formula. Its expected wait diverges as utilization approaches one; a finite simulation has finite observed waits. Little’s law, L = λW, relates averages but does not by itself imply this nonlinear load response.
This stationary stochastic model has no finite steady-state mean wait at utilization one. That does not mean every finite or perfectly scheduled workload must fail at full utilization. For an actual review team, specify the response target and assess arrivals by time of day, staffing availability, case duration, and routing. A mean wait alone does not establish that most cases meet a deadline, and this simplified model omits breaks, priorities, and specialist queues.
Fewer minutes is not better
Reducing review volume can save labor while increasing missed harm. In an illustrative comparison, policy A sends 100 cases at three minutes each and policy B sends 60 cases at four minutes each. Total work falls from 300 to 240 minutes, saving 60 minutes rather than the 120 implied by holding handling time fixed. If labor costs 0.75 per minute, the saving is 45. If the changed policy also causes two additional missed cases costing 100 each, its net cost rises by 155 before other effects. These values are assumptions for the example, not estimates from a trained model.
A useful comparison includes review cost, mistakes made by reviewers, missed-case losses, customer friction, and delay. Do not assume review detects every harmful case or can reverse every loss. Estimate the changed policy’s performance on representative evidence, using data separate from policy selection where possible. Labels observed only for reviewed cases can make the comparison biased unless the unreviewed population is also assessed appropriately.
The objective is a decision about service and harm under capacity constraints. Track review minutes alongside completion time, backlog age, review accuracy, and relevant outcomes. Lower minutes can represent successful automation, faster handling, or simply less work inspected; the number alone does not distinguish them.
Converting the answer into people is the last step, and FTE is the unit that conversion usually uses.
References
- MIT 1.041, Queueing Models (2026): Little’s law and M/M/c
- scikit-learn: LogisticRegression
- Numerical scenarios, chosen rates and simulations in this entry are illustrative calculations by the author, not measurements reported by these sources.
Discover more from Insightful Data Lab
Subscribe to get the latest posts sent to your email.
