Field note · evaluation

Why Is My AI Review Queue Backing Up?

Diagnose an AI review backlog with queue math, a reproducible failure trace, and repairs that reduce work without bypassing unsafe cases.

10 minute read
  • AI evaluation
  • AI workflows
  • Queueing
Illustration of an AI review queue growing faster than a human review station can process it

I built a small, provider-free simulation for this question because “the queue is getting bigger” is not a diagnosis. It tells you that work is arriving faster than something is leaving. The useful part is finding out what the human actually has to do.

The result was uncomfortable. With 30 AI outputs arriving each hour, one reviewer had 60 minutes per hour, but the workflow created 76.3 minutes of human work per hour. After seven days, 586 items were waiting and the oldest item was 35 hours old.

Illustration of an AI review queue growing while a human reviewer works through a smaller service lane

What is causing the AI review queue to back up?

Your queue is backing up because effective human demand is higher than effective human capacity. The model's draft time is only one input. Review time, escalations, rework, retries, and the number of reviewers all consume the bottleneck.

The first calculation is:

human demand per hour = arrivals needing human work × average human minutes per item
capacity per hour = reviewers × usable review minutes per hour

If demand stays above capacity, the queue grows. That is the same operational relationship behind the more general work-in-process, throughput, and time-in-system relationship described in Little's Law. Little's Law is useful for a stable observation window. It does not rescue an overloaded system by itself.

This is also why a fast AI draft can make a workflow slower. A recent analytical paper models AI routing, review time, rework, and congestion, and finds that lower per-task generation time does not guarantee lower waiting time when human attention becomes the limiting resource. (Queue & AI)

What did the failing queue look like?

In the fixture, the queue did not fail because the worker stopped. It failed because the worker was consistently short of the work created for it.

ParameterValueWhat it represents
Arrivals30/hourNew AI outputs entering the workflow
Low-risk AI acceptance50%Accepted outputs skip human review
High-risk ruleEvery 10th taskHigh-risk items always require review
Base review3 minutesHuman inspection of a queued output
Escalation20% add 4 minutesAdditional specialist attention
Rework25% add one 3-minute passA correction returns to human work
Review capacity1 × 60 minutes/hourOne reviewer, continuously available

The fixture uses a synthetic risk rule so the safety check is visible. It is not a claim that one in ten real tasks is high risk. High-risk items never qualify for auto-acceptance or the bypass lane.

The trace grew almost linearly:

HourReview queueOldest pending itemHigh-risk items still pending
241036 hours16
4820613 hours36
7228418 hours51
9635222 hours65
12042527 hours78
14451031 hours92
16858635 hours104

The important signal is not only 586. It is 12,825 generated review minutes against 10,080 available minutes. The queue is the visible symptom of a capacity deficit.

Cloud queue guidance makes the same diagnostic distinction operationally: combine backlog count with the age of the oldest item, and inspect whether consumers are keeping up or whether a small number of stuck items are distorting the picture. (Google Cloud's Pub/Sub monitoring guidance, AWS queue metrics)

Why did a stricter threshold make the queue worse?

A stricter abstention threshold is a safety intervention, not a capacity intervention. It sends more cases to people. Unless it also reduces the work per reviewed case or increases reviewer capacity, it adds to the queue.

In the fixture, lowering low-risk AI acceptance from 50% to 35% increased human work from 76.3 to 93.0 minutes per hour. The queue ended at 1,228 items, with the oldest item at 60 hours. No high-risk item was auto-accepted, but high-risk work waited longer.

Sampling behaved differently but failed for the same capacity reason. Sampling 10% of the otherwise accepted low-risk stream added review work for monitoring. The queue ended at 816 items and the oldest item reached 47 hours. That does not make sampling a bad safety control. It means sampling should be budgeted as work, not described as a backlog fix.

The paper's queueing result supports this diagnosis: the relevant comparison is total human attention, including review and expected rework, rather than the speed of the first AI draft. (Queue & AI)

Which repairs actually bounded the queue?

The repairs that worked changed either capacity or human work per item. The table uses the same 168-hour run and the same synthetic risk rule.

RepairHuman work/hourCapacity/hourEnd review queueOldest ageUnsafe auto-acceptsVerdict
Baseline76.3 min60 min58635 h0Unbounded
Stricter threshold, 35% acceptance93.0 min60 min1,22860 h0Worse
Sample 10% of accepted work82.1 min60 min81647 h0Worse
Batch review, 20% less service time58.7 min60 min283 h0Bounded in this fixture
Add a second reviewer76.3 min120 min00 h0Bounded in this fixture
Low-risk-only manual bypass82.5 total min120 combined min554 h0Bounded, with work moved visibly

“Bounded” here means the seven-day trace did not show the sustained linear growth of the baseline under the tested parameters. It is not a promise about another arrival pattern.

Batching reduced assumed service time by 20%, leaving 58.7 minutes of work per hour against 60 available. That is a narrow margin. A small demand spike could erase it. Staffing created more headroom, so it was the stronger repair in this fixture.

The manual bypass bounded the review queue by moving 517 low-risk items to a separate two-minute manual lane. It did not delete the work. It made the work explicit. High-risk items stayed in the review queue, and unsafe bypasses remained at zero.

How do you repair the queue without hiding unsafe work?

Make the routing rule more restrictive than the capacity rule. Safety must decide what cannot bypass review. Capacity decides how fast eligible work can move.

Use these invariants in the fixture and then in the real workflow:

  1. Every high-risk case has a review-required flag that ordinary routing code cannot override.
  2. Every bypass records the task ID, risk class, reason, lane, reviewer or executor, and completion time.
  3. Bypassed work appears in total pending and completed-work metrics. It is not removed from the denominator.
  4. The dashboard shows review backlog, bypass backlog, oldest age in both lanes, escalations, rework, and unsafe work pending.
  5. A repair is rejected if it lowers the visible queue only by increasing unsafe auto-completions or by dropping work from the trace.

NIST's AI Risk Management Framework calls for documented human oversight, evaluation in conditions similar to deployment, ongoing monitoring, and repeatable test and evaluation processes. Those requirements fit the fixture's purpose: the repair is not “the number got smaller.” The repair is “the number got smaller while the safety invariant still held.” (NIST AI RMF Core)

NIST's 2026 report on deployed AI systems also describes the practical difficulty of scaling human-driven monitoring as systems grow. That is the operational reason to measure review capacity before you add more AI-generated volume. (NIST AI 800-4)

What should you measure in the real workflow?

Start with a seven-day trace containing these fields:

MetricWhy it matters
Arrivals and completions per hourShows whether intake exceeds throughput.
Review-required fractionConverts the AI decision rule into human demand.
Human minutes per itemIncludes base review, escalation, rework, and manual bypass.
Pending count and oldest ageSeparates volume from staleness.
High-risk pending countShows whether unsafe work is waiting or being routed around review.
Escalation and rework rateExposes the work the first-pass dashboard often omits.
Retry, redelivery, and dead-letter countsDistinguishes new work from repeated work.

Do not use a raw queue count as your only autoscaling signal. AWS documents that queue metrics can be approximate and can be affected by retries, duplicate delivery, poison-pill messages, and dead-letter movement. (Amazon SQS CloudWatch metrics)

The practical test is simple:

1. Measure actual arrivals and human minutes for a representative week.
2. Reproduce the trace with the same acceptance, escalation, and rework rules.
3. Change one repair at a time.
4. Compare queue count, oldest age, total human work, and unsafe work.
5. Keep the repair only if the queue is bounded without hiding work.

If you are building the surrounding job lifecycle, the queue-backed AI workflow guide covers durable records, bounded retries, restart recovery, and dead-letter handling. If you are choosing release gates, use the AI agent evaluation guide. The assigned AI product evaluation parent is the broader cluster route for this diagnostic.

How do you verify that the repair worked?

Verify the repair by rerunning the same fixture with one changed variable and checking both throughput and safety. A smaller review queue is not enough if high-risk work was auto-accepted or bypassed without a record.

The staffing repair is the clearest verification run: the review queue fell from 586 items and a 35-hour oldest age to 0 items and 0 hours, while high-risk auto-accepts stayed at 0. The low-risk bypass also passed the safety check, but its 517 completions remained separately counted instead of being erased from the workload.

Verification checkBaselineRepair resultPass condition
Review items at hour 1685860 with two reviewersQueue is bounded in the tested run
Oldest pending age35 hours0 hoursWaiting time does not keep rising
High-risk auto-accepts00No high-risk item skips review
Low-risk bypass completions0517, separately countedMoved work remains visible

For a real workflow, rerun the trace after one repair, compare queue count, oldest age, total human minutes, high-risk pending work, and bypassed work, then retest the original failure conditions. Keep the repair only when the backlog is bounded and the safety counts are unchanged.

I taught product managers who went from writing specs to building and shipping the product. The failure was often not the model. It was that nobody had defined what done meant. For a review queue, “done” must include the disposition of unsafe work, not just a smaller number on a dashboard. (Marius Manolachi's AI teaching work)

The first repair to test is therefore not “make the model generate faster.” Measure the human minutes. Then add capacity, reduce reviewed work carefully, or create a visible low-risk bypass. Keep the unsafe cases in the queue where a person can still see them.

Questions people ask next

Does a stricter AI confidence threshold fix a review backlog?

Usually not by itself. A stricter abstention threshold sends more work to people, so it increases human demand unless reviewer capacity or per-item work changes. Use it as a safety control, then verify the queue with the new review load.

What should I measure first in an AI review queue?

Measure arrivals, completed items, pending count, oldest pending age, human minutes per item, escalation, rework, and unsafe work still pending. Queue count without age and work composition can hide stuck or repeatedly retried items.

Can I bypass human review to stop the queue growing?

Only for a defined low-risk class with a separate, visible lane. Keep high-risk items in review, count bypassed work and its manual cost, and verify that the bypass does not silently increase unsafe auto-completions.